Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - LSL

#111
por ejemplo para 24, es 149103

el que la sigue la consigue, sigue adelante.

el keygen, no se programar, si quieres te lo hago en excel.

y el manual, uff, he empezado varios y nunca he terminado ninguno,  :-[




#112
Ingeniería Inversa / Re: programita
2 Junio 2010, 02:22 AM
ahí tambien retornas a una zona comun de ejecución de eventos, y te costará un rato salir de bucles de programación.

Bueno lo siguiente, no es lo mas ortodoxo, pero es 100% efectivo con el componente timer, y es dejarlo sin el evento asociado Ontimer, lo que se puede hacer facilmente con un editor de recursos, en este caso he utilizado el eXeScope, ...abrimos el ejecutable a modificar, te desplazas a Resource -> RCData ->TFMMAIN -> pulsas Control+F para buscar el texto TimerTimer, pulsas OK y caes en el primer texto encontrado, seleccionas la linea "OnTimer = TimerTimer", click derecho y Delete, asi en los 4 objetos timer, te cambias de formulario o sales del eXeScope y te pregunta si quieres guardar los cambios, pulsas OK, y a tomar viento los eventos asociados a la función TimerTimer.



Otra forma mas profesional es poner el valor de intervalo=timeout = 0 cuando se le pasa los parametros a la Api SetTimer en tiempo de ejecución, con esto el evento ontimer asociado no se generará.

Cargamos el ejecutable en Ollydbg, parado en el EP, en la ventana de desensamblado pulsamos Control+N, (nos muestra la ventana de nombres en el corriente módulo, sobre el titulo de la ventana escribimos settimer, con lo que nos localiza y coloca encima de dicha función, pulsamos Intro, para que nos muestre todas las llamadas a dicha funcion importada, le colocamos a cada llamada un BP con F2.
Corremos el programa con F9 y cada vez que utilize un timer, parara en dicha  call a settimer. Ojo no todos los settimer estaran asociaciodos al mensaje de registrar, hay algunos timer necesarios para que el programa realiza trabajos repetitivos necesarios para el buen funcionamiento, por lo que nos fijaremos en cuales son los que nos interesa deshabilitar y cuales no nos interesa por tener otra función encomendada. Por ejemplo hay un settimer que vamos a pasar por el cada vez que querramos ver un menú, a este le quitamos el BP de interrupción para que nos deje manejar el programa.

Si nos fijamos en la composición de los parametros que se le pasan a la función SetTimer que los podemos ver en el Stack cuando se va ajecutar el call a la Api, vemos que son 4 parametros.

Antes del call al SetTimer, tenemos 4 ordenes PUSH con distintos valores, y en el 2º push es en el que se le introduce el valor de milisegundos a procesar, asi que se le pone un BP con F2 en dicho segundo PUSH, para encontrar el ó los SetTimer que se utilizan para contar los 7 minutos aproximadamente, pues en ese 2º push, tenemos que cambiarle al valor 0 para que no se ejecute el OnTimer.

Para cambiarle el valor, si tienes lugar para un par de bytes, puedes ponerle directamente PUSH 0, pero si solo tienes un byte, por ejemplo un PUSH EAX, que utiliza solo un byte con el valor 50, tienes que subir hasta donde EAX coge el valor, para cambiarlo a valor 0, asi llegará al PUSH EAX = 0.

por ejemplo:

005BCBE3  |.  6A 00                PUSH 0                                             ; /Timerproc = NULL
005BCBE5  |.  8B45 FC            MOV EAX,DWORD PTR [EBP-4]        
005BCBE8  |.  0FB640 3E         MOVZX EAX,BYTE PTR [EAX+3E]      
005BCBEC  |.  69C0 E8030000 IMUL EAX,EAX,3E8                          
005BCBF2  |.  50                     PUSH EAX                                       ; |Timeout
005BCBF3  |.  6A 03                PUSH 3                                           ; |TimerID = 3
005BCBF5  |.  8B45 FC            MOV EAX,DWORD PTR [EBP-4]        
005BCBF8  |.  8B40 58            MOV EAX,DWORD PTR [EAX+58]    
005BCBFB  |.  50                    PUSH EAX                                       ; |hWnd
005BCBFC  |.  E8 0707E5FF     CALL <JMP.&user32.SetTimer>         ; \SetTimer


como ves el 2º PUSH, introduce el valor Timeout =Intervalo en milisegundos
y solo utiliza un byte ( 50 = PUSH EAX )
ahí no podemos poner PUSH 0 ( que equivaldria a 6A 00  porque pisariamos el siguiente codigo con lo que daria error la función ),
entonces en la linea superior tenemos que EAX coge su valor al multiplicarse por 3E8 (1000 en decimal), ahí si podemos modificar para que el valor de EAX se multiple por 0, con lo que siempre tendremos en PUSH EAX, el intervalo 0.

#113
Ingeniería Inversa / Re: decopilar exe
31 Mayo 2010, 08:47 AM
:) de nada; me parecio una buena causa, y que te seria util para tu trabajo o estudios.

:D
#114
Ingeniería Inversa / Re: decopilar exe
31 Mayo 2010, 02:34 AM
vale ya te entiendo, que hace unas comprobaciones que no existen.

prueba con con este http://www.mediafire.com/?ntqjmutnamm (que lleva unos arreglitos).

tienes que tener en cuenta que para que te funcione, el usb con la carpeta \bin y la \data tienen que ser la ultima unidad usb que conectes al pc.

para que lo entiendas, si conectas el usb con el programa y el pc le asigna la letra F, y luego conectas otro dispositivo usb y el PC le asigna una nueva letra de unidad por ejemplo la H, el programa buscara las carpetas en esa última unidad conectada.


#115
Ingeniería Inversa / Re: decopilar exe
30 Mayo 2010, 14:37 PM
si tienes el programa de instalacion original, puedes controlar la instalación en el PC con el "VMware ThinApp 4.0", y al finalizar puedes crear un programa portable, que puedes copiar y ejecutar en una memoria usb.

buscalo en taringa donde tambien hay manuales del proceso.
#116
Ingeniería Inversa / Re: programita
29 Mayo 2010, 23:25 PM
Ahi estas dentro del procedimiento "HandleMessage", en ese momento continuas con F8 hasta pasar el Retn de 004FFF70 y despues segun la ventana del Stack, vas a retornar a 0050028A y a su salida retornaras a 0066BEDC (en las dos call anteriores a estas direcciones de retorno se llama al procedimiento "run" que es muy comun durante todo el proceso del ejecutable, por lo que creo que si sigues por ahi vas a terner que tracear muchos bucles hasta volver a continuación de la call que ejecutó el procedimiento "timertimer" que es el que te muestra el mensaje de regristrar.

Asi que vamos a centrarnos en los datos que nos da olly cuando tengamos parado el programa en el comienzo del procedimiento TimerTimer, pones un BreakPoint con F2, en 0065F25C.
Cuando este ahí parado, fijate en el registro ESP, y en su puntero del Stack, que te dirá la dirección de Retorno, (fijate en la imagen que puse antes de ejemplo).


#117
prueba con el PE Explorer http://www.heaventools.com/ que tambien tiene para sustituir recursos
#118
Ingeniería Inversa / Re: y0da's Crypter v1.x
29 Mayo 2010, 13:48 PM
prueba con el debugger ollydbg http://www.ollydbg.de/odbg110.zip
a ver que te dice.

(para el olly le puedes añadir plugins, entre los que está el  "OllyScript" que se utiliza para correr los script de ayuda para encontrar el OEP y desempacar, puedes probar con el script "y0da_crypter_1.2.osc")

#119
Ingeniería Inversa / Re: programita
29 Mayo 2010, 13:21 PM
#120
Ingeniería Inversa / Re: programita
29 Mayo 2010, 11:50 AM
en ese codigo, todavia estás fuera del codigo principal del programa, porque estás en el modulo USER32 (librerias de windows), tienes que seguir traceando pulsando F8 hasta volver a caer en el modulo con el nombre del programa, fijate en la barra de titulo del Olly que te informa en que modulo estás.
En esa posición actual dentro del USER32, si pulsas Alt+F9 el olly debe parar al volver al modulo desde donde se llamó a la call principal.