Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: .:UND3R:. en 2 Junio 2011, 18:55 pm



Título: Duda tutorial RicardoNarvaja
Publicado por: .:UND3R:. en 2 Junio 2011, 18:55 pm
Hola a todos bueno les comento tengo una duda en el capítulo en donde se hablan de los desempaquetados
en el habla en una parte de Buscar jmp o call hacia el OEP y para realizarlo utiliza E9 para buscar JMP y E8 para buscar CALL

Mi duda puntual es ¿por qué se buscan los JMP y CALL con E9 y E8?


Gracias


Título: Re: Duda tutorial RicardoNarvaja
Publicado por: MCKSys Argentina en 2 Junio 2011, 18:59 pm
Quizas sea porque  E8 y E9 son los opcodes de los JMPs y CALLs...  :)


Título: Re: Duda tutorial RicardoNarvaja
Publicado por: [-Franko-] en 3 Junio 2011, 01:30 am
Citar
Quizas sea porque  E8 y E9 son los opcodes de los JMPs y CALLs...
Claro. Mira aqui te dejo un ejemplo de cada uno para que veas lo que son los opcodes que menciona MCKSys Argentina:

JMP:
Address   Hex dump          Command
0040100D  - E9 F4614E00     JMP 008E7206

CALL:
Address   Hex dump          Command                                  Comments
00401029    E8 72600D00     CALL 004D70A0

Saludos


Título: Re: Duda tutorial RicardoNarvaja
Publicado por: .:UND3R:. en 3 Junio 2011, 04:00 am
O: Osea OpCode no son solamente están en los programas PCode?
por qué cuando habla RicardoNarvaja sobre los programas en visualBasic en Pcode solo ahí habla de los opcode y son totalmente distintos?


Gracias


Título: Re: Duda tutorial RicardoNarvaja
Publicado por: MCKSys Argentina en 3 Junio 2011, 20:58 pm
Creo que estas confundiendo los temas.

Un programa en Visual Basic 6 (o 5) puede estar compilado de 2 formas: en codigo nativo o PCODE.

En codigo nativo vas a ver todo el codigo de la aplicacion en ASM (instrucciones x86).

Ahora, cuando esta en PCODE, las instrucciones no estan en ASM, estan expresadas usando instrucciones que ejecutara la maquina virtual (VM) de Visual Basic. La maquina virtual esta dentro de la libreria MSVBVM60.DLL (o bien MSVBVM50.DLL si es VB5).

Por eso es que ves que se llaman opcodes a los de ASM y a los de la VM de VB.

Ah! Cada instruccion a ejecutarse (ya sea por el procesador o por una VM) puede dividirs (normalmente) entre codigo de operacion (opcode) y operandos. El opcode es el identificador de la tarea que debe realizarse con los operandos. En MOV eax, ebx el opcode es el MOV. Lo mismo para instrucciones de una VM.


Título: Re: Duda tutorial RicardoNarvaja
Publicado por: .:UND3R:. en 6 Junio 2011, 03:39 am
Aclarado, Gracias :D


Título: Re: Duda tutorial RicardoNarvaja
Publicado por: apuromafo CLS en 10 Junio 2011, 22:28 pm
opcode son para mi la representacion de cierto comando,

hay diferntes opcodes para x86, x64, .net, linux,mac, arm y otros, ahora bien ese es por la plataforma, luego en la forma de compilar, ya menciono MCKSys en visualbasic, pero tambien hay visualbasic.net , que tiene opcodes de IL, o codigo intermedio, no es igual pero mantienen las mismas bases, solo representan un codigo, cuando ya se aprende a depurar y te das cuenta que hay personas que no quedan conformes con los opcodes y intentan virtualizar las cosas, crean MAQUINAS virtuales con nuevos opcodes, luego  puedes darte cuenta que el tema de analisis es mucho mas amplio y no es solo conocer el salto, o algo mas, themida por ejemplo usa  CISC o RISC, pero bueno hay muchos temas que se aprenden con el tiempo..sigue leyendo y aprendiendo..

, por lo que se ve es que las busquedas por bytes, son para cierto tipo de exes, hay tambien busqueda de comandos como "call offset" o "call constant", tambien hay varias variables que se pueden usar en ollydbg, yo suelo normalmente no buscar mucho y subir y bajar buscando cosas importante en el codigo..