Como saber que Registro esta asociado al opcode

Iniciado por x64core, 2 Diciembre 2011, 03:57 AM

0 Miembros y 1 Visitante están viendo este tema.

x64core

:D
hola!
bueno no se si esto va aqui :P pero lo aprendi de aqui del foro de ing inversa :P
bueno lo que quiero saber como puedo saber que registro esta asociado a los opcodes de las intrucciones
ya que me e fijado que el opcode de las instrucciones:

INC EAX
INC EBX
INC ECX
INC EDX

todas son distintos opcodes pero como puedo saber el orden o determinar el opcode con verlo?
y tambien para las demas instrucciones?

Иōҳ

Aprenderse TODOS los opcodes es inhumano!!!, lo puedes observar en el OllyDBG, los opcodes de cada instrucción, de igual manera si tienes instalado el masm32 en su directorio hay un *.chm con los opcodes de cada instrucción.

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

.:UND3R:.

No entendí muy bien pero creo que estás confundido con la estructura de las instrucciones


[ETIQUETA] NEMÓNICO [OPERANDO1],[OPERANDO2],...

La etiqueta es un valor opcional que podemos colocar

El nemónico de instrucción es la instrucción en si un ejemplo de ellas puede ser ADD, SUB, MUL, IDIV, etc

Operando es hacia que apunta el nemónico, esto quiere decir si utilizamos la Instrucción INC eax si EAX = 1, traducimos que se incrementará el registro EAX (Registro de propósito general de 32 bits).

la cantidad de operandos depende de la instrucción, por ejemplo PUSHAD, POPAD, PUSHFD, POPFD no requieren de operandos

por lo general las instrucciones que utilizan dos operandos estos poseen los siguientes nombres

ADD EAX,EBX ->EAX es el operando de destino y EBX es el operando de Origen

En cuanto a los registros de propósito general de 32 bits son los siguientes:

EAX
ECX
EDX
EBX
EDI
ESI
ESP

En cuanto a los registros de propósito general de 16 bits son los siguientes:
AX
CX
DX
BX
DI
SI
SP

En cuanto a los registros de segmentos:

CS
DS
SS
ES
FS
GS

En cuanto a su utilización, los programas en modo direccionamiento real (aquellos programas que interactúan de manera directa con el hardware de la computadora utilizan registros de 16 bits a diferencia de los programas en modo protegido que estos utilizas por defecto registros de 32 bits

Espero que sea lo que haz preguntando, en cuanto todo el contenido que te he explicado a sido el producto del estudio del mismo libro que estás estudiando tú

Saludos

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

x64core

#3
@Иōҳ
Gracias bro :D lo encontre :D y esta interesante :)


@.:UND3R:.
gracias tambien :D pero mas que nada queria saber porque tengo estas intrucciones:


00401002  | FE05 1A304000      INC BYTE PTR DS:[40301A]
00401008  | 66:FF05 1F304000  INC WORD PTR DS:[40301F]
0040100F  | FF05 1B304000      INC DWORD PTR DS:[40301B]
00401015  | 40                       INC EAX
00401016  | 43                       INC EBX
00401017  | 41                       INC ECX
00401018  | 42                       INC EDX

lo azules son los opcodes no? :P
los rojos son valores que no e podido entender de donde salen :/
lo verde entiendo que son las direcciones
tambien el valor 66 ni se de donde sale :/

las primeras tres instrucciones las direcciones son a variables de byte,word, y dword

EDITO:

tambien como podrais ver el OPCODE de la primera instruccion comparado con la segunda es distinto ( FE y FF )
pero comparando la segunda instruccion con la tercera son iguales :|
por eso quisiera saber si hay alguna regla para saber cuando cambia :P o en que situaciones :P
ya que dependiendo de los operandos los opcodes cambiar :/

Иōҳ

Tiene mucho que ver "qué" es su operando, r/m32 or 64, ptr etc...

para que el opcode cambie.

Tú sólo programa en asm(mnemónicos) y deja que el micro procesador haga lo suyo (opcodes) XD.

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

x64core

si bueno :P pero mas que todo lo preguntaba porque estoy tratando sobre usar los opcodes en lenguajes de alto nivel
y que en el codigo fuente de algunos ejemplos solo aparecen por ejemplo: 43h que es INC pero que
no se a que registro o direccion o tipo se esta refiriendo para hacerle el incremento :P
Por eso saber eso ahorrario mucho depurar con ollydbg :P

Иōҳ

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

x64core