Título: Como poner API IsDebbuggerPresent() en C++! Publicado por: liurap en 15 Agosto 2008, 22:19 pm Ola a todos, me ando bastante loco intentando poner la API IsDebuggerPresent() en un code en c++, peo no me sale :S!! He puesto estO;
if (IsDebuggerPresent()==1); // Un pequeño bache ^^ { MessageBoxA(0,"Eyy!! compadreee!! buen intento; anda, nopeame pa k te deje continuar ;)","Liurap dice: ",MB_ & MB_ICONEXCLAMATION); exit(EXIT_SUCCESS); } La compilacion da exitosa; peo al ejecutarlo normal, es decir, sin ejecutarlo desde un debugger, me salta el mensaje :S! La cuestion es. . no me deberia de ejecutarlo normal sin un debugger ? y cuando estuviese ejecutando un debugger, tal como puede ser el olly x ej. me saltara el mensaje ??! No se si me entienden; un saludo - Liu - Título: Re: Como poner API IsDebbuggerPresent() en C++! Publicado por: tena en 15 Agosto 2008, 22:34 pm if (IsDebuggerPresent()==1); // Un pequeño bache ^^ Pusiste un punto y coma despues del if saludos Título: Re: Como poner API IsDebbuggerPresent() en C++! Publicado por: 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 :D
Ahi les dejo el crackme; a ver si me dicen cual es la pass correcta :D http://rapidshare.com/files/137601522/Crackme_Liu.exe.html Un saludo Título: Re: Como poner API IsDebbuggerPresent() en C++! Publicado por: liurap en 15 Agosto 2008, 22:58 pm Jajaja ahora q me doy cuenta tmb se le puede poner un NOP a la call exit y aki no ha pasado nada jajaj; una nag misericordiosa XDD!
- Liu - Título: Re: Como poner API IsDebbuggerPresent() en C++! Publicado por: apuromafo CLS en 16 Agosto 2008, 02:09 am 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 :D Ahi les dejo el crackme; a ver si me dicen cual es la pass correcta :D 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? Citar 004014C4 |. 85C0 test eax, eax ; | no es necesario nopear-- cambienlo a Citar 004014C4 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 :D! 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++ Citar 00401220 > $ 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 Citar 004011E2 |. 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 Citar 0040149C |. 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 :-) Título: Re: Como poner API IsDebbuggerPresent() en C++! Publicado por: liurap en 16 Agosto 2008, 09:14 am vaya! apuromafo! realmente eres un amo cn el cracking jaja; vaya tiens razon con lo del xor XDD!! well done men ;) asi es lo de access granted pass coooomemel4 era de coña jaaj; la verdadera era H4ck3r XD
En cuanto a lo de IsDebuggerPresent; otras formas x ej. con un SUB EAX, EAX ó CMP EAX, EAX Ambas serian validas tb XD Cuidat ; Un saludo :o - Liu - Título: Re: Como poner API IsDebbuggerPresent() en C++! Publicado por: apuromafo CLS en 16 Agosto 2008, 21:34 pm es que isdebug present como bien decia, pues solo verifica que sea asi
falta solo que salte y listo pero el gran detalle es cuando escribes que haga lo de la api fs bueno no explico porque con el tiempo lo aprenden espero a la proxima coloques de titulo+crackme porque me puse a leer y veo que pusiste un reto que ni sabia que estaba, o hace tiempo ya hubiera caido jeje bueno saludos espero te guste el escrito explicatorio de como encontre el serial :) saludos Apuromafo |