[OllyDBG] Automatizar la edición de instrucciones?

Iniciado por Eleкtro, 23 Septiembre 2015, 14:11 PM

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

Eleкtro

Buenas, me gustaría saber si puedo instruir al OllyDBG de alguna manera para que, teniendo un texto cómo este copiado en el portapapeles o en un archivo local, sea capaz de automatizar las modificaciones en esas direcciones, en vez de tener que ir modificando una por una de forma manual en el Olly.

0043C1E8    E8 83FFFFFF           CALL Exporter.0043C170
0043C1ED    EB 64                 JMP SHORT Exporter.0043C253
0043C1EF    90                    NOP
0043C1F0    C745 F8 00000000      MOV DWORD PTR SS:[EBP-8],0
0043C1F7    EB 11                 JMP SHORT Exporter.0043C20A
0043C1F9    8B45 F8               MOV EAX,DWORD PTR SS:[EBP-8]
0043C255  ^ EB 99                 JMP SHORT Exporter.0043C1F0


¿Se podría hacer?.

Hace poco descubrí el plugin OllyScript (ODBGScript), pero no me aclaro para usarlo correctamente, de todas formas intuyo que requiere bastante más trabajo que un simple copy&paste xD, y yo pregunto por algo más directo ...más simple.

Saludos








tincopasan

No conozco que haya algún plugin como el que planteas, ahora los scripts son fáciles de hacer (obvio que hay que poner un poco de pilas, como con cualquier lenguaje de scripts) y si se podría automatizar, simplemente declarando la dirección a modificar y los nuevos opcodes.

MCKSys Argentina

Como te dijo tincopasan, con ODBGScript puedes hacer todo, pero tendrias que editar el texto.

Podrías usar el ASM de la 3er columna e insertarlo usando el comando ASM del plugin. En tu ejemplo, la primera instrucción se agregaría como: asm 0043C1E8, "CALL 0043C170"
No sé si al comando te tomaría el nombre del módulo (Exporter.) como válido.

En definitiva, con ODBGScript puedes hacer todo lo que haces con la GUI y un poco más, pero debes practicarlo un poco.

Si tomas los bytes de las instrucciones, podrías hacer un "Binary paste" a partir de la primera dirección.

En tu ejemplo sería: Hacer "Binary paste" desde 0043C1E8, seleccionando más bytes de los que necesitas y deberías tener copiados los bytes de las instrucciones:

E883FFFFFFEB6490C745F800000000EB118B45F8EB99

Pero como es un Copy&Paste del Olly, hay que tener cuidado de que estén todos (al ser C&P, si la comuna de bytes no abarcaba todos los bytes, sólo se copiaron los visibles.)

También, con el plugin Multiline Ultimate Assembler puedes pegar todo el ASM  y sólo debes guardar la 1er dirección de la 1er columna:

En tu ejemplo sería:

Citar<0043C1E8>
CALL Exporter.0043C170
JMP SHORT Exporter.0043C253
NOP
MOV DWORD PTR SS:[EBP-8],0
JMP SHORT Exporter.0043C20A
MOV EAX,DWORD PTR SS:[EBP-8]
JMP SHORT Exporter.0043C1F0
No sé si esos "SHORT" y esos "Exporter." los va a reconocer (aunque lo uso siempre, no tengo el plugin a mano ahora) pero es algo trivial.

Pero, al igual que tincopasan, no sé de nada que tome el Copy&Paste del Olly directamente...

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Eleкtro

Cita de: MCKSys Argentina en 23 Septiembre 2015, 17:52 PMcon el plugin Multiline Ultimate Assembler puedes pegar todo el ASM  y sólo debes guardar la 1er dirección de la 1er columna

Perfecto, esto me ahorra mucho más tiempo y me conformo, gracias.

Cita de: MCKSys Argentina en 23 Septiembre 2015, 17:52 PMNo sé si esos "SHORT" y esos "Exporter." los va a reconocer (aunque lo uso siempre, no tengo el plugin a mano ahora) pero es algo trivial.

En realidad el ejemplo de arriba es ficticcio, solo era por mostrar un ejemplo aleatorio que tenia a mano (gracias a ti :)).

Me di cuenta que no aceptata el nombre del módulo en mi Olly, te iba a preguntar que plugin u opción usabas para poder escribir eso y que te lo tomase, pero no me corre ninguna prisa por averiguarlo xD.

Saludos








MCKSys Argentina

Cita de: Eleкtro en 23 Septiembre 2015, 20:04 PM
Me di cuenta que no aceptata el nombre del módulo en mi Olly, te iba a preguntar que plugin u opción usabas para poder escribir eso y que te lo tomase, pero no me corre ninguna prisa por averiguarlo xD.

Por defecto, Ollydbg anexa el nombre del modulo local a las direcciones que reconoce en el mismo.

Para que no las muestre, tienes que deshabilitar la opción "Show local module name" del TAB "Disasm" de las "Debugging options" (ALT+O).

Saludos!

PD: La opción de abajo "Show symbolic addresses" hace algo parecido si la deshabilitas también. Para verlo mejor, carga un EXE y juega con las opciones. Verás los cambios aplicados al instante.  ;)
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


apuromafo CLS

en los script hay que tener cuidado que el depurador tiene sus versiones, respecto a multiline ultimate assembler, este está disponible para ollydbg 1 y 2, además de otros depuradores

http://rammichael.com/multimate-assembler