Título: Duda con ollydbg y asm Publicado por: shiro51 en 20 Septiembre 2013, 05:50 am Hace poco que me he metido a fondo con ollydbg lo vi hace tiempo pero no me meti de lleno, y pues ahora me meti de lleno para hookear desde asm, ya que es el lenguaje que mas me gusta, pero he tenido unas dudas que no consigo solucionar incluso buscando :S a ver si me podéis ayudar...
Aqui os dejo el codigo, lo compilo desde fasm, y debajo de el os dejo las dudas por si alguien me puede echar un cable Código: format PE GUI 4.0 Las dudas que tengo son las siguientes: 1: Jump DB 0xe9 DD 0x65467689 DB 0xc3 en esta parte no se podria hacer algo como: Jump DB 0xe9 DD Hook DB 0xc3 Ya que tengo este "cartel" o no se como llamarlo Hook: invoke AllocConsole Luego compilo y manualmente busco en el ollydbg la posicion de esta sección (hook) y la pongo en su variable correspondiente (jump) para que termine: e9(jmp) ?? ?? ?? ?? c3(retn) Pero por ejemplo si la posicion de la sección hook es: 0040307B y la meto de la manera anterior Jump DB 0xe9 DD 0x0040307B DB 0xc3 al usar invoke WriteProcessMemory, eax, [Adrr], Jump, 6, 0 me lo deja asi: http://i39.tinypic.com/160pv7a.png y si la pongo asi: Jump DB 0xe9 DB 0x00 DB 0x40 DB 0x30 DB 0x7B DB 0xc3 termina asi: http://i44.tinypic.com/1gm5jm.png Y yo ya no entiendo que narices es una columna o la otra... se suponia que era hex... pero ahora ya estoy hecho un lio AARG A ver si me podeis ayudar gracias de antemano... Título: Re: Duda con ollydbg y asm Publicado por: MCKSys Argentina en 20 Septiembre 2013, 17:21 pm Debes releer un poco el tema de las instrucciones ASM.
Los JMPs son relativos a la posición donde están ubicados. La solucion sencilla para evitar ese problema es usar PUSH + RET, pero esto ocupa un byte mas. Por ej.: Código
podrías reemplazarlo con: Código
pero, como ves, ocupa 1 byte más. Si quieres usar un JMP, tendrás que calcular la distancia del salto antes de escribirlo. Saludos! Título: Re: Duda con ollydbg y asm Publicado por: shiro51 en 20 Septiembre 2013, 19:32 pm Vale entiendo, ya lo probé y genial, funciona perfecto solo me quedaría limpiar la pila y poco más para que estuviera correcto el código ya que supongo que no si uso pop después del invoke messagebox[...] se quedaran los parámetros dentro.
No me acordaba que 'jmp' era relativo, hace bastante que no toco asm. ¿Es recomendable usar jmp calculando la distancia? o ¿es mejor usar push y ret ya que te ahorras todo eso?. Iré a mirar si encuentro como calcular la distancia relativa, ya que el otro día lo leí y ponían 'punterofuncion-inicioapi-5' y no entendí porque de esa manera... |