elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  duda ollyscript, saber si saltó o no
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: duda ollyscript, saber si saltó o no  (Leído 3,330 veces)
.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
duda ollyscript, saber si saltó o no
« en: 31 Agosto 2011, 22:02 pm »

como puedo hacer para que el script sepa si con un je jne ja,etc saltó o no?

Saludos
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.465


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: duda ollyscript, saber si saltó o no
« Respuesta #1 en: 31 Agosto 2011, 22:15 pm »

Revisaste el README de OdbgScript?

3.1 Language
------------
The scripting language of OllyScript is an assembly-like language.

In the document below, src and dest can be (unless stated otherwise):
 - Constant in the form of a hex number without prefixes and suffixes, with leading 0 (i.e. 00FF, not 0x00FF or 00FFh)
   For decimal values, use the point (i.e. 100. 128.)
 - Variable previously declared by VAR, or are declared with MOV
 - A 32-bit registers (one of EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, EIP).
   A 16-bit register (one of AX, BX, CX, DX, SI, DI, BP, SP)
   A 8-bit register (one of AL, AH, ... DL, DH)
 - A memory reference in square brackets (i.e. [401000] points to the memory at address 401000,
   [ecx] points to the memory at address ecx).
- A flag with an exclamation mark in front (one of !CF, !PF, !AF, !ZF, !SF, !DF, !OF)
 - Sometimes byte strings are required. Those are scripted as #6A0000# (values between two #) and
   must have an even number of characters.
   Some byte strings can contain the wildcard '?', for example #6A??00# or #6?0000#
 - A combination of these values with operators:

You can use operators in your scripts, +-*/&|^>< for dword and + to concatenate strings.
 - Operators > and < are shr and shl (>> and << in C/C++)
 - Operator ^ is XOR
 - Operator & is AND
 - Operator | is OR
En línea

MCKSys Argentina

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

.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: duda ollyscript, saber si saltó o no
« Respuesta #2 en: 1 Septiembre 2011, 00:56 am »

No entendí como aplicarlo, mira me explico

00427b5 cmp eax,ebx
............ jz 00457b4
00457b4
...
...
..

como sabe si saltó o no?, se guarda en $RESULT?

encontré esto, pero no entendí como aplicarlo a mi caso
Citar
TEST dest,src
-------------
Performs a logical AND of the two operands updating the flags register without saving the result.
(Modifies Flags: CF OF PF SF ZF (AF undefined))
En línea


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


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: duda ollyscript, saber si saltó o no
« Respuesta #3 en: 1 Septiembre 2011, 04:10 am »

Citar
00427b5 cmp eax,ebx
............ jz 00457b4
00457b4

si estas en 00457b4 es porque si salto, si no salto, sigue en la instruccion que continua al jz. Para el caso  en 00427XX

Si quieres asegurarte que 45754 se ejecute solamente si hubo un salto, coloca un jmp antes.
Código:
00457XX jmp 00XXXXXX
00457b4  ;si estas aqui, es que viene desde el salto (jz 457b4)


Citar
test eax, eax
jz eax_es_igual_a_cero
jnz eax_no_es_igual_a_cero
« Última modificación: 1 Septiembre 2011, 07:02 am por _Enko » En línea

.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: duda ollyscript, saber si saltó o no
« Respuesta #4 en: 1 Septiembre 2011, 12:07 pm »

si estas en 00457b4 es porque si salto, si no salto, sigue en la instruccion que continua al jz. Para el caso  en 00427XX

Si quieres asegurarte que 45754 se ejecute solamente si hubo un salto, coloca un jmp antes.
Código:
00457XX jmp 00XXXXXX
00457b4  ;si estas aqui, es que viene desde el salto (jz 457b4)



Entiendo la idea, pero como aplicarla en OllyScript?

Saludos y gracias por responder
En línea


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


Desconectado Desconectado

Mensajes: 1.441



Ver Perfil WWW
Re: duda ollyscript, saber si saltó o no
« Respuesta #5 en: 1 Septiembre 2011, 16:07 pm »

idea 1 , comparar la direccion

Citar
var direccion1
var direccion2
mov direccion1,00457b4
mov direccion1,00457b5// este deberia ser debajo del salto
//bp direccion1
//bp direccion1
cmp eip,direccion1
je estamosendireccion1
cmp eip,direccion2
je estamosendireccion2
eval "que raro estamos en {eip}!!!"
msg $RESULT
jmp fin
estamosendireccion1:
eval "estamos en  {direccion1}"
msg $RESULT
//bc direccion1
jmp fin
estamosendireccion2:
eval "estamos en  {direccion2}"
msg $RESULT
//bc direccion2
jmp fin
fin:
ret


idea 2 comparar por ejecucion eob y run/erun/ bpgoto



idea 3 comparar los flags

idea 4, comparar por bytes y destinos.

etc.
« Última modificación: 1 Septiembre 2011, 20:41 pm por apuromafo » En línea

Apuromafo
.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: duda ollyscript, saber si saltó o no
« Respuesta #6 en: 1 Septiembre 2011, 18:41 pm »

idea 1 , comparar la direccion


idea 2 comparar por ejecucion eob y run/erun/ bpgoto
idea 3 comparar los flags

idea 4, comparar por bytes y destinos.

etc.

Muchas gracias Apuromafo, lo tomaré como referencia a mi idea

Saludos
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: duda ollyscript, saber si saltó o no
« Respuesta #7 en: 1 Septiembre 2011, 21:56 pm »

y para retroceder de op code?

Saludos
En línea


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


Desconectado Desconectado

Mensajes: 1.441



Ver Perfil WWW
Re: duda ollyscript, saber si saltó o no
« Respuesta #8 en: 1 Septiembre 2011, 22:26 pm »

si estamos en una direccion digamos que es "eip",
vemos el tamaño de ese valor de eip , no se un push un call o otro
luego se resta a eip, el valor del tamaño de eso y ahi iria atras.

hay muchas cosas dependiendo insisto de lo que realmente se quiere hacer.
otra cosa se podria investigar el valor de codesize o otro..aver mejor un ejemplo grande..:


aqui queria buscar la iat, en el oep, luego si no la pillo busco un jmp comenzando en Eip, y encontrando su memory base
en otras palabras si estoy en 401000 y comienza el modulo en 400000 pues colocara start el valor de 400000 , luego voy revisando si tiene nombre de api con la funcion GN, luego voy restando de donde si encuentra una api hacia atras con sub , luego de encontrar ese lugar loguea si la distancia es 4, pasa que si no hay apis, normalmente hay un espacio asi

12345 api
00000
00000
12345 api

si cuenta por ejemplo 15 funciones y en la tercera vez cuenta 16, pues no es como para detenerlo....
luego si tenemos una iat asi por ejemplo
00000
00000
00000
12345 api

puede que la funcion sea por ejemplo 20 apis y luego 20 y luego 20, ahi veo que
el primer valor logueado y con la misma cantidad de funciones repetidas, es la que deberemos usar como inicio
esto solo para ejemplos pequeños

private script como idea de   JMp dword api buscando el comienzo de la iat


Citar
mov safeexit,0
MOV RARO,0
mov start,eip
GMEMI start,MEMORYBASE
mov start,$RESULT
iatcero_sub1:
findmem #FF25????????#, start
cmp $RESULT, 0
je nohaymas
CMP RARO,15
JE nohaymas2
mov resuultado,$RESULT
gci resuultado,DESTINATION
mov tmp,$RESULT
gn tmp
mov API_NAME, $RESULT
cmp API_NAME, 0
je msgg55
mov hash,[resuultado+2],4
mov hash2,[resuultado+2],4
//v1 GMEMI hash,MEMORYBASE
//mov iatapuromafo, $RESULT
//GMEMI hash,MEMORYBASE
//mov memo,$RESULT
//mov size,$RESULT
mov idolo,4
mov cam,1
mov malas,0
terminarree:
cmp idolo,7
je ahorasi
sub hash2,4
//mov hash2,$RESULT
//gci hash2,DESTINATION
//mov tmp,$RESULT
mov hash3,[hash2],4
gn hash3
mov API_NAME, $RESULT
cmp API_NAME, 0
je nopillaapi
inc cam
jmp terminarree
mueve7:
mov idolo,7
jmp terminarree
nopillaapi:
add malas,1
//eval "{hash2} y {malas}"
//log $RESULT
cmp malas,1
jne malas2
ja malas2
mov hash_acumula1,hash2
jmp continue
malas2:
cmp malas,2
jne malas3
ja malas3
mov hash_acumula2,hash2
mov comparar,hash_acumula1
sub comparar,hash_acumula2
cmp comparar,4
jne increm
inc safeexit
mov algo,hash2
add algo,4
add algo,4
eval "tengo {safeexit} diferencia de 4, y {cam} //{algo}"
log $RESULT,""
increm:
jmp continue
malas3:
cmp malas,3
jne malas4
ja malas4
mov hash_acumula3,hash2
mov comparar2,hash_acumula2
sub comparar2,hash_acumula3
cmp comparar2,4
jne increm2
inc safeexit
mov algo,hash2
add algo,4
add algo,4
eval "tengo {safeexit} diferencia de 4, y {cam} //{algo}"
log $RESULT,""
increm2:

jmp continue
malas4:
cmp malas,4
jne malas5
ja malas5
mov hash_acumula4,hash2
mov comparar3,hash_acumula3
sub comparar3,hash_acumula4
cmp comparar3,4
jne increm3
inc safeexit
mov algo,hash2
add algo,4
add algo,4
eval "tengo {safeexit} diferencia de 4, y {cam} //{algo}"
log $RESULT,""
increm3:
jmp continue
malas5:
cmp malas,5
jne malas6
ja malas6
mov hash_acumula5,hash2
mov comparar4,hash_acumula4
sub comparar4,hash_acumula5
cmp comparar4,4
jne increm55
inc safeexit
mov algo,hash2
add algo,4
add algo,4
eval "tengo {safeexit} diferencia de 4, y {cam} //{algo}"
log $RESULT,""
increm55:
jmp continue
malas6:
cmp malas,6
jne malas7
ja malas7
mov hash_acumula6,hash2
mov comparar5,hash_acumula5
sub comparar5,hash_acumula6
cmp comparar5,4
jne increm56
inc safeexit
mov algo,hash2
add algo,4
add algo,4
eval "tengo {safeexit} diferencia de 4, y {cam} //{algo}"
log $RESULT,""
increm56:
jmp continue
malas7:
cmp malas,7
jne malas8
ja malas8
mov hash_acumula7,hash2
mov comparar6,hash_acumula6
sub comparar6,hash_acumula7
cmp comparar6,4
jne increm57
inc safeexit
mov algo,hash2
add algo,4
add algo,4
eval "tengo {safeexit} diferencia de 4, y {cam} //{algo}"
log $RESULT,""
increm57:
jmp continue
malas8:
continue:
cmp malas,10
je mueve7
cmp safeexit,4
je cuidado
jmp terminarree
cuidado:
eval "{hash2} y {malas}"
log $RESULT,""
jmp terminarree

ahorasi:
ret

mov restar,hash,1
sub hash,restar
mov iatapuromafo,hash

mov start2,iatapuromafo
add start2,restar
findmem #000000000000000000000000#, start2
mov end, $RESULT
mov end2,500
mov end3,end2
add end3,iatapuromafo

mov end4,end
//

cmp end4,end3
ja end3
sub end4,iatapuromafo
mov end5,end4
log "working with hash+iatzise below 500"
ret
end3:
mov end5,end2
log "working with hash+default 500 iatzise"
ret
nohaymas:
msgg:
msg "try other way"
ret
msgg55:
add start,4
INC RARO
jmp iatcero_sub1

nohaymas2:
msg "se buscaron 15 y nada!"
ret
En línea

Apuromafo
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda salto de línea
PHP
[KMT] 8 3,973 Último mensaje 1 Julio 2007, 13:01 pm
por eLank0
duda con ollyscript
Ingeniería Inversa
.:UND3R:. 1 2,439 Último mensaje 1 Septiembre 2011, 20:22 pm
por apuromafo CLS
se puede comparar resultados en el log con ollyscript?
Ingeniería Inversa
.:UND3R:. 1 1,825 Último mensaje 1 Septiembre 2011, 22:19 pm
por apuromafo CLS
Duda con OllyScript Alloc Free
Ingeniería Inversa
.:UND3R:. 4 2,237 Último mensaje 4 Noviembre 2011, 17:54 pm
por .:UND3R:.
Duda sobre Ollyscript
Ingeniería Inversa
jEUDi17 2 1,983 Último mensaje 24 Julio 2012, 20:52 pm
por jEUDi17
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines