elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Mensajes
Páginas: 1 ... 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [41] 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 ... 66
401  Programación / Ingeniería Inversa / Re: crackme 06 by Enko en: 10 Diciembre 2011, 15:23 pm
Muy buena, felicitaciones!!!!



Lo interesante no es tanto el algoritmo que es bastane sencillo, sino crear el serial en si :)

El tema del keygen no es tan complicado, pero hacerlo seria mas complicado que escribir el crackme en si :)

No hay tag de  spoiler en este foro ^^

Saludos.
402  Programación / Ingeniería Inversa / crackme 06 by Enko en: 8 Diciembre 2011, 18:14 pm
Les dejo este keygenme que contiene una rutina de verificacion de licencias bastante particular. (cuando lo analicen, sabrán a lo que me refiero).
Generar llave valida les será particularmente "entretenido".

No contiene ningun tipo de proteccion anti-debug.

Mencion de honor: para el que logre hacer un parche
         mostrando el mensaje correcto.

Medalla de BRONCE: licencia valida.
Medalla de PLATA: licencia valida para  su NICK.
Medalla de ORO: al que genere un keygen valido.



http://www.mediafire.com/?ttc496dzbhf18ht
http://www.megaupload.com/?d=Y5GABYYW
http://dl.dropbox.com/u/51061541/crackme6.7z

Diviertanse y saludos.
403  Programación / Ingeniería Inversa / Re: [Reto] Diofanto's Crackme en: 7 Diciembre 2011, 18:00 pm
peterpunk, el crackme lo hice mitad/mitad. C/Asm

La parte del CRC la hice en asm (practicamente copypast de tu rutina original)
La parte del keygen en si, en C.

Para convertir un FLOAT a su representacion hex de 32 bit tambien tuve que usar asm inline. Usando un puntero y leyendo byte a byte me daba otro resultado.
Aqui el fuente:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <windows.h>
  5.  
  6. unsigned int __stdcall crc_check(char *, unsigned int);
  7. unsigned int __stdcall crc_table();
  8. unsigned int __stdcall _rand(unsigned int);
  9. extern unsigned int randseed;
  10.  
  11.  
  12.  
  13. int main(void)
  14. {
  15. int iCount, tCount;
  16. char serial[]= "1111-";
  17. char user[] = "0000000000000000";
  18. unsigned int kx, k1, k2, k3, k4, k5, r;
  19. float r1,a,b,c;
  20. printf("User: ");
  21. scanf("%s", &user);
  22. randseed = GetTickCount();
  23. crc_table();
  24. kx = crc_check(user, strlen(user));
  25. for(tCount=0; tCount<=10; tCount++){
  26. for(iCount=0; iCount<=3; iCount++)
  27. serial[iCount] = (char) _rand(26);
  28. k1 = (serial[3] * 0x44A8) + (serial[2] * 0x2A4) + (serial[1] * 0x1A) + (serial[0]) ;
  29.  
  30. for(iCount=0; iCount<=3; iCount++)
  31. serial[iCount] += 65;
  32.  
  33. k2 = (kx & 0xFF) + 1;
  34. k3 = ((kx >> 0x10) & 0xFF) + 1;
  35. a = k3; //180
  36. b = k2; //146
  37. c = k1; //33k
  38. r1 =  (-b + sqrt(b * b + 4 * a * c)) / (2 *a);
  39. r1 = sqrt(r1);
  40.  
  41. printf("%s", serial);
  42. __asm{
  43. push eax
  44. mov eax, r1
  45. mov r, eax
  46. pop eax
  47. }
  48.  
  49. printf("%X", r);
  50. printf("\n");
  51. }
  52. system("pause");
  53. return 0;
  54. }
  55.  
Código
  1. include '%fasminc%\win32a.inc'
  2.  
  3. format MS COFF
  4.  
  5. public crc_table as '_crc_table@0'
  6. public crc_check as '_crc_check@8'
  7. public _rand as '__rand@4'
  8. public randseed as '_randseed'
  9.  
  10.  
  11. section '.text' code readable executable
  12.  
  13. proc _rand, range  
  14. mov eax,[range]
  15. imul edx, [randseed], 0x08088405
  16. inc edx
  17. mov [randseed], edx
  18. mul edx
  19. mov eax, edx
  20. ret
  21. endp
  22.  
  23.  
  24. proc crc_table
  25. push esi edi ebx
  26. mov     edi, 0xEDB8832D
  27. inc     edi
  28. xor     ebx, ebx
  29. mov     ecx, table
  30. .crc_start:
  31. movzx   eax, bx
  32. add     eax, eax
  33. mov     dx, 0xFFF7
  34. .first:
  35. test    al, 1
  36. je      .next
  37. shr     eax, 1
  38. xor     eax, edi
  39. jmp     .over
  40. .next:
  41. shr     eax, 1
  42. .over:
  43. inc     dx
  44. jnz     .first
  45. mov     [ecx], eax
  46. inc     ebx
  47. add     ecx, 4
  48. cmp     bx, 0x100
  49. jnz     .crc_start
  50. pop ebx edi esi
  51. ret
  52. endp
  53.  
  54. proc crc_check, user, len    
  55. push esi edi ebx  
  56. mov     ebx, [user]          
  57. mov     esi, [len]          
  58. mov     edi, 0x50554E4B
  59. .crc_start:          
  60. mov     edx, edi              
  61. mov     eax, [ebx]            
  62. and     eax, 0xFF              
  63. xor     al, dl                
  64. mov     eax, [eax*4+table]    
  65. shr     edx, 8                
  66. xor     eax, edx              
  67. mov     edi, eax              
  68. inc     ebx                    
  69. dec     esi                    
  70. jnz     .crc_start
  71. not     edi                    
  72. mov     eax, edi
  73. pop ebx edi esi
  74. ret              
  75. endp
  76.  
  77. section '.data' data readable writeable
  78. randseed dd 0
  79. table dd 0xFF dup ?
  80.  

pd: A... Diofanto, asi la bicuadratica tiene mas sentido con el nombre.

Gracias por el buen crackme, podria ahora hacerlo completamente en asm ya que el problema no era la fpu, sino la resolvente estaba buggeada.
404  Programación / Ingeniería Inversa / Re: Crackme Vol. 4 Por Flamer en: 7 Diciembre 2011, 17:51 pm
yo el creador del crackme ni conel codigo fuente he encontrado un serial valido y nose las respuesta del crackme(no seme enojen por eso pero nose y no sabia que el creador tendria que saber los seriales: nose si sepueda crackear y nose si tenga seriales validos) el boton si se puede parchar pero los seriales nose si hay
Y como pretendes que alguien haga un keygen si no sabes si realmente se puede?

Antes de subir un keygenme deberias minimo tener un serial valido.

adelante, hace un keygen, aqui tienes el fuente:
Citar
if(serial > 0) and (serial < 0) then
   SerialValido()
else
   SerialInvalido()
end;


Saludos.
405  Programación / ASM / Re: Pasar a código ensamblador [Ayuda] en: 6 Diciembre 2011, 13:54 pm
Tampoco puedes escribir codigo en assembly y pensar que cualquier ensamblador te lo tomaria.
Es decir, entre los distintos ensambladores hay ciertas diferencias. Asi que tendras que elegir que ensamblador usaras como back-end de tu compilador.

En EntryPoint estan enlazados:
http://foro.elhacker.net/asm/entry_point-t256455.0.html

cualquiera te serveria, lo unico a resaltar es que con masm32 solo podrias producir ejecutables para windows. Con Nasm/Fasm no tienes esa limitacion.

Saludos.
406  Programación / ASM / Re: [Codigo] Pequeño Servidor HTTP en: 5 Diciembre 2011, 23:38 pm
A... no habia entendido "hilo trabajador"....

QueueUserWorkItem, solo se usa RET. Confirmado :)


Gracias Nuevamente.
407  Foros Generales / Noticias / Re: El futuro de Firefox está en peligro: terminó el contrato que tenía con Google en: 5 Diciembre 2011, 23:33 pm
Lo único postivo es que con estado economico precario, me imagino que terminaran esas tremendas subidas de nros de version con poco cambio visible que no requiere subir todo un numero de version... :silbar:
408  Programación / Ingeniería Inversa / Re: [CRACKME] Crackme 4 por MCKSys Argentina en: 5 Diciembre 2011, 23:21 pm
keygenme en php, solo funciona para usuarios con menos de 5 letras.  :silbar:
Código
  1. <html>
  2. <head>
  3. <title>MCKSys Crackme4 Keygen</title>
  4. </head>
  5. <body>
  6. <form action="#" method="post">
  7. Name: <br>
  8. <input type="text" name="txtName">
  9. <br><br>
  10. <input type="submit" value="generate" name="calc">
  11. </form>
  12. <?php
  13. if(isset($_POST['calc'])){
  14. $name = $_POST['txtName'];
  15. $checksum = 0;
  16. for($i=0; $i<=strlen($name)-1; $i++)
  17. $checksum += ord($name[$i]);
  18. $checksum = (string) $checksum;
  19. $code = "M0C0K0S0y0s0004";
  20. $l = strlen($checksum)-1;
  21. for($i=0; $i<=$l; $i++)
  22. $code[13-($l-$i)*2] = $checksum[$i];
  23. echo($code);
  24. }
  25. ?>
  26. </body>
  27. </html>
  28.  
user: _Enko
pass: M0C0K0S0y4s9024

Saludos.
409  Programación / ASM / Re: [Codigo] Pequeño Servidor HTTP en: 5 Diciembre 2011, 23:20 pm
Hola, la idea es que no es un hilo solo.

Es decir, para cada conexion nueva, se genera un hilo nuevo. Y cuando se desconecta el usuario, creo que tendria que terminar el hilo.

la tecnica es super saturable. 100 peticiones equivaldrian a 100 hilos.

Por eso creo que cada vez que el hilo hace su trabajo, deberia terminarlo.
(Hilo creado con CreateThread)

Citar
Si llama a ExitThread terminas el hilo trabajador ese, mala idea.
con usar ret, el hilo es eliminado?
410  Programación / Ingeniería Inversa / Re: [CRACKME] Crackme 4 por MCKSys Argentina en: 5 Diciembre 2011, 18:21 pm
PD: Como verás con el decompilador, ActionScript es muy parecido a javascript o C.

Hace años he programado bastante con ActionScript, asi que ningun problema ^^

para complicar la cosa y obligar desempacar, tal vez hubiera sido buena idea incluir cabeceras swf por todos lados, tambien se podria tener muchos swf importados en el swf principal.

Saludos.

Páginas: 1 ... 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [41] 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 ... 66
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines