Cita de: liurap en 15 Agosto 2008, 22:49 PM
Aiba! :O! Es verdad XDD!! Hay q ver lo q puede cambiar un solo signo. . jajaja, muxas asias tena no me habia dao cuenta ahora el code funciona a la perfeccion
Ahi les dejo el crackme; a ver si me dicen cual es la pass correcta
http://rapidshare.com/files/137601522/Crackme_Liu.exe.html
Un saludo
el password es "H4ck3r" sin las comillas
ahora bien vamos lento
la api pues descubre un lugar si esta escrito,
y si esta detectado o no, depende si es un diferente de 0 ,
valor de 1->detectado
valor de 0->no detectado
ahora bien como puede pasarse sin tener que nopearlo el call a exit?
Citar004014C4 |. 85C0 test eax, eax ; |
no es necesario nopear--
cambienlo a
Citar004014C4 33C0 xor eax, eax(colocando espacio o assembler)
bueno haciendo el tutorial para resolverlo
bien dije ya el pass
sale lo siguiente al colocarla
Password: H4ck3r
Access Granted ! Pass:: cooomemel4
Password: cooomemel4
Access Denied
porciacaso jeje
Solucion Crackme de liurap
no sabia que habias puesto un crackme
pero demos la solucion, aprovechando que tengo tiempo
pues tenemos la estructura de un c++
Citar00401220 > $ 55 push ebp
00401221 . 89E5 mov ebp, esp
00401223 . 83EC 08 sub esp, 8
00401226 . C70424 010000>mov dword ptr [esp], 1
0040122D . FF15 0C514000 call dword ptr [<&msvcrt.__set_app_ty>; msvcrt.__set_app_type
00401233 . E8 C8FEFFFF call 00401100
entramos en el call
entramos en un procedimiento que comienza con push ebp
y mas o menos al terminar se ve esto
Citar004011E2 |. E8 A9000000 call 00401290
004011E7 |. 89C3 mov ebx, eax ; |
004011E9 |. E8 020A0000 call <jmp.&msvcrt._cexit> ; |[msvcrt._cexit
004011EE |. 891C24 mov dword ptr [esp], ebx ; |
004011F1 |. E8 3A0B0000 call <jmp.&KERNEL32.ExitProcess> ; \ExitProcess
004011F6 |> 894424 04 mov dword ptr [esp+4], eax ; |
004011FA |. 8B15 14514000 mov edx, dword ptr [<&msvcrt._iob>] ; |msvcrt._iob
00401200 |. 8B42 10 mov eax, dword ptr [edx+10] ; |
00401203 |. 890424 mov dword ptr [esp], eax ; |
entrando en ese call , estamos en el procedimiento del crackme
claramente para quien no sabia que pasa ahi, pues comenta que hay otra manera
Citar
00401465 |. C685 DEFEFFFF>mov byte ptr [ebp-122], 72 ; ||
0040146C |. C685 DFFEFFFF>mov byte ptr [ebp-121], 64 ; ||
00401473 |. C685 E0FEFFFF>mov byte ptr [ebp-120], 3A ; ||
0040147A |. C685 E1FEFFFF>mov byte ptr [ebp-11F], 20 ; ||
00401481 |. 8D8D 58FEFFFF lea ecx, dword ptr [ebp-1A8] ; ||
00401487 |. BA 04304000 mov edx, 00403004 ; ||ASCII "Que buscas, cadenas de textos ?? haya otra manera || CRACKME MEDIUM COMPILED BY LIURAP! www.fotolog.com/liurap"
0040148C |. B8 73000000 mov eax, 73 ; ||
00401491 |. 894424 08 mov dword ptr [esp+8], eax ; ||
bueno les explique ayer creo el crackme que habian unos codigos ascii
ahora bien el crackme de ahora requiere que sepan que pasa
sigamos
Citar0040149C |. E8 AF070000 call <jmp.&msvcrt.memcpy> ; |\memcpy
004014A1 |. C785 44FEFFFF>mov dword ptr [ebp-1BC], 17 ; |
004014AB |. C785 40FEFFFF>mov dword ptr [ebp-1C0], 2B ; |
004014B5 |. C785 3CFEFFFF>mov dword ptr [ebp-1C4], 1C ; |
004014BF |. E8 7C080000 call <jmp.&KERNEL32.IsDebuggerPresent>; |[IsDebuggerPresent
004014C4 85C0 test eax, eax
004014C6 |. 74 33 je short 004014FB ; |
004014C8 |. C74424 0C 000>mov dword ptr [esp+C], 0 ; |
004014D0 |. C74424 08 773>mov dword ptr [esp+8], 00403077 ; |ASCII "Liurap dice: "
004014D8 |. C74424 04 883>mov dword ptr [esp+4], 00403088 ; |ASCII "Eyy!! compadreee!! buen intento!; anda, nopeame pa k te deje continuar "
004014E0 |. C70424 000000>mov dword ptr [esp], 0 ; |
004014E7 |. E8 24080000 call <jmp.&USER32.MessageBoxA> ; \MessageBoxA
pues ahi se muestra que hay un mensaje cuando somos detectados, y pues la forma que podemos evitarla es pues evitando que nos detecte
asi que no le haremos caso y no nopearemos
pues cambiaremos a xor eax,eax obligando al salto a saltar
despues buscamos el mensaje malo
normalmente uno supone algunas cosas
pero en este caso todo se ve aqui
00401692 |. 894424 04 |mov dword ptr [esp+4], eax ; |
00401696 |. C70424 D23040>|mov dword ptr [esp], 004030D2 ; |ASCII "%c"
0040169D |. E8 FE050000 |call <jmp.&msvcrt.printf> ; \printf
004016A2 |. 8D85 50FEFFFF |lea eax, dword ptr [ebp-1B0]
004016A8 |. FF00 |inc dword ptr [eax]
004016AA |.^ EB CC \jmp short 00401678
004016AC |> C70424 D53040>mov dword ptr [esp], 004030D5 ; |
004016B3 |. E8 E8050000 call <jmp.&msvcrt.printf> ; \printf
004016B8 |. C785 4CFEFFFF>mov dword ptr [ebp-1B4], 0
004016C2 |> 83BD 4CFEFFFF>/cmp dword ptr [ebp-1B4], 0F ; |
uno debe ser el chico bueno y otro el malo
claramente el malo tendra mas de 1 salto normalmente
y pues
004016AC |> \C70424 D53040>mov dword ptr [esp], 004030D5 ; |
este tiene varios saltos
colocamos un bp en cada cmp edx, eax que esta sobre el salto
Citar
00401581 |. 2B85 44FEFFFF sub eax, dword ptr [ebp-1BC] ; |5f- 17-> valor
00401587 |. 39C2 cmp edx, eax ; |comparacion entre el 48 y el de nosotros
00401589 |. 0F85 1D010000 jnz 004016AC ; |
y claramente vemos que 48 es el valor correcto
ahora bien ese 48 representa a la letra H
siguiendo se encontraran con las otras letras
pero primero
eax=00000048
edx=00000061
esta algo asi
cambiamos el valor de edx a 48 para pasar tranquilo
eax=00000048
edx=00000048
seguimos
004015AE |. 2B85 3CFEFFFF sub eax, dword ptr [ebp-1C4] ; |0cf-1c
004015B4 |. 83C0 64 add eax, 64 ; |add 64
004015B7 |. 39C1 cmp ecx, eax ; |cmp 34 v/s mio
004015B9 |. 0F85 ED000000 jnz 004016AC ; |
ahi sacamos el segundo que es 34
y bueno seguimos hacia abajo hasta completar todo
ahora bien todos esos numeros y valores vienen de una tabla
http://www.ascii.cl/es/codigos-html.htm
bueno saludos y espero le sirva como se hacia
bendiciones esta resuelto :-)