[SCRIPT]Logeador de saltos V1.2

Iniciado por .:UND3R:., 19 Octubre 2011, 21:39 PM

0 Miembros y 3 Visitantes están viendo este tema.

.:UND3R:.

Versión V1.2
¿Para que sirve?
-Si tenemos un programa trial podremos lanzar el script, luego caducarlo (cambiar la fecha) e ejecutar el script nuevamente, luego de eso comparamos y obtendremos el salto que nos bloquea el acceso al programa.
-Si dumpeamos un programa y tiene detección CRC podemos realizar los pasos comentados anteriormente y obtendremos el salto CRC.
-Si tenemos un serial verdadero podemos obtener el salto que nos considera el serial como válido.

Mejoras:
-Reparado error con 2 opciones activadas al mismo tiempo (filtro bucle con  detenerse en address específico, generaban un error que ya está solucionado)
-Log tipo de salto(idea de tinkipinki)
-Anterior versión solo logeaba saltos SHORT, ahora logea JMP NEAR
-Optimizado el código: V1.0=367 lineas V1.2=309 lineas (incluyendo las opciones adicionales)
-Filtrar los saltos SHORT
EDIT:tenía un pequeño error el código cuando lo subí, ahora está editado y funciona correctamente.

Imágenes:










Código de la versión 1.2:
Código (asm) [Seleccionar]
/*
   -=================================================================-

       Script realizado por :UND3R                                      
       Script para : Logear saltos condicionales                                              
       Configuracion: Saltar todas las excepciones y no tener ningún BP                                              
       Fecha : 12/10/2011                                          

                   -=[ Comentario del Script ]=-                    
    Ideal para logear todo tipo de saltos condicionales para posteriormente                                                              
    compararlo con otro log con el fin de localizar saltos mágicos                                                                

   -=================================================================-
*/
VAR AUX_EXIT
VAR T_F_N_LOG
VAR CONT_LOG_N
VAR FILTRO
VAR VEIP
VAR RESP
VAR N_LOGTXT
VAR LOG_SALTO
VAR VMEMORY
VAR VMEMORY2
VAR VMEMORY3
VAR AUX_TS
VAR TIPO_SALTO
VAR AUX_TS2
VAR LOG_BUCLE1
VAR LOG_BUCLE2
VAR COMP
VAR VEIP2
VAR MAX
VAR MIN
VAR CONT_LOG_N2
VAR CANTI_LOG_SAVE
VAR COMPROBAR_SALTO
VAR SI_NO
VAR VAR_EIP
VAR CONT_JUMP
VAR LOG_TIPO_SALTO
VAR ANTIBUCLE2
VAR ANTIBUCLE1
VAR N_BUCLE1
VAR CONT
VAR INF_BUCLE2
VAR INF_BUCLE1
VAR INF_BUCLE
VAR VEIP_2
VAR FILTRAR_JMP_SHORT
ASK "Introduzca el nombre del archivo a crear EJ: LOG1.TXT"
MOV N_LOGTXT,$RESULT
EVAL "{N_LOGTXT}"
WRT $RESULT, "|N:   |ADDRESS:|EIP:    |SALTA: |BUCLE: |TIPO SALTO:|"
WRTA $RESULT, "|---------------------------------------------------|"  
PREG_FILTRO:
MSGYN "¿Opciones avanzadas?"
CMP 1,$RESULT
JE AVANZADO
TRACE:
TICND "byte [EIP] > 6F && byte [EIP] < 80 || byte [EIP+1] > 7F && byte [EIP+1] < 90 && byte [EIP]==0F"
CMP RESP,eip
JE EXIT1
OPCODE eip
MOV LOG_SALTO,$RESULT_1
ALLOC 50
MOV VMEMORY,$RESULT
MOV [VMEMORY],LOG_SALTO
MOV VMEMORY2,VMEMORY
ADD VMEMORY2,2
BUCLE_TS:
CMP [VMEMORY2],20,1
JNE INC_VMEMORY2
MOV VMEMORY3,VMEMORY2
COMP_SHORT:
INC VMEMORY3
MOV AUX_TS,[VMEMORY3],5
CMP AUX_TS,"SHORT"
JE SALTO_TIPO1
SALTO_TIPO2:
SUB VMEMORY2,VMEMORY
MOV TIPO_SALTO,[VMEMORY],VMEMORY2
STR TIPO_SALTO
FREE VMEMORY
JMP TRACE0
SALTO_TIPO1:
ADD VMEMORY3,5
MOV AUX_TS2,[VMEMORY3],1
CMP AUX_TS2,2E
JE SALTO_TIPO2
SUB VMEMORY3,VMEMORY
MOV TIPO_SALTO,[VMEMORY],VMEMORY3
LOG TIPO_SALTO
FREE VMEMORY
CMP FILTRAR_JMP_SHORT,1
JE TRACE
JMP TRACE0
INC_VMEMORY2:
INC VMEMORY2
JMP BUCLE_TS
TRACE0:
CMP eip,VEIP
JE CONT_BUCLE
MOV LOG_BUCLE1,0
MOV LOG_BUCLE2,0
TRACE1:
OPCODE eip
MOV VEIP,eip
MOV VEIP2,VEIP
ADD VEIP2,$RESULT_2
STI
CMP FILTRO,1
JNZ TRACE2
CMP eip,MAX
JA TRACE2
CMP eip,MIN
JAE TRACE
TRACE2:
CMP LOG_BUCLE1,1
JNE TRACE3
MOV LOG_BUCLE2,"!"
TRACE3:
INC CONT_LOG_N
ITOA CONT_LOG_N, 10.
MOV CONT_LOG_N2,$RESULT
CMP T_F_N_LOG,1
JNE TRACE4
CMP CONT_LOG_N2,CANTI_LOG_SAVE
JE EXIT2
TRACE4:
CMP VEIP2,eip
JE NO
SI:
MOV COMPROBAR_SALTO,1
MOV SI_NO,"SI"
JMP LOG_COMPR_TXT
NO:
MOV COMPROBAR_SALTO,0
MOV SI_NO,"NO"
LOG_COMPR_TXT:
EVAL "|{CONT_LOG_N2}"
MOV CONT_LOG_N2,$RESULT
LOG_COMPR_TXT_:
LEN CONT_LOG_N2
CMP $RESULT,6
JNE INC_LOG_COMPR_TXT
ADD CONT_LOG_N2,"|"
EVAL "{N_LOGTXT}"
WRTA $RESULT,CONT_LOG_N2
LOG_CMPR_TXT2:
EVAL "{VEIP}"
MOV VEIP_2,$RESULT
LOG_CMPR_TXT2_:
LEN VEIP_2
CMP $RESULT,8
JNE INC_LOG_CMPR_TXT2
ADD VEIP_2,"|"
EVAL "{N_LOGTXT}"
WRTA $RESULT,VEIP_2,""
LOG_CMPR_TXT3:
EVAL "{eip}"
MOV VAR_EIP,$RESULT
LOG_CMPR_TXT3_:
LEN VAR_EIP
CMP $RESULT,8
JNE INC_LOG_CMPR_TXT3
ADD VAR_EIP,"|"
EVAL "{N_LOGTXT}"
WRTA $RESULT,VAR_EIP,""
LOG_CMPR_TXT4:
EVAL "{SI_NO}     |{LOG_BUCLE2}      |"
MOV CONT_JUMP,$RESULT
EVAL "{N_LOGTXT}"
WRTA $RESULT,CONT_JUMP,""
CMPR_LEN_TS:
LEN TIPO_SALTO
CMP $RESULT,B
JNE INC_LEN_TS
EVAL "{TIPO_SALTO}|"
MOV LOG_TIPO_SALTO,$RESULT
EVAL "{N_LOGTXT}"
WRTA $RESULT,LOG_TIPO_SALTO,""
CMP AUX_EXIT,1
JE LOG_COMPR_TXT2
JMP TRACE
LOG_COMPR_TXT2:
JMP EXIT
STOP:
BPHWS RESP, "x"
JMP FILTRO
EXIT1:
BPHWC RESP
EXIT:
EVAL "{N_LOGTXT}"
WRTA $RESULT,"`---------------------------------------------------´"
ret
EXIT2:
MOV AUX_EXIT,1
JMP TRACE4
AVANZADO:
MSGYN "¿Detener en Nº cantidad de datos logeados?"
CMP 0,$RESULT
JE AVANZADO2
N_LOG_SAVE:
ASK "Introduzca número de datos a logear:"
MOV CANTI_LOG_SAVE,$RESULT
ITOA CANTI_LOG_SAVE
MOV CANTI_LOG_SAVE,$RESULT
MOV T_F_N_LOG,1
JMP FILTRO
AVANZADO2:
MSGYN "¿Detener log en address determinado?"
CMP 0,$RESULT
JE FILTRO
BP_ADDRESS:
ASK "Introduzca la dirección en donde desea detener el log"
MOV RESP,$RESULT
CMP RESP,0
JNE STOP
FILTRO:
MSGYN "¿Excluir en el log rango de address?"
CMP 0,$RESULT
JE FILTRO_JMP
FILTRO2:
MOV FILTRO,1
ASK "Introduzca el rango a excluir,desde:"
MOV MIN,$RESULT
ASK "hasta:"
MOV MAX,$RESULT
FILTRO_JMP:
MSGYN "¿Excluir saltos SHORT?"
CMP 0,$RESULT
JE ANTIBUCLE
MOV FILTRAR_JMP_SHORT,1
ANTIBUCLE:
MSGYN "¿Log inteligente (evita bucle's)?"
CMP 0,$RESULT
JE OLLYH
ANTIBUCLE2:
MOV ANTIBUCLE1,1
ASK "Nº de veces que debe repetirse un salto para ser considerado bucle"
MOV N_BUCLE1,$RESULT
OLLYH:
MSGYN "¿Ocultar OllyDBG mientras se ejecuta el script?"
CMP $RESULT,0
JE GOTRACE
DBH
GOTRACE:
JMP TRACE
CONT_BUCLE:
INC CONT
MOV LOG_BUCLE1,1
CMP CONT,N_BUCLE1
JE SALTAR_BUCLE
JMP TRACE1
SALTAR_BUCLE:
CMP COMPROBAR_SALTO,0
JE NO_SALTA_BUCLE
SI_SALTA_BUCLE:
MOV INF_BUCLE2,VEIP2
JMP BUCLE2
NO_SALTA_BUCLE:
MOV INF_BUCLE,VEIP
ADD INF_BUCLE,1
MOV INF_BUCLE,[INF_BUCLE],1
MOV INF_BUCLE2,eip
ADD INF_BUCLE2,INF_BUCLE
ADD INF_BUCLE2,2
CMP INF_BUCLE,7F
JBE BUCLE2
SUB INF_BUCLE2,100
BUCLE2:
EVAL "|----[{VEIP}]-¡BUCLE ENCONTRADO!------------------"
MOV CONT_JUMP,$RESULT
BUCLE2_:
LEN CONT_JUMP
CMP $RESULT,34
JNE INC_BUCLE2
ADD CONT_JUMP,"|"
EVAL "{N_LOGTXT}"
WRTA $RESULT,CONT_JUMP
BUCLE_CONT_:
BP INF_BUCLE2
RUN
CMP INF_BUCLE2,eip
JNE ERROR1
BC INF_BUCLE2
MOV CONT,0
MOV LOG_BUCLE1,0
MOV LOG_BUCLE2,0
JMP TRACE
INC_LEN_TS:
ADD TIPO_SALTO," "
JMP CMPR_LEN_TS
INC_BUCLE2:
ADD CONT_JUMP,"-"
JMP BUCLE2_
INC_LOG_CMPR_TXT3:
ADD VAR_EIP," "
JMP LOG_CMPR_TXT3_
INC_LOG_CMPR_TXT2:
ADD VEIP_2," "
JMP LOG_CMPR_TXT2_
INC_LOG_COMPR_TXT:
ADD CONT_LOG_N2," "
JMP LOG_COMPR_TXT_
ERROR1:
MSG "Error inesperado #1"
RET





Versión V1.0
Este script como el título lo dice se encarga de logear todos los diferentes tipos de saltos condicionales hasta un cierto punto especificado por el usuario y los guarda en un documento de texto (archivo log) indicando el address en donde estaba el salto,si se realizó el salto o no y si se realizó indica hacia donde salto, esto puede ser útil para encontrar comprobaciones CRC, antidump de tamaño o detección de si el programa está siendo ejecutado bajo una máquina virtual, la idea es generar dos log
EJ: archivo desempaqueta=Log1 archivo empaquetado=Log2, ambos detenidos en el OEP, de esta forma con algún comparador de textos podremos ver que salto tienen de diferencia siendo este el posible causante de las detecciones mencionadas anteriormente.

Imágen de logs:



=el número de log, este es el que se debe especificar dentro de las opciones si se quiere detener en N cantidad de log especificado.

ADDRESS=Indica en donde está el salto encontrado

EIP=Indica la ubicación luego de que se ejecutó el salto

BUCLE=!: indica que se está repitiendo un salto
          0:Indica que NO se está repitiendo el salto

SALTA: SI/NO este es la acción más importante del script



*En esta imagen muestra la detección de un bucle, para evitar que se repita en el log, con la opción de log inteligente en vez de ver los address repetidos, veremos una alerta


-Nombre del .txt:
El script en primera instancia nos preguntará con que nombre queremos guardar el log

-Opciones avanzadas:
Si no optamos por esta opción el script comenzará a logear todos

-Detener en Nº cantidad de datos logeados:
Esta opción nos da la posibilidad de que el script se detenga en una cierta cantidad de números de registro.

-Detener en un determinado address:
Si queremos detener el script en un cierto address

-Excluir en el log rango de address:
Nos da la posibilidad de poder excluir un rango de address, estas no serán mostradas en el log, ideal para excluir los saltos de las API'S si elegimos esta opción nos preguntara desde donde queremos que excluya y hasta que address

-Log inteligente:
esta opción evita bucles ideal para evitar tener repetidos datos en el log que pueden estorbar la comparación, si elegimos esta opción nos preguntará cuantas veces debe pasar el programa por un mismo salto para que sea considerado bucle
*Recomendación:4
*Actualmente no considera como bucle en donde un salto salta a otro salto
-Ocultar OllyDBG mientras se ejecuta el script:
esta opción habilita el comando DBGH

SCRIPT:
Código (asm) [Seleccionar]
/*
   -=================================================================-
                                               
       Script realizado por :UND3R                                      
       Script para : Logear saltos condicionales                                              
       Configuracion: Saltar todas las excepciones y no tener ningún BP                                              
       Fecha : 12/10/2011                                          
                                                                   
                   -=[ Comentario del Script ]=-                    
    Ideal para logear todo tipo de saltos condicionales para posteriormente                                                              
    compararlo con otro log con el fin de localizar saltos mágicos                                                                
                                                                   
   -=================================================================-
*/
VAR INFO_N4
VAR STR_4
VAR STR_2
VAR STR_1
VAR INFO_N3
VAR INFO_N2
VAR INFO_N
VAR CONT_LOG_N2
VAR AUX_EXIT
VAR T_F_N_LOG
VAR CANTI_LOG_SAVE
VAR CONT_LOG_N
VAR SI_NO
VAR CONT_JUMP
VAR N_LOGTXT
VAR LOG_BUCLE2
VAR LOG_BUCLE1
VAR COMPROBAR_SALTO
VAR INF_BUCLE2
VAR INF_BUCLE
VAR N_BUCLE1
VAR CONT
VAR ANTIBUCLE1
VAR FILTRO
VAR MIN
VAR MAX
VAR COMP
VAR RESP
VAR VEIP2
VAR VEIP
ASK "Introduzca el nombre del archivo a crear EJ: LOG1.TXT"
MOV N_LOGTXT,$RESULT
EVAL "{N_LOGTXT}"
WRT $RESULT, "|N:   |ADDRESS:|EIP:    |BUCLE: |SALTA: |"
WRTA $RESULT, "|---------------------------------------|"  
PREG_FILTRO:
MSGYN "¿Opciones avanzadas?"
CMP 1,$RESULT
JE AVANZADO
TRACE:
TICND "byte [EIP] > 6F && byte [EIP] < 80"
CMP RESP,eip
JE EXIT1
CMP eip,VEIP
JE CONT_BUCLE
MOV LOG_BUCLE1,0
MOV LOG_BUCLE2,0
TRACE1:
MOV COMP,[eip],1
CMP COMP,70
JB TRACE
CMP COMP,7F
JA TRACE
OPCODE eip
MOV VEIP,eip
MOV VEIP2,VEIP
ADD VEIP2,$RESULT_2
STI
CMP FILTRO,1
JNZ TRACE2
CMP eip,MAX
JA TRACE2
CMP eip,MIN
JAE TRACE
TRACE2:
CMP LOG_BUCLE1,1
JNE TRACE3
MOV LOG_BUCLE2,"!"
TRACE3:
INC CONT_LOG_N
ITOA CONT_LOG_N, 10.
MOV CONT_LOG_N2,$RESULT
CMP T_F_N_LOG,1
JNE TRACE4
CMP CONT_LOG_N2,CANTI_LOG_SAVE
JE EXIT2
TRACE4:
CMP VEIP2,eip
JE NO
SI:
MOV COMPROBAR_SALTO,1
MOV SI_NO,"SI"
JMP LOG_COMPR_TXT
NO:
MOV COMPROBAR_SALTO,0
MOV SI_NO,"NO"
LOG_COMPR_TXT:
LEN CONT_LOG_N2
MOV INFO_N,$RESULT
CMP INFO_N,1
JE LOG_CMPR_TXT_1
CMP INFO_N,2
JE LOG_CMPR_TXT_2
CMP INFO_N,3
JE LOG_CMPR_TXT_3
CMP INFO_N,4
JE LOG_CMPR_TXT_4
CMP INFO_N,5
JE LOG_CMPR_TXT__5
JMP ERROR2
LOG_CMPR_TXT_1:
EVAL "|{CONT_LOG_N2}    |"
MOV CONT_JUMP,$RESULT
EVAL "{N_LOGTXT}"
WRTA $RESULT,CONT_JUMP
JMP LOG_CMPR_TXT2
LOG_CMPR_TXT_2:
EVAL "|{CONT_LOG_N2}   |"
MOV CONT_JUMP,$RESULT
EVAL "{N_LOGTXT}"
WRTA $RESULT,CONT_JUMP
JMP LOG_CMPR_TXT2
LOG_CMPR_TXT_3:
EVAL "|{CONT_LOG_N2}  |"
MOV CONT_JUMP,$RESULT
EVAL "{N_LOGTXT}"
WRTA $RESULT,CONT_JUMP
JMP LOG_CMPR_TXT2
LOG_CMPR_TXT_4:
EVAL "|{CONT_LOG_N2} |"
MOV CONT_JUMP,$RESULT
EVAL "{N_LOGTXT}"
WRTA $RESULT,CONT_JUMP
JMP LOG_CMPR_TXT2
LOG_CMPR_TXT__5:
EVAL "|{CONT_LOG_N2}|"
MOV CONT_JUMP,$RESULT
EVAL "{N_LOGTXT}"
WRTA $RESULT,CONT_JUMP
LOG_CMPR_TXT2:
ITOA VEIP
MOV STR_1,$RESULT
LEN STR_1
MOV INFO_N2,$RESULT
CMP INFO_N2,5
JE LOG_CMPR_TXT_5
CMP INFO_N2,6
JE LOG_CMPR_TXT_6
CMP INFO_N2,7
JE LOG_CMPR_TXT_7
CMP INFO_N2,8
JE LOG_CMPR_TXT_8
JMP ERROR3
LOG_CMPR_TXT_5:
EVAL "{VEIP}   |"
MOV CONT_JUMP,$RESULT
EVAL "{N_LOGTXT}"
WRTA $RESULT,CONT_JUMP,""
JMP LOG_CMPR_TXT3
LOG_CMPR_TXT_6:
EVAL "{VEIP}  |"
MOV CONT_JUMP,$RESULT
EVAL "{N_LOGTXT}"
WRTA $RESULT,CONT_JUMP,""
JMP LOG_CMPR_TXT3
LOG_CMPR_TXT_7:
EVAL "{VEIP} |"
MOV CONT_JUMP,$RESULT
EVAL "{N_LOGTXT}"
WRTA $RESULT,CONT_JUMP,""
JMP LOG_CMPR_TXT3
LOG_CMPR_TXT_8:
EVAL "{VEIP}|"
MOV CONT_JUMP,$RESULT
EVAL "{N_LOGTXT}"
WRTA $RESULT,CONT_JUMP,""
LOG_CMPR_TXT3:
ITOA eip
MOV STR_2,$RESULT
LEN STR_2
MOV INFO_N3,$RESULT
CMP INFO_N3,5
JE LOG_CMPR_TXT2_5
CMP INFO_N3,6
JE LOG_CMPR_TXT2_6
CMP INFO_N3,7
JE LOG_CMPR_TXT2_7
CMP INFO_N3,8
JE LOG_CMPR_TXT2_8
JMP ERROR4
LOG_CMPR_TXT2_5:
EVAL "{eip}   |"
MOV CONT_JUMP,$RESULT
EVAL "{N_LOGTXT}"
WRTA $RESULT,CONT_JUMP,""
JMP LOG_CMPR_TXT4
LOG_CMPR_TXT2_6:
EVAL "{eip}  |"
MOV CONT_JUMP,$RESULT
EVAL "{N_LOGTXT}"
WRTA $RESULT,CONT_JUMP,""
JMP LOG_CMPR_TXT4
LOG_CMPR_TXT2_7:
EVAL "{eip} |"
MOV CONT_JUMP,$RESULT
EVAL "{N_LOGTXT}"
WRTA $RESULT,CONT_JUMP,""
JMP LOG_CMPR_TXT4
LOG_CMPR_TXT2_8:
EVAL "{eip}|"
MOV CONT_JUMP,$RESULT
EVAL "{N_LOGTXT}"
WRTA $RESULT,CONT_JUMP,""
LOG_CMPR_TXT4:
EVAL "{LOG_BUCLE2}      |{SI_NO}     |"
MOV CONT_JUMP,$RESULT
EVAL "{N_LOGTXT}"
WRTA $RESULT,CONT_JUMP,""
CMP AUX_EXIT,1
JE LOG_COMPR_TXT2
JMP TRACE
LOG_COMPR_TXT2:
JMP EXIT
STOP:
BPHWS RESP, "x"
JMP FILTRO
EXIT1:
BPHWC RESP
EXIT:
EVAL "{N_LOGTXT}"
WRTA $RESULT,"`---------------------------------------´"
ret
EXIT2:
MOV AUX_EXIT,1
JMP TRACE4
AVANZADO:
MSGYN "¿Detener en Nº cantidad de datos logeados?"
CMP 0,$RESULT
JE AVANZADO2
N_LOG_SAVE:
ASK "Introduzca número de datos a logear:"
MOV CANTI_LOG_SAVE,$RESULT
ITOA CANTI_LOG_SAVE
MOV CANTI_LOG_SAVE,$RESULT
MOV T_F_N_LOG,1
JMP FILTRO
AVANZADO2:
MSGYN "¿Detener log en address determinado?"
CMP 0,$RESULT
JE FILTRO
BP_ADDRESS:
ASK "Introduzca la dirección en donde desea detener el log"
MOV RESP,$RESULT
CMP RESP,0
JNE STOP
FILTRO:
MSGYN "¿Excluir en el log rango de address?"
CMP 0,$RESULT
JE ANTIBUCLE
FILTRO2:
MOV FILTRO,1
ASK "Introduzca el rango a excluir,desde:"
MOV MIN,$RESULT
ASK "hasta:"
MOV MAX,$RESULT
ANTIBUCLE:
MSGYN "¿Log inteligente (evita bucle's)?"
CMP 0,$RESULT
JE OLLYH
ANTIBUCLE2:
MOV ANTIBUCLE1,1
ASK "Nº de veces que debe repetirse un salto para ser considerado bucle"
MOV N_BUCLE1,$RESULT
OLLYH:
MSGYN "¿Ocultar OllyDBG mientras se ejecuta el script?"
CMP $RESULT,0
JE GOTRACE
DBH
GOTRACE:
JMP TRACE
CONT_BUCLE:
INC CONT
MOV LOG_BUCLE1,1
CMP CONT,N_BUCLE1
JE SALTAR_BUCLE
JMP TRACE1
SALTAR_BUCLE:
CMP COMPROBAR_SALTO,0
JE NO_SALTA_BUCLE
SI_SALTA_BUCLE:
MOV INF_BUCLE2,VEIP2
JMP BUCLE2
NO_SALTA_BUCLE:
MOV INF_BUCLE,VEIP
ADD INF_BUCLE,1
MOV INF_BUCLE,[INF_BUCLE],1
MOV INF_BUCLE2,eip
ADD INF_BUCLE2,INF_BUCLE
ADD INF_BUCLE2,2
CMP INF_BUCLE,7F
JBE BUCLE2
SUB INF_BUCLE2,100
BUCLE2:
ITOA VEIP
MOV STR_4,$RESULT
LEN STR_4
MOV INFO_N4,$RESULT
CMP INFO_N4,5
JE BUCLE_5
CMP INFO_N4,6
JE BUCLE_6
CMP INFO_N4,7
JE BUCLE_7
CMP INFO_N4,8
JE BUCLE_8
BUCLE_5:
EVAL "|----[{VEIP}]-¡BUCLE ENCONTRADO!---------|"
MOV CONT_JUMP,$RESULT
EVAL "{N_LOGTXT}"
WRTA $RESULT,CONT_JUMP
JMP BUCLE_CONT_
BUCLE_6:
EVAL "|----[{VEIP}]-¡BUCLE ENCONTRADO!--------|"
MOV CONT_JUMP,$RESULT
EVAL "{N_LOGTXT}"
WRTA $RESULT,CONT_JUMP
BP INF_BUCLE2
JMP BUCLE_CONT_
BUCLE_7:
EVAL "|----[{VEIP}]-¡BUCLE ENCONTRADO!-------|"
MOV CONT_JUMP,$RESULT
EVAL "{N_LOGTXT}"
WRTA $RESULT,CONT_JUMP
JMP BUCLE_CONT_
BUCLE_8:
EVAL "|----[{VEIP}]-¡BUCLE ENCONTRADO!------|"
MOV CONT_JUMP,$RESULT
EVAL "{N_LOGTXT}"
WRTA $RESULT,CONT_JUMP
BUCLE_CONT_:
BP INF_BUCLE2
EOB COMPROBAR
RUN
COMPROBAR:
CMP INF_BUCLE2,eip
JNE ERROR1
BC INF_BUCLE2
MOV CONT,0
MOV LOG_BUCLE1,0
MOV LOG_BUCLE2,0
JMP TRACE
ERROR1:
MSG "Error inesperado #1"
RET
ERROR2:
MSG "Los datos registrados exceden la cantidad máxima permitida"
RET
ERROR3:
MSG "Error inesperado #2"
RET
ERROR4:
MSG "Error inesperado #3"
RET


Si no lo entendieron bien, les pido que lo utilicen y notarán que no es nada complicado de entender.

Saludos UND3R

PD: otra funcionalidad puede ser encontrar el salto decisivo de un programa teniendo un serial correcto.

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

$Edu$

Estos scripts que haces, es ASM no? y necesitaria un compilador para ejecutar codigo en ASM no? o se guarda con alguna extension?esto lo pregunto para yo saber, porque pienso que en realidad este script se pondra en algun lugar del Olly para luego ser interpretado por el no?

.:UND3R:.

Cita de: $Edu$ en 19 Octubre 2011, 22:53 PM
Estos scripts que haces, es ASM no? y necesitaria un compilador para ejecutar codigo en ASM no? o se guarda con alguna extension?esto lo pregunto para yo saber, porque pienso que en realidad este script se pondra en algun lugar del Olly para luego ser interpretado por el no?

No es ASM, se usa OllyScript que es un plugins encargado de leer script's

PD: tu crackme ID:UND3R PASS:ZSI8

luego el tute jeje

Saludos

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

$Edu$

Jajaja se espera :P

Y entonces estos scripts los creas desde el mismo olly? lenguaje Olly entonces? xD

MCKSys Argentina

MCKSys Argentina

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


$Edu$

Gracias e hice mal en preguntar ya que lo leere en la introduccion de ricardo narvaja alguna vez pienso, no he llegado, saludos!

.:UND3R:.

Cita de: $Edu$ en 20 Octubre 2011, 15:36 PM
Gracias e hice mal en preguntar ya que lo leere en la introduccion de ricardo narvaja alguna vez pienso, no he llegado, saludos!

Leyendo la introducción no deberías tener problemas.

Saludos

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

Tinkipinki

Hola .:UND3R:.:

Lo he probado y funciona muy bien... ;-)

Solo un comentario, en el listado no podria aparecer el tipo de JMP que es por ejemplo JNE, JNZ....etc
Seguro que si no lo has puesto es que debe tener su complicacion.

Saludos

.:UND3R:.

Excelente estoy trabajando con una nueva versión y gracias por la idea, no lo había pensado, mejoraré la detección de antibucles y agregaré los saltos que se efectuaron

Gracias por probra el script

Saludos

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

.:UND3R:.


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