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

#121
Ingeniería Inversa / Re: programita
28 Mayo 2010, 04:53 AM
;) pronto estará el tute, pero como ana6 está aprendiendo a hacer su primer debugging para arreglar fallos de programación, primero le he puesto solo las imágenes para que vaya interpretando que es lo que ven sus ojos, y que su imaginación vuele libre, ... :D.

Además para completarlo, como ana6 si tiene mochilas bluetooth nos tiene que decir con los datos que ya tiene, cual ó cuales son las call que inician el procedimiento "timertimer" una vez transcurre un tiempo de ejecución.

#122
Ingeniería Inversa / Re: programita
27 Mayo 2010, 09:57 AM
los controles Timer (tiempo), cuando se producen en este programa ejecutan el evento TimerTimer, dentro de ese evento como puedes ver no tenemos ningun salto que evite el mensaje de registrar, asi que hay que buscar el salto antes de que se produzca el evento TimerTimer, para evitar este evento.

Una manera facil de pillar donde esta la call que llama al evento TimerTimer, es ver donde regresamos despues de terminar el RETN envento. Asi que pones un BP (con F2) en el Retn de salida del TimerTimer que está en 0065F35F, con esto paras el programa cuando corra en dicha linea de código, continuas traceando con F7, y cuando caigas en un código que justo en la linea anterior tengas una call, ese es el retorno de la call encargada de ejecutar el evento, asi que miras un poco mas arriba que tienes que tener una comprobación y un salto condicional que puede evitar la call que llama al evento timertimer.

Dime donde se encuentra esa call, y termino el minimanual que he comenzado.
#123
Ingeniería Inversa / Re: programita
26 Mayo 2010, 18:30 PM
Asunto: Tenemos un programa en versión de prueba, en el que al ejectuar el menú "Sender Start" (inicio) a veces nos sale una nag en la que nos dice que no tenemos registrado el transmisor bluetooth que es un dispositivo conectado al USB, y tambien despues de unos minutos de prueba (escasos a nuestro parecer) nos vuelve a salir la nag de aviso y se corta el programa.

Vamos a debuguearlo para corregir posibles fallos de programación y que no nos moleste con las nag (para que tantos avisos, si ya sabemos que es de prueba), y además vamos a hacer que despues de los minutos escasos de prueba, siga funcionando, pues tenemos que probarlo exprimiendo todas sus posibilidades, para saber si realmente cumple con el fin que interesa darle.

Herramientas:


1º Debemos saber si está empacado y en que lenguaje de programación esta hecho, para saber que herramientas debemos utilizar, para el debugger.

Utilizamos un analizador por si está empacado el programa: en este caso he utilizado varios conocidos, Peid, RDG, Die,  pero el Exeinfo PE by A.S.L., es el que mejor me ha informado en este caso, que se trata de un Delphi versión 2010, y que no está empacado.
http://www.exeinfo.xwp.pl/



Seguimos atando cabos: Como Delphi permite de manera sencilla ejecutar trozos de código en respuesta a acciones o eventos (sucesos) que ocurren durante el tiempo que un programa se ejecuta. Por ejemplo, cuando se presiona un botón, la VCL captura la notificación estándar de windows, y detecta si hay algún método asociado al evento OnClick del botón. Si lo hay, manda ejecutar dicho método. Así que vamos a buscar los procedimientos asociados a los controles que nos interesan.

Hemos observado que la nag se muestra al pulsar el menú Start y despues de un tiempo de uso, tenemos dos controles que nos interesa debugguear al iniciarse el evento asociado a dichos controles. Así que vamos a utilizar un editor de recursos, para que nos de información al respecto.

En este caso he utilizado el eXeScope, y miramos en los controles del formulario MAIN (que es principal en inglés, es muy común en programación utilizar los nombres en ingles), pero puede ser cualquier otro que se le haya ocurrido al programador)



Hemos encontrado el objeto con el Captión del menú  "&Start", que tiene asociado en el evento OnExecute, la función o procedimiento "acSenderStartExcute", de la cual tomamos nota.





(continuará ...)























#124
Ingeniería Inversa / Re: Hackaer Project64
24 Mayo 2010, 16:39 PM
Cita de: tena en 24 Mayo 2010, 00:02 AM
Cita de: LSL en 21 Mayo 2010, 09:56 AM
tena, con el codigo fuente de la versión 1.4 podrias subirnos otro ejecutable configurado y compilado para 500 cheat, es para compararlo con el que configurastes y compilastes para 3000 cheat.
Que al proceder ambos de tu mismo compilador, las diferencias serán mas concretas, y podremos encontrar mas facilimente donde reserva o asigna memoria para cargar los cheat.

Para luego intentar trasladarlo a las versiones superiores.

Creo que te refieres a Karmany, el fue el quien compilo el de 3000 cheats..

slds
es verdad me refiero a Karmany, que despiste el mio ... ;)
#125
gracias por el aporte,

pero prueba el dUP - diablo2oo2's Universal Patcher  (seguro que te va a gustar mas y tienes mas posibilidades para crear distintos parches ó loaders, asi como utilizar plantillas personalizadas de skins, creadas con el Resource Hacker).
#126
Ingeniería Inversa / Re: programita
24 Mayo 2010, 09:40 AM
todavia no esta resuelto el asunto:

el salto de la dirección 0065838B no es el salto que hay que parchear, cuando sale del formulario de registro, si pulsamos en el botón OK sale AL con el valor 1, y al comprobarlo con TEST AL,AL, al ser distinto a 0 la flag Zero la deja desactivada con el valor 0,  y en el JE no salta para efectuar el proceso de verificación de la key, y si en cambio salimos de formulario pulsando el botón Cancelar, sale AL con el valor 0 y al comprobar su valor con TEST AL,AL si es cero cambia la flag Zero a 1 (activada) y entonces el JE si salta, pero en este caso solo para evitar el codigo de registro al ser innecesario verificar nadada ya que le hemos dicho al programa que cancele los cambios.

00658384   .  E8 BBDDE5FF           CALL TextBlue.004B6144            ;  aqui muestra la ventana de registro y espera al serial
00658389   .  84C0                  TEST AL,AL
0065838B   .  0F84 BF000000         JE TextBlue.00658450


Total en este sitio es ir traceando con con F7 cuando queremos entrar en las call en varios niveles y F8 cuando no queremos, para no hacer interminable el traceo, y ver si por alguna de las ventanas del olly nos sale el codigo de chico bueno.

Si por aqui no consigues el codigo bueno, mira el codigo que te puse en la pagina anterior que si en tu programa pasas por la dirección del offset 0065f177, tienes un salto JE que te lleva a "Licensed" ó a "Not Licensed", que es este

0065F175  |.  84C0                  |TEST AL,AL
0065F177  |.  74 15                 |JE SHORT TextBlue.0065F18E
0065F179  |.  8D45 E8               |LEA EAX,[LOCAL.6]
0065F17C  |.  E8 7FF3F7FF           |CALL TextBlue.005DE500        ; llamada a "Lincesed"
0065F181  |.  8B55 E8               |MOV EDX,[LOCAL.6]
0065F184  |.  8D45 F8               |LEA EAX,[LOCAL.2]
0065F187  |.  E8 CC85DAFF           |CALL TextBlue.00407758
0065F18C  |.  EB 13                 |JMP SHORT TextBlue.0065F1A1
0065F18E  |>  8D45 E4               |LEA EAX,[LOCAL.7]
0065F191  |.  E8 CEF3F7FF           |CALL TextBlue.005DE564        ; llamada a "Not Licensed"



reinicia el programa, pon un BP con F2 en la dirección 0065F177, si para el programa en el, pulsas el espaciador, reemplazas el "JE SHORT TextBlue.0065F18E" con NOP (con esto verás que el codigo hexadecimal 74 15 cambiará a 90 90), pulsas intro y despues escape para no modificar la siguiente linea, ahora sigues con run F9 con lo que lo forzamos a entrar en la call de "Licensed", y despues comprueba si en el programa dicho camino ha producido algun efecto beneficioso.

#127
Ingeniería Inversa / Re: programita
23 Mayo 2010, 11:18 AM
ana6, vuelve a leer mi post anterior, que te pongo instrucciones mas detalladas y corregida la dirección del BP para que pares el programa cuando coge el serial introducido, que te puse antes la del inicio del formulario.

el que te coge la MAC 111111111111, seguramente es porque no tienes un bluetooth de la marca y modelos que ellos venden con el programa, pero tracea a partir de la direccion 00658389, entrando en esas call que se ven abajo, en la forma que te he puesto en el post anterior.

00658330   $  55                    PUSH EBP
00658331   .  8BEC                  MOV EBP,ESP
00658333   .  B9 06000000           MOV ECX,6
00658338   >  6A 00                 PUSH 0
0065833A   .  6A 00                 PUSH 0
0065833C   .  49                    DEC ECX
0065833D   .^ 75 F9                 JNZ SHORT TextBlue.00658338
0065833F   .  51                    PUSH ECX
00658340   .  53                    PUSH EBX
00658341   .  56                    PUSH ESI
00658342   .  57                    PUSH EDI
00658343   .  8BD8                  MOV EBX,EAX
00658345   .  33C0                  XOR EAX,EAX
00658347   .  55                    PUSH EBP
00658348   .  68 96846500           PUSH TextBlue.00658496
0065834D   .  64:FF30               PUSH DWORD PTR FS:[EAX]
00658350   .  64:8920               MOV DWORD PTR FS:[EAX],ESP
00658353   .  8D45 F4               LEA EAX,DWORD PTR SS:[EBP-C]
00658356   .  E8 AD6FF8FF           CALL TextBlue.005DF308
0065835B   .  8B55 F4               MOV EDX,DWORD PTR SS:[EBP-C]
0065835E   .  8D45 F8               LEA EAX,DWORD PTR SS:[EBP-8]
00658361   .  E8 F2F3DAFF           CALL TextBlue.00407758
00658366   .  8B45 F8               MOV EAX,DWORD PTR SS:[EBP-8]
00658369   .  50                    PUSH EAX
0065836A   .  8D45 EC               LEA EAX,DWORD PTR SS:[EBP-14]
0065836D   .  E8 166FF8FF           CALL TextBlue.005DF288
00658372   .  8B55 EC               MOV EDX,DWORD PTR SS:[EBP-14]
00658375   .  8D45 F0               LEA EAX,DWORD PTR SS:[EBP-10]
00658378   .  E8 DBF3DAFF           CALL TextBlue.00407758
0065837D   .  8B45 F0               MOV EAX,DWORD PTR SS:[EBP-10]
00658380   .  8D4D FC               LEA ECX,DWORD PTR SS:[EBP-4]
00658383   .  5A                    POP EDX
00658384   .  E8 BBDDE5FF           CALL TextBlue.004B6144            ;  aqui muestra la ventana de registro y espera al serial
00658389   .  84C0                  TEST AL,AL                                    ; aqui ponemos el BP para parar despues de coger el serial
0065838B   .  0F84 BF000000         JE TextBlue.00658450
00658391   .  8B83 DC030000         MOV EAX,DWORD PTR DS:[EBX+3DC]
00658397   .  BA B0846500           MOV EDX,TextBlue.006584B0         ;  UNICODE "DONGLES_MAC"
0065839C   .  E8 5BE1F4FF           CALL TextBlue.005A64FC
006583A1   .  50                    PUSH EAX
006583A2   .  8B83 98030000         MOV EAX,DWORD PTR DS:[EBX+398]
006583A8   .  E8 0B6CE4FF           CALL TextBlue.0049EFB8
006583AD   .  8B50 20               MOV EDX,DWORD PTR DS:[EAX+20]
006583B0   .  8D45 DC               LEA EAX,DWORD PTR SS:[EBP-24]
006583B3   .  E8 D807DDFF           CALL TextBlue.00428B90
006583B8   .  8D55 DC               LEA EDX,DWORD PTR SS:[EBP-24]
006583BB   .  58                    POP EAX
006583BC   .  E8 BF95EDFF           CALL TextBlue.00531980
006583C1   .  8B83 DC030000         MOV EAX,DWORD PTR DS:[EBX+3DC]
006583C7   .  BA D4846500           MOV EDX,TextBlue.006584D4         ;  UNICODE "DONGLES_KEY"
006583CC   .  E8 2BE1F4FF           CALL TextBlue.005A64FC
006583D1   .  50                    PUSH EAX
006583D2   .  8D45 CC               LEA EAX,DWORD PTR SS:[EBP-34]
006583D5   .  8B55 FC               MOV EDX,DWORD PTR SS:[EBP-4]
006583D8   .  E8 B307DDFF           CALL TextBlue.00428B90
006583DD   .  8D55 CC               LEA EDX,DWORD PTR SS:[EBP-34]
006583E0   .  58                    POP EAX
006583E1   .  E8 9A95EDFF           CALL TextBlue.00531980
006583E6   .  33D2                  XOR EDX,EDX
006583E8   .  55                    PUSH EBP
006583E9   .  68 2C846500           PUSH TextBlue.0065842C
006583EE   .  64:FF32               PUSH DWORD PTR FS:[EDX]
006583F1   .  64:8922               MOV DWORD PTR FS:[EDX],ESP
006583F4   .  8B83 DC030000         MOV EAX,DWORD PTR DS:[EBX+3DC]
006583FA   .  E8 09E1F4FF           CALL TextBlue.005A6508
006583FF   .  8B83 DC030000         MOV EAX,DWORD PTR DS:[EBX+3DC]
00658405   .  E8 72A2EDFF           CALL TextBlue.0053267C
0065840A   .  8B83 98030000         MOV EAX,DWORD PTR DS:[EBX+398]
00658410   .  E8 A36BE4FF           CALL TextBlue.0049EFB8
00658415   .  8B40 08               MOV EAX,DWORD PTR DS:[EAX+8]
00658418   .  8B4D FC               MOV ECX,DWORD PTR SS:[EBP-4]
0065841B   .  33D2                  XOR EDX,EDX
0065841D   .  8B18                  MOV EBX,DWORD PTR DS:[EAX]
0065841F   .  FF53 20               CALL NEAR DWORD PTR DS:[EBX+20]
00658422   .  33C0                  XOR EAX,EAX
00658424   .  5A                    POP EDX
00658425   .  59                    POP ECX
00658426   .  59                    POP ECX
00658427   .  64:8910               MOV DWORD PTR FS:[EAX],EDX
0065842A   .  EB 24                 JMP SHORT TextBlue.00658450
0065842C   .^ E9 E3D5DAFF           JMP TextBlue.00405A14
00658431      01                    DB 01
00658432      00                    DB 00
00658433      00                    DB 00
00658434      00                    DB 00
00658435   .  DCF34000              DD TextBlue.0040F3DC
00658439   .  3D846500              DD TextBlue.0065843D
0065843D   .  8B15 B8136700         MOV EDX,DWORD PTR DS:[6713B8]     ;  TextBlue.006772EC
00658443   .  8B12                  MOV EDX,DWORD PTR DS:[EDX]
00658445   .  92                    XCHG EAX,EDX
00658446   .  E8 3981EAFF           CALL TextBlue.00500584
0065844B   .  E8 F0D8DAFF           CALL TextBlue.00405D40
00658450   >  33C0                  XOR EAX,EAX

---------------------------------------------------------------------------

P.D. para yako, a mi tambien me da el error de memoria, porque cuando llegas a
006583AD   .  8B50 20               MOV EDX,DWORD PTR DS:[EAX+20]

en el DS a copiar a EDX no hay una direccion de memoria valida, abajo te sale ???
esto es despues de comprobar la MAC de la dongle.

#128
en un post de otro hilo cercano, MCKSys Argentina, me ha dejado su archivo de signaturas externas para el peid, prueba con ellas, a ver que te dice del packer de tu programa.



#129
para monitorizar ficheros, el filemon
y para registros, el regmon

o el Process Monitor, que es una combinación de los dos

los puedes encontrar en http://www.ech2004.net/
#130
Ingeniería Inversa / Re: programita
23 Mayo 2010, 06:56 AM
ana6 puedes poner un BP en la dirección 00658389 (que es donde vuelve despues de coger el serail), meter una key de 32 caracteres alfanumericos (en mis pruebas en algun momento comparó el tamaño con 32), pulsar intro y caerá en el BP, a partir de ahí sigue traceando con F7 para entrar en las primeras call y despues sigues con F8 hasta el Ret, luego sigues con F7 para entrar en la siguiente call, y sigues de nuevo con F8 hasta el Ret de nuevo, y asi sucesivamente, a ver si por alguna parte le sale el serial bueno para comparar con el malo introducido.