Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: Badcode en 20 Octubre 2003, 17:08 pm



Título: en busca del breakpoint adecuado...
Publicado por: Badcode en 20 Octubre 2003, 17:08 pm
Bueno para empezar, no soy de los que buscan las respuestas,  sin haber antes intentado llegar a ellas, yo  solo quisiera haceros una  preguntae para que mas o menos me haga una idea, resulta que tengo un programa llamado "mp3 cd converter", este programa presenta la dificultad de que no te lleva al mensaje ese que anuncia que hay que registrarlo, es que ese mensaje buscandolo ni aparece, entonces me pregunto, que tecnica se podia mirar para seguir intentandolo?

bueno una vez el programa pide el registro, hay uans funciones como estas.

00469A30  |. FF15 6C114700  CALL DWORD PTR DS:

aqui esta llamando al serial?

00469A36  |. F645 D0 01     TEST BYTE PTR SS:[EBP-30],1

esto de test lo comprueba?

00469A3A     74 11     JE SHORT MP3CDCon.00469A4D

aqui es su condicional?

Bueno igual estoy diciendo paridas, pero es lo poco que creo saber aparte que poco a poco miro mas de emsamblador



Título: Re:en busca del breakpoint adecuado...
Publicado por: Dyablo Poeta en 20 Octubre 2003, 17:17 pm
holas! badcode, a ver busca y prueba metiendo un breakpoint en la api GetWindowTextA o si no en GetDItemtextA , a ver si rompe en algunas d ellas , si es asi ya solo t resta tracear... suerte  :P


Título: Re:en busca del breakpoint adecuado...
Publicado por: byebye en 20 Octubre 2003, 17:18 pm
bueno ese call puede que sea o no, entra en el y mira quer hace, o modifica el salto a ver que pasa.


Título: Re:en busca del breakpoint adecuado...
Publicado por: Badcode en 20 Octubre 2003, 17:40 pm
Citar
a ver busca y prueba metiendo un breakpoint en la api GetWindowTextA o si no en GetDItemtextA

dyablo poeta no aparecen esas apis, es curioso..., le dado a ctrl+n y no aparecen


Citar
bueno ese call puede que sea o no, entra en el y mira quer hace, o modifica el salto a ver que pasa.

una vez se ejecuta esa call pide el registro,el programa solo avanza si pasas de registrarte, he modificado el "je short" por "jne short" a estas instrucciones le siguen estas otras,

00469A3C     0FB745 D4      MOVZX EAX,WORD PTR SS:[EBP-2C]
00469A40     EB 0E          JMP SHORT MP3CDCon.00469A50
00469A42  |> 803E 20        /CMP BYTE PTR DS:[ESI],20
00469A45  |.^76 D8          |JBE SHORT MP3CDCon.00469A1F
00469A47  |. 46             |INC ESI
00469A48  |. 8975 8C        |MOV DWORD PTR SS:[EBP-74],ESI
00469A4B  |.^EB F5          \JMP SHORT MP3CDCon.00469A42
00469A4D  |> 6A 0A          PUSH 0A
00469A4F  |. 58             POP EAX
00469A50  |> 50             PUSH EAX
00469A51  |. 56             PUSH ESI
00469A52  |. 53             PUSH EBX
00469A53  |. 53             PUSH EBX                                 ; /pModule
00469A54  |. FF15 68114700  CALL DWORD PTR DS:[<&KERNEL32.GetModuleH>; \GetModuleHandleA
00469A5A  |. 50             PUSH EAX
00469A5B  |. E8 94000000    CALL MP3CDCon.00469AF4
00469A60  |. 8945 98        MOV DWORD PTR SS:[EBP-68],EAX
00469A63  |. 50             PUSH EAX                                 ; /status
00469A64  |. FF15 BC184700  CALL DWORD PTR DS:[<&MSVCRT.exit>]       ; \exit
00469A6A  |. 8B45 EC        MOV EAX,DWORD PTR SS:[EBP-14]
00469A6D  |. 8B08           MOV ECX,DWORD PTR DS:[EAX]
00469A6F  |. 8B09           MOV ECX,DWORD PTR DS:[ECX]
00469A71  |. 894D 88        MOV DWORD PTR SS:[EBP-78],ECX
00469A74  |. 50             PUSH EAX
00469A75  |. 51             PUSH ECX
00469A76  |. E8 2D000000    CALL <JMP.&MSVCRT._XcptFilter>
00469A7B  |. 59             POP ECX
00469A7C  |. 59             POP ECX
00469A7D  \. C3             RETN


gracias.


Título: Re:en busca del breakpoint adecuado...
Publicado por: Badcode en 20 Octubre 2003, 17:54 pm
solo dandole al trace se queda aqui

00469A08  |> 46             /INC ESI
00469A09  |. 8975 8C        |MOV DWORD PTR SS:[EBP-74],ESI
00469A0C  |. 8A06           |MOV AL,BYTE PTR DS:[ESI]
00469A0E  |. 3AC3           |CMP AL,BL
00469A10  |. 74 04          |JE SHORT MP3CDCon.00469A16
00469A12  |. 3C 22          |CMP AL,22
00469A14  |.^75 F2          \JNZ SHORT MP3CDCon.00469A08



Título: Re:en busca del breakpoint adecuado...
Publicado por: byebye en 20 Octubre 2003, 18:22 pm
bien eso es un bucle,pero que mueve de esi a al? ¿y que contiene al y bl? eso lo tienes que ver tu aunque pongas codigo solo se puede suponer.


Título: Re:en busca del breakpoint adecuado...
Publicado por: Dyablo Poeta en 20 Octubre 2003, 18:29 pm
ey badcode no quiero kitarte la emocion pero estoy viendo el mp3 cd converte intenta ponerle un breakpoint en la api  MSVCRT._mbscmp luego intenta registrarte y tendra lo anhelado j3j3j3...



Título: Re:en busca del breakpoint adecuado...
Publicado por: Badcode en 21 Octubre 2003, 09:44 am
Bueno Dyablo poeta le puse un keygen al asunto para ver si luego podia ver cambios, no vi nada jejeje, ahora lo malo sera que para probar lo me has dicho tendria que pedirme el registro y no lo pide, se a registrado, estoy bsucando un programa para monitorizar los registros, ahora le pase el regcleaner y haber si me deja instalarlo de nuevo y asi poder ponerle breakpoint aqui  no ?

00469B28  |. FF15 F4184700  CALL DWORD PTR DS:[<&MSVCRT._setmbcp>]   ; \_setmbcp

por cierto si es aqui que funcion tiene msvcrt?


Citar
bien eso es un bucle,pero que mueve de esi a al? ¿y que contiene al y bl? eso lo tienes que ver tu aunque pongas codigo solo se puede suponer.

podia ser el serial......




Título: Re:en busca del breakpoint adecuado...
Publicado por: byebye en 21 Octubre 2003, 10:12 am
Citar
por cierto si es aqui que funcion tiene msvcrt?

es la libreria donde se encuentra la funcion.

Citar
podia ser el serial......

si antes de usar el keygen hicieses lo que dijo dyablo poeta....... tendrias tu serial en los morros.

puedes poner un bpx en CreateFile o en RegOpenKey para ver si lee de algun archivo o del registro que efectivamente estas registrado.por lo general si es de un archivo con borrarlo te volvera a pedir que lo registres y si es del registro con borrarle los valores lo mismo.


Título: Re:en busca del breakpoint adecuado...
Publicado por: Badcode en 21 Octubre 2003, 10:53 am
Citar
puedes poner un bpx en CreateFile o en RegOpenKey para ver si lee de algun archivo o del registro que efectivamente estas registrado

no entiendo eso que dicie, eso se hace con el olly o es un comando de windows?

Citar
si antes de usar el keygen hicieses lo que dijo dyablo poeta....... tendrias tu serial en los morros.

quiere decir que la instruccion que me dio donde debia de poner breakpoint  me daba el serial?.

pues he desinstalado y he pasado limpiadores del registro y vuelvo a instalar y me sale ya registrado, aparte decir que el programa es lo de menos, lo he cogido a boleo para practica.

saludos.





Título: Re:en busca del breakpoint adecuado...
Publicado por: byebye en 21 Octubre 2003, 11:19 am
Citar
no entiendo eso que dicie, eso se hace con el olly o es un comando de windows?

hombre si estas depurando el programa ¿donde crees que lo pondras? bpx=breakpoint.

Citar
quiere decir que la instruccion que me dio donde debia de poner breakpoint  me daba el serial?.

de pleno


Título: Re:en busca del breakpoint adecuado...
Publicado por: Badcode en 21 Octubre 2003, 11:57 am
Citar
hombre si estas depurando el programa ¿donde crees que lo pondras? bpx=breakpoint.

y yo pensando en el reg de windows, vale pues haber si me deshago de lo registrado, por cierto en el olly hay manera de buscar por ejemplo esto :[<&MSVCRT._setmbcp>]  


Título: Re:en busca del breakpoint adecuado...
Publicado por: byebye en 21 Octubre 2003, 12:29 pm
Citar
por cierto en el olly hay manera de buscar por ejemplo esto :[<&MSVCRT._setmbcp>]  

que quieres decir con esto? para poner un bpx ctrl + n y lo buscas, una vez encontrado: con el boton secundario set breakpoint on every reference, para buscar referencias a la funcion sobre ella presiona enter.

mira acabo de mirar el programa, para que te pida otra vez el registro borra el archivo RKACCUBURN.INI, esta en system32.


Título: Re:en busca del breakpoint adecuado...
Publicado por: Badcode en 21 Octubre 2003, 13:12 pm
00469B28  |. FF15 F4184700  CALL DWORD PTR DS:[<&MSVCRT._setmbcp>]   ; \_setmbcp
00469B2E  |. 59             POP ECX
00469B2F  |> 6A 01          PUSH 1
00469B31  |. 58             POP EAX
00469B32  \. C2 0800        RETN 8
00469B35   . E9 00000000    JMP MP3CDCon.00469B3A
00469B3A   > 68 00060000    PUSH 600
00469B3F   . 6A 00          PUSH 0
00469B41   . E8 C6FFFFFF    CALL MP3CDCon.00469B0C
00469B46   . A2 482D6600    MOV BYTE PTR DS:[662D48],AL
00469B4B   . C3             RETN
00469B4C   $-FF25 C8174700  JMP DWORD PTR DS:[<&MFC42.#1576>]        ;  MFC42.#1576

si es aqui donde debia de llegar?,el serial esta ams adelante?

Jaja que lios me monto, bueno ya estamos en el final.


Título: Re:en busca del breakpoint adecuado...
Publicado por: byebye en 21 Octubre 2003, 13:31 pm
Citar
si es aqui donde debia de llegar?,el serial esta ams adelante?

no se tu sabras, tu pantalla la ves tu. los demas no podemos verla. pero fijate en que funcion estas poniendo los bpx pq esa no es la que te dijo DYABLO POETA, a si que no se en que parte del programa andaras.


Título: Re:en busca del breakpoint adecuado...
Publicado por: Badcode en 21 Octubre 2003, 23:55 pm
0042ED28   . FF15 04194700  CALL DWORD PTR DS:[<&MSVCRT._mbscmp>]    ; \_mbscmp
0042ED2E   . 83C4 08        ADD ESP,8
0042ED31   . 85C0           TEST EAX,EAX
0042ED33     74 42          JE SHORT(AQUI JNE) MP3CDCon.0042ED77
0042ED35     6A 40          PUSH 40
0042ED37   . 68 94000000    PUSH 94
0042ED3C   . E8 AF090000    CALL MP3CDCon.0042F6F0

Bueno ya esta, como mola esta rompedura de bola, bueno ahi donde ponia je, puse jne y bingo acepto mi serial ......., que bueno jajaja , detodas formas una pregunta, el ini ese donde va el serial lo podria cambiar a mi memdia no?,y gracias por el interes, seguire calentandome la cabeza con mas ejemplos antes de intentarlo yo por mi cuenta.......


Título: Re:en busca del breakpoint adecuado...
Publicado por: byebye en 22 Octubre 2003, 00:03 am
Citar
el ini ese donde va el serial lo podria cambiar a mi memdia no?

¿que quieres cambiar del ini?. por otra parte..... bien ya lo tienes pero..... fijate un poco mas arriba, esto:

0042F522   .  50            PUSH EAX                                 ; /s2
0042F523   .  51            PUSH ECX                                 ; |s1
0042F524   .  FFD3          CALL EBX                                 ; \_mbscmp

mira que tiene eax y que tiene ecx.... no comments



Título: Re:en busca del breakpoint adecuado...
Publicado por: Badcode en 22 Octubre 2003, 00:27 am
Citar
0042F522  .  50            PUSH EAX                                ; /s2
0042F523  .  51            PUSH ECX                                ; |s1
0042F524  .  FFD3          CALL EBX                                ; \_mbscmp


Potato buscandolo me sale esto

0042F51D   . 5E             POP ESI
0042F51E   . B8 01000000    MOV EAX,1
0042F523   . 5D             POP EBP
0042F524   . 64:890D 000000>MOV DWORD PTR FS:[0],ECX

Como es que no me sale lo mismo que a ti?

por cierto que os hacia pensar que estaba ahi, porque esa funcion(mbscmp) trabaja el registro?, estudiare las apis....


Título: Re:en busca del breakpoint adecuado...
Publicado por: byebye en 22 Octubre 2003, 00:43 am
no tienes que buscar nada, en las lineas que pusiste cuando invertiste el salto 2 mas arriba le pasa los parametros a la funcion siendo 1 el serial que tu pusiste y el otro imaginatelo.

Citar
por cierto que os hacia pensar que estaba ahi, porque esa funcion(mbscmp) trabaja el registro?,

el registro no tiene nada que ver, vuelve a la explicacion que te  da dyablo poeta y abre los ojos.


Título: Re:en busca del breakpoint adecuado...
Publicado por: Badcode en 22 Octubre 2003, 01:40 am
si puedo ver mi codigo de registro en varios lugares,el que no veo es el name,luego la intuicion te la da los pasos que vas dando, bueno ya se un poco mas, gracias........