Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: .:UND3R:. en 26 Agosto 2011, 22:11 pm



Título: Duda con simple script
Publicado por: .:UND3R:. en 26 Agosto 2011, 22:11 pm
en el tutorial de introducción a olly se comienza con este script:


Citar
inicio:

bphws 12ffc4, "r"

trabajo:

eob pirulo
run

pirulo:
cmp eip, 77aa6298
je quitar
cmp eip, 77aa62b0
je restaurar
jmp final

quitar:
bphwc 12ffc4
jmp trabajo

restaurar:
jmp inicio

final:
MSGYN "Continuar?"
cmp $RESULT,1
je inicio
ret

en donde las comparaciones que se realiza son en (se pone bp ahí) KiUserExceptionDispatcher y en ZwContinue (se pone bp)

la idea del script es poder saltear la detección de de los hadware breakpoint, este funciona correctamente pero me surge una duda:

Supongamos que está detenido en
77aa6298 (KiUserExceptionDispatcher)
al encontrar una excepción o breakpoint

por el comando eob saltará a pirulo

pirulo:
cmp eip, 77aa6298
je quitar
cmp eip, 77aa62b0
je restaurar
jmp final

aquí al ser la primera comprobación cierta, este va a quitar

quitar:
bphwc 12ffc4
jmp trabajo

por lo que luego va a trabajo mi duda es que no entiendo cuando se ejecuta run, ya que este está debajo de eob por lo que para mi entender nunca se ejecutaría y no haría nunca avanzar al programa, pero este si lo hace

iría a trabajo y denuevo encontraría un BP 77aa6298 o el RUN se ejecuta junto con el EOB? No sé si se entiende

Saludos


Título: Re: Duda con simple script
Publicado por: MCKSys Argentina en 26 Agosto 2011, 23:00 pm
EOB label
---------
Transfer execution to some label on next breakpoint.


Osea, desde este momento, cuando ocurra un BP, transferir la ejecucion al label dado.

Es como si se seteara un flag, que le dice al plugin que a partir de ese momento, el primer BP que salte, va a hacer que se ejecute las instrucciones que estan en el label.

Si no se usa run, no podria andar nunca. EOB de por si misma, no ejecuta nada...  :P


Título: Re: Duda con simple script
Publicado por: apuromafo CLS en 26 Agosto 2011, 23:31 pm
ahora por las excepciones y todo suele usarse los bp en memory y muchas veces  otros comandos, pero mas que eso no


/COE/COB/EOB son comandos mas o menos poco usadosm actualmente
se suele usar:"BPGOTO"

saludos Apuromafo


+info:


//
COB  // Continue On Break
Makes the script continue execution after a breakpoint has occurred. This will override the execute on break (EOB) command.  (removes EOB)
Example:
COB

//
COE  // Continue On Exception
Makes the script continue execution after an exception has occurred. This will override the execute on exception (EOE) command.  (removes EOE)
Example:
COE

//
EOB label  // Execute On Break
Transfers execution to label on next breakpoint.
(see BPGOTO command to assign a label to a breakpoint)
Example:
EOB label
eob SOME_LABEL


//


BPGOTO addr, label         // Breakpoint Goto
------------------
Automatic Jump at label on Breakpoint (Standard(INT3) and Hardware).
//Transfer execution to label when breakpoint at addr is reached.
EOB Like Command
Example:
bphws addr
bpgoto addr, MyLabel
NextBP:
RUN
...
MyLabel:
...
jmp NextBP

//////////////////////////////////
Example2:
BP addr
BPGOTO addr, Do2
RUN
NextBP2:
  RUN
  ...
Do2:
  ...
  JMP NextBP2




--

BPHWS addr, [mode="x"]  // Breakpoint Hardware Set
Sets a hardware breakpoint at addr.
Mode can be
"r" read,
"w" write or
"x" execute

(defaults to "x" if omitted).
--

ERUN  // Exception (Handling) Run //  [formerly ESTO]
Executes "SHIFT+F9" in OllyDbg (Run with exceptions ignored).
Note: Was ESTO before, but the command is depreciated
Example:
ERUN

---

MSGYN str  // Message Yes No
Displays a message box with "Yes" and "No" buttons containing the text str.
$RESULT is set to 0 if the user selects "No".
$RESULT is set to 1 if the user selects "Yes".
$RESULT is set to 2 if the user selects "Cancel".
Example:
MSGYN "Auto search for IAT?"
CMP $RESULT, 0
JE AskIAT
CMP $RESULT, 1
JE FindIAT
CMP $RESULT, 2
JE Exit


Título: Re: Duda con simple script
Publicado por: .:UND3R:. en 27 Agosto 2011, 02:29 am
EOB label
---------
Transfer execution to some label on next breakpoint.


Osea, desde este momento, cuando ocurra un BP, transferir la ejecucion al label dado.

Es como si se seteara un flag, que le dice al plugin que a partir de ese momento, el primer BP que salte, va a hacer que se ejecute las instrucciones que estan en el label.

Si no se usa run, no podria andar nunca. EOB de por si misma, no ejecuta nada...  :P

Excelente respuesta pero aún no me aclaro con algo entiendo lo que hace EOB y RUN pero es más que nada por entendimiento cuando se genere el bp se dirigirá a pirulo pero mi duda es en que parte pasa por el run es decir va a pirulo junto con un run? o no pasa por ese run al ir a pirulo, muchas gracias por las respuestas :D


Título: Re: Duda con simple script
Publicado por: Иōҳ en 27 Agosto 2011, 03:34 am
creo que yo entendí algo esa explicación, cuando ejecutas el script, mandas el comando RUN, que ya sabemos para que es.

Y no se ejecuta nada hasta que la condición de EOB se cumpla, como dice Fly, EOB por si solo no ejecuta nada.

La condición de EOB es está.

Citar
Transfer execution to some label on next breakpoint.

Que me corrigan si me equivoco.

EDITO:

Releyendo lo que dijo fly, aquí está la respuesta.

Citar
ue le dice al plugin que a partir de ese momento, el primer BP que salte, va a hacer que se ejecute las instrucciones que estan en el label.

el Label es pirulo.

Nox.