Autor
|
Tema: duda ollyscript, saber si saltó o no (Leído 3,704 veces)
|
.:UND3R:.
|
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
|
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:.
|
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 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
|
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. 00457XX jmp 00XXXXXX 00457b4 ;si estas aqui, es que viene desde el salto (jz 457b4)
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:.
|
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. 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
|
idea 1 , comparar la direccion 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:.
|
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:.
|
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
|
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 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
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda salto de línea
PHP
|
[KMT]
|
8
|
4,437
|
1 Julio 2007, 13:01 pm
por eLank0
|
|
|
duda con ollyscript
Ingeniería Inversa
|
.:UND3R:.
|
1
|
2,635
|
1 Septiembre 2011, 20:22 pm
por apuromafo CLS
|
|
|
se puede comparar resultados en el log con ollyscript?
Ingeniería Inversa
|
.:UND3R:.
|
1
|
2,024
|
1 Septiembre 2011, 22:19 pm
por apuromafo CLS
|
|
|
Duda con OllyScript Alloc Free
Ingeniería Inversa
|
.:UND3R:.
|
4
|
2,539
|
4 Noviembre 2011, 17:54 pm
por .:UND3R:.
|
|
|
Duda sobre Ollyscript
Ingeniería Inversa
|
jEUDi17
|
2
|
2,273
|
24 Julio 2012, 20:52 pm
por jEUDi17
|
|