Buenas a todos
Basándome en una de las lecciones de
Ricardo Narvaja, descubri un buen truco para reforzar nuestro
OllyDbg. Concretamente es la lección 116 del curso nuevo de Ricardo Narvaja. En dicha lección se menciona un fichero llamado
"common.arg" en el que podremos personalizar el análisis de las funciones de un módulo. He cogido la idea y la he ampliado añadiendo las principales funciones de
Visual Basic 6.0, así como una extensa información adicional que encontré en un foro. El resultado es divertido.
Nuestro
OllyDbg 1.10 por defecto no analiza correctamente las funciones propias de
MSVBVM60.DLL, éste es el aspecto del análisis de un ejecutable típico en
VB6:
Se pueden ver las llamadas a las funciones en la mayoría de casos, y también nos muestra algunas cadenas en UNICODE y argumentos de la llamada de la API/función, pero si utilizamos el fichero
"common.arg" el resultado es MUY distinto:
Además, y haciendo referencia a la lección original de Ricardo Narvaja, podremos poner
Conditional BP en la API que queramos para poder logear y dumpear con un solo click todos los string's y argumentos.
Para crear éste fichero he tenido que generar un ejecutable que he llamado
dumper.exe con el siguiente código:
Private Sub Command1_Click()
Dim A() As String
Dim B As String
Dim C As Long
Dim D1, D2 As Integer
Dim E As Double
Dim X As Variant
Exit Sub
Command1.Enabled = False
B = "####### START DEBUGGING HERE PLEASE #######"
On Error Resume Next
A() = Split("THIS IS MY SPLIT STR", " ")
B = Join(A(), ",")
B = "strCAT1" & "strCAT2"
Open "C:\test.txt" For Output As #1
Print #1, "PRINT EXAMPLE"
Write #1, "WRITE EXAMPLE"
Close #1
MsgBox "MSG_BOX_TEXT", vbOKOnly, "MSG_BOX_CAPTION"
If "strCMP1" = "strCMP2" Then
End
End If
FileCopy "C:\test.txt", "C:\FILECOPY.TXT"
C = FileLen("C:\test.txt")
Kill "C:\test.exe"
Kill "C:\FILECOPY.TXT"
MkDir "TEST_DIR"
RmDir "TEST_DIR"
If InStr("INSTR EXAMPLE1", "INSTR EXAMPLE2") <> 0 Then DoEvents
C = Len("LEN STR")
C = LenB("LENB STR")
B = Mid("THIS IS A MID STR", 5, 2)
If "LIKE STR" Like "LIKE STR2" Then DoEvents
D1 = 10
D2 = 5 + 10
D2 = D1 + D1
D2 = 5 / 2
D2 = 5 * 2
D2 = 5 - 2
D2 = -D2
D2 = 5 Mod 2
D2 = 5 Xor 2
D2 = Not 5
D2 = 5 And 2
D2 = 5 Or 2
D2 = Sin(50)
D2 = Cos(50)
D2 = Tan(50)
D2 = Atn(50)
D2 = Exp(50)
D2 = Log(50)
X = Hex(500)
X = Oct(600)
X = Asc("Q")
X = Chr(255)
Form1.ForeColor = QBColor(3)
Form1.ForeColor = RGB(255, 200, 150)
Randomize 50
D2 = Rnd
B = InputBox("INPUTBOX_PROMPT", "INPUTBOX_TITLE", "INPUTBOX_DEFAULT")
SendKeys "SENKEYS STR"
Shell "cmd.exe", vbMaximizedFocus
For i = 1 To 10 Step 2
If i Mod 2 = 0 Then DoEvents
Next i
B = Environ("USERNAME")
B = Command$
B = Replace("MY REPLACE STR", "FIND STR", "REPLACE STR")
B = StrReverse("REVERSE STR")
Command1.Enabled = True
B = "####### STOP DEBUGGING HERE PLEASE #######"
End Sub
Os dejo a continuación más pantallazos sobre el análisis que conseguiremos con el fichero
"common.arg":
Mención especial al análisis de la función
RGB() que desglosa al detalle los 3 colores, así como la función
StrReplace().
El fichero no está completo, no he podido analizar el 100% de las funciones, así que si alguien puede aportar algo, mejorar o cambiar alguna función... estaría agradecido, ya que el trabajo es algo durillo jeje.Os dejo un ZIP con el fichero
"common.arg", hay que copiarlo en la carpeta de nuestro OllyDbg 1.10, al lado del
ollydbg.exe. En la ventana de LOG [L] aparece si se ha cargado correctamente. También os adjunto el dumper.exe que he utilizado para dumpear el análisis correcto de la librería
MSVBVM60.DLL, hay que analizar muchas funciones que me he dejado y hay otras que no he sabido como analizarlas. Agradeceré cualquier tipo de colaboración:
http://www.mediafire.com/?dk13l8lh2o9j7k8