como explorar las instruciones call sin perderte

Iniciado por Flamer, 19 Noviembre 2011, 00:19 AM

0 Miembros y 3 Visitantes están viendo este tema.

Flamer

hola amigos tengo un problema cuando estoy analizando un crackme x hay ocasiones en que tengo que entrar a los call con f7 pero resulta que entras y adentro hay mas instruciones call y entras en ellas el problema es que acabo perdiendome y nose ni cuando salgo de uno y ni en que call boy
saludos

_Enko

Antes de hacer trace-into, pon un breackpoint luego del call.
De esa manera dejas un call marcado.

Tambien puedes usar trace-over para no entrar dentro de la rutina, ahora si entras, y luego ves otro call y entras, y asi susesivamente no se cuantas veces... es que no estas analizando el codigo  :silbar:

Saludos.

Flamer

tienes muncha razón no analizo el codigo pero es que me cuesta muncho trabajo entenderlo me pierdo entre tantos mov call add sub jb y mas instruciones que hay
si se que ase cada instrucion pero me cuesta trabajo entender que ase el codigo
nose si me entiendas
saludos

Иōҳ

Cita de: Flamer en 19 Noviembre 2011, 02:27 AM
tienes muncha razón no analizo el codigo pero es que me cuesta muncho trabajo entenderlo me pierdo entre tantos mov call add sub jb y mas instruciones que hay
si se que ase cada instrucion pero me cuesta trabajo entender que ase el codigo
nose si me entiendas
saludos

Es cuestión de practicas, yo hago trace-over para pasar por las calls, y miro los cambios de los registros, si algo que no se "entiende", ahí es dónde entro.

Es decir no es necesario que entres a TODOS los calls, pero al pasar uno con trace-over, y vez que hubo algún cambio en el proggie que es de interez, es ahí cuando entras con trace-into.

Para no perderte puedes mirar la pila o apuntar las direcciones, es cuestión de práctica, luego no te "perderas" tan rápido xD.

Igual tienes a la opción Call Stack, cómo guía (si usas olly :P), o por último puedes hacer cómo dice _Enko.

Nox
Eres adicto a la Ing. Inversa? -> www.noxsoft.net

_Enko

secundo a Nox, definitvamente traceover si no ves nada interesante en la pila, y luego si no se devuelve nada interesante, sigues adelante :)

Flamer

esque estoy analizando el crackme 3 de msck argentina y no veo donde haga las operaciones ya encontre el serial para flamer sin parchear pero me base en el resultado de thunder
para en contrar el serial es sencillo solo hay que ver la cadena de 32 caracteres que muestra y bas escogiendo el primer caracter y el segundo no. El tersero y el cuarto no y asi susesibamente hasta formar la contraseña de 16 caracteres
pero el problema es para hacer el keygen nose de donde sale la cadena de 32 caracteres 
saludos

Иōҳ

Cita de: Flamer en 19 Noviembre 2011, 18:14 PM
esque estoy analizando el crackme 3 de msck argentina y no veo donde haga las operaciones ya encontre el serial para flamer sin parchear pero me base en el resultado de thunder
para en contrar el serial es sencillo solo hay que ver la cadena de 32 caracteres que muestra y bas escogiendo el primer caracter y el segundo no. El tersero y el cuarto no y asi susesibamente hasta formar la contraseña de 16 caracteres
pero el problema es para hacer el keygen nose de donde sale la cadena de 32 caracteres  
saludos

No creo que sea un crackme para que empieces a anilizar en one!!!!, ya que Fly, redireccionó las iats a la sección dónde está la DLL MVBXXXX(como sea XD), y lo primero en reparar ahí son las referencias, para que no te pierdas demasiado rápido.

Encima es VB, yo le heché un vistaso, y las calls se me hacian conocidas, pero sin references, es una joda y peor si es VB xD.

Cómo dije lo primero es arreglar las references, para mejor comodidad y no te pierdas en los calls. Si no imagínate XD.

Nox.
Eres adicto a la Ing. Inversa? -> www.noxsoft.net

Tinkipinki

Hola a todos:
Solo una pregunta al post de Nox sobre la Call Stack
En la ventana de las Call Stack solo aparecen los datos si se tracea con F7 pero si traceas con F8 no?
Es que desconocia este tema, he hecho unas pruebas y me he quedado con esta duda.

Referente al tema de siguimiento de calls lo que suelo hacer es poner un coment o un label en la call por ejemplo call 1, si entro en otra call anidada en la call 1 le llamo call 1_1 o call 1_2  asi veo si estoy en la call padre o hija o hija de la hija, etc...eso si, acompañado de papel y lapiz e ir anotando las jerarquias mas algun comentario adicional porque si no te acabas perdiendo igual.
Luego para gestionarlas User defined label o coment.
No creo que haya aportado nada que ya no supierais, es solo una idea.

Saludos

Flamer

CitarNo creo que sea un crackme para que
empieces a anilizar en one!!!!, ya que Fly,
redireccionó las iats a la sección dónde está
la DLL MVBXXXX(como sea XD), y lo primero
en reparar ahí son las referencias, para que
no te pierdas demasiado rápido.
no enpieso analizar call por call solo analizo los que pienso que son importantes pero esos tienen otros adentro y me pierdo
ya abia echo lo que dise tinki de los comentarios y lo de enko de poner un break point y da igual nose adonde melleba el codigo y no entiendo lo que esta asiendo
bueno talbes me falta practica
pero no doy donde ase las operaciones en algun lado las debe de hacer que no
y por otro lado como redireciono la libreria de visual basic por que tengo entendido que es una dll de vb que no
y aque te refieres con referencias
y otra si no entro asiertos call nose que operaciones se realisan solo veo que cambia la pila y los registros
aber sino mee salido del tema

Иōҳ

Primero tienes que arreglar las referencias.

Para que entiendas a que me refiero debes saber el significado:
http://es.wikipedia.org/wiki/Referencia

Y creo que con un ejemplo se te aclare

mov ebx, dword ptr  [XXXXXXXX] (siendo este una dirección que coinside con alguna sección del progie)
call ebx

al reparar las referencias

mov ebx, _vbaObjSet
call ebx

Luego tienes que saber cúales son los CALLs  importantes al que debas hacer trace-into,

Ejemplo

Seguro traceando veras un
CALL dword ptr [ecx + 0A0]
CALL dword ptr [eax + 0A0]
CALL dword ptr [eax + 0A8]

etc..

El valor que retorna es la string que has ingresado, no quiere decir que sea un call que debas ingresar, para tracear por dentro, por eso es muy importante que sepas a cual hacer trace-into y a cual no.

Cómo digo y volveré a decir no es un crackme para que empieces a análizar en one. Yo sólo lo miré 1 vez, y por lo que vi muy aparte de lo que dijo Fly, es que tiene dos saltos desicivos, y que genera un MD5 con el NAME/USER (como sea xD) que ingresas.

@Tinkipinki
La subventana callstack te muestra el stack cuando estás DENTRO de un call, y cuando no estás no te lo muestra obviamente.

Creo que eso responde a tu pregunta.

en fin..

Nox.


Eres adicto a la Ing. Inversa? -> www.noxsoft.net