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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Mensajes
Páginas: 1 ... 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 [55] 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 ... 83
541  Foros Generales / Noticias / Re: Iván Cuende, mejor 'hacker' de Europa: "En clase me piden que 'hackee' cuentas.. en: 14 Septiembre 2012, 21:16 pm
Mirar esto, entrevista a los creadores.
http://www.youtube.com/watch?v=PsicUT0UydI
¿Cuantos de aquí le decís ei pi ai a la API de cualquier lado? jajaja , en fin...
Campus party:
http://www.youtube.com/watch?feature=player_embedded&v=OpYkL8Zy2XU#!
¿Cuantas veces dice la edad que tenía?
¿Qué están cambiando el mundo?
 Pf...
542  Foros Generales / Noticias / Re: Iván Cuende, mejor 'hacker' de Europa: "En clase me piden que 'hackee' cuentas.. en: 14 Septiembre 2012, 20:55 pm
¿Cuál es la diferencia entre hacker y cracker?, ¿le molesta el uso equivocado que se hace del término hacker?
Citar
Me molesta mucho. Cada vez que lo veo pienso "esto no, por favor". Es como cuando veo algo escrito en Comic Sans. La diferencia fundamental es que un cracker es un pirata informático es alguien que destruye o, más que destruye, ,que se dedica al tema de la seguridad informática. No como un hacker, que se puede dedicar a programar software de seguridad informática también, pero que puede hacer muchas otras cosas, como por ejemplo programar kernels.

Un comentario de uno en la página con mucha razón , el último parrafo está omitido:
Citar
- Un verdadero hacker no va por la vida diciendo que lo es. La privacidad y el anonimato son obligatorios.

- Un verdadero hacker no se hace publicidad a sí mismo. Sus logros son su publicidad. Y el boca a boca es su oficina de marketing.

- Un verdadero hacker no participa en un concurso público a cara descubierta. Sólo participa en retos que se plateen dentro de la ELITE.

- Un verdadero hacker jamás confiesa públicamente sus fuentes de información. Aquellos que tienen lo que hay que tener, saben perfectamente dónde encontró dicha información, y los que no lo saben, simplemente no la necesitan.

- Un verdadero hácker sabría que alguien que rompe cuentas de Tuenti para que un tercero invada la privacidad ajena, no es un hácker. Es un simple hijodeputa.
543  Programación / Ingeniería Inversa / Re: Reto Septiembre 2012 De Reversing en: 14 Septiembre 2012, 14:18 pm
Hola estoy intentado el simple_KGM , pero es muy complicado , tengo la primera parte ya pasada , es así:
1. Abrimos el simple_KGM y buscamos las apis en el olly , umm GetDlgItemInt y dos GetDlgItemText , bueno pongamos los breakpoints.

2. Coge nuestro ID, y mira si eax es 0 (eax en ese momento es el largo del nombre) , si es 0 va al chico malo,si nó, le resta 0D4h y lo guarda en la memoria [404674]

3. Coge nuestro serial y mira si eax es 0(eax en ese momento es el largo del serial),si es 0 va al chico malo, si nó, lo guarda en [404678]
4. Coge nuestro nombre y mira si eax es 4, si es mas bajo , chico malo, si nó, mira si eax es 20, si es más grande chico malo... De aquí deducimos que nuestro nombre debe tener entre 4 y 20 carácteres , ni más ni menos.Una vez hecho esto va cogiendo cada byte de nuestro nombre y le hace estas operaciones:
Código
  1. MOV EDI,EAX
  2. XOR EDX,EDX
  3. XOR ESI,ESI
  4. MOV ECX,1
  5. LOOP:
  6.       INC EDX
  7.       MOVZX EAX,BYTE PTR DS:[EDX+4042D3]
  8.       CMP EDX,EDI
  9.       XOR EDX,EDX
  10.       ADD EAX,ESI
  11.       SHL EAX,4
  12.       ADD EAX,10001
  13.       PUSH EAX                                ; /Arg1
  14.       CALL 00401283                           ; \Simple_KGM_2.00401283
  15.       ADD ESI,EAX
  16.       INC ECX
  17.       CMP ECX,20
  18. JNE LOOP
  19.  
El call que hay ahí en medio:
Código
  1. PUSH EBP                                 ; Simple_KGM_2.00401283(guessed Arg1)
  2. MOV EBP,ESP
  3. PUSH ECX
  4. MOV EAX,DWORD PTR SS:[ARG.1]
  5. MOV ECX,666
  6. CICLO:  
  7.        ADD EAX,68656865
  8.        ROR EAX,8
  9.        SUB EAX,65686568
  10.        ROL EAX,16
  11.        MOV EBX,EAX
  12.        NOT EAX
  13.        SUB EBX,EAX
  14.        ADC EAX,EBX
  15.        ROR EAX,6
  16. LOOP CICLO
  17. ADD EAX,61733376
  18. XOR EAX,76337361
  19. NOP
  20. NOP
  21. NOP
  22. NOP
  23. NOP
  24. NOP
  25. NOP
  26. AND EAX,0000FFFF
  27. SHL EAX,10
  28. MOV AX,0DEAD
  29. SUB EAX,D00EA00D
  30. POP ECX
  31. LEAVE
  32. RETN 4
  33.  
Después del loop , compara el resultado de todas las operaciones con [404674] , adivinad quien había en la posición de memoria, el valor de nuestro ID -04Dh ,con lo que si hacemos un keygen para eso tendriamos que pedir el nombre , hacer las rutinas de calculo para el ID , y sumarle 04Dh , ya que cuando lo metemos en el programa se lo resta.
Hasta ahí bien , he hecho mitad del keygen para eso, nos pide el nombre y el te calcula el ID:
Código
  1. .386 ; Hace el código compatible con el procesador 386
  2. .MODEL flat,stdcall
  3.  
  4. INCLUDE user32.inc
  5. INCLUDE kernel32.inc
  6. INCLUDE msvcrt.inc
  7. INCLUDELIB user32.lib
  8. INCLUDELIB kernel32.lib
  9. INCLUDELIB msvcrt.lib
  10. ;PARA TENER LOS BUFFERS
  11. __p__iob    PROTO C
  12.  
  13. _iobuf STRUCT
  14.    _ptr        DWORD ?
  15.    _cnt        DWORD ?
  16.    _base       DWORD ?
  17.    _flag       DWORD ?
  18.    _file       DWORD ?
  19.    _charbuf    DWORD ?
  20.    _bufsiz     DWORD ?
  21.    _tmpfname   DWORD ?
  22. _iobuf ENDS
  23.  
  24. FILE TYPEDEF _iobuf
  25.  
  26. ;PROTOTIPOS DE FUNCIONES EN C
  27. EXTRN printf:NEAR
  28. EXTRN fgets:NEAR
  29. EXTRN sscanf:NEAR
  30. EXTRN getchar:NEAR
  31. EXTRN strlen:NEAR
  32. ;PROTOTIPOS DE FUNCIONES EN ASM
  33.  
  34.  
  35.  
  36. .data ;Datos del programa
  37. INGRESA_NOMBRE BYTE "Ingresa tu nombre: ",0
  38. TU_ID_ES   BYTE "Tu ID es: %u",0Ah,0Dh,0
  39. PULSE_TECLA BYTE "Pulse intro para terminar . . .",0
  40. ;ESPECIFICADORES DE FORMATO
  41. ESPI BYTE "%d",0
  42. ESPS BYTE "%s",0
  43. ESPIU BYTE "%u",0
  44. .data?
  45. NOMBRE BYTE  20 DUP (0)
  46. ID     DWORD ?
  47. BUFFER_FGETS BYTE 20 DUP(0)
  48. stdin  DWORD ?
  49. stdout DWORD ?
  50. stderr DWORD ?
  51. .code
  52. rutinaSerial PROC
  53. PUSH EBP
  54. MOV EBP,ESP
  55. PUSH ECX
  56. MOV EAX,[EBP+8]
  57. MOV ECX,666h
  58. CICLO:
  59. ADD EAX,68656865h
  60. ROR EAX,8h
  61. SUB EAX,65686568h
  62. ROL EAX,16h
  63. MOV EBX,EAX
  64. NOT EAX
  65. SUB EBX,EAX
  66. ADC EAX,EBX
  67. ROR EAX,6h
  68. LOOP CICLO
  69. ADD EAX,61733376h
  70. XOR EAX,76337361h
  71. AND EAX,0000FFFFh
  72. SHL EAX,10h
  73. MOV AX,0DEADh
  74. SUB EAX,0D00EA00Dh
  75. POP ECX
  76. leave
  77. ret
  78.  
  79. rutinaSerial endp
  80. .code ;Código del programa
  81. main PROC
  82. ;Buffers
  83. call    __p__iob
  84.    mov     stdin,eax           ; #define stdin  (&__iob_func()[0])
  85.    add     eax,SIZEOF(FILE)
  86.    mov     stdout,eax          ; #define stdout (&__iob_func()[1])
  87.    add     eax,SIZEOF(FILE)
  88.    mov     stderr,eax          ; #define stderr (&__iob_func()[2])
  89.  
  90. ;Inicio código.
  91. push OFFSET INGRESA_NOMBRE
  92. push OFFSET ESPS
  93. call printf
  94. push stdin
  95. push 20
  96. push OFFSET BUFFER_FGETS
  97. call fgets
  98.  
  99. push OFFSET NOMBRE
  100. push OFFSET ESPS
  101. push OFFSET BUFFER_FGETS
  102. call sscanf
  103. push OFFSET NOMBRE
  104.    call strlen
  105. MOV EDI,EAX
  106. XOR EDX,EDX
  107. XOR ESI,ESI
  108. MOV ECX,1
  109. L1:
  110. INC EDX
  111. MOVZX EAX,NOMBRE[EDX-1]
  112. CMP EDX,EDI
  113. JNE L2
  114. XOR EDX,EDX
  115. L2:
  116. ADD EAX,ESI
  117. SHL EAX,4h
  118. ADD EAX,10001h
  119. PUSH EAX                              
  120. CALL rutinaSerial
  121. ADD ESI,EAX
  122. INC ECX
  123. CMP ECX,20h
  124. JNE L1
  125. add eax,0D4h
  126.  
  127. mov ID,EAX
  128. push ID
  129. push OFFSET TU_ID_ES
  130. call printf
  131. push OFFSET PULSE_TECLA
  132. push OFFSET ESPS
  133. call printf
  134. call getchar
  135. invoke ExitProcess,0
  136. ret
  137.  
  138. main endp
  139. END main
Despues , lo que hace es con wsprintf , pasa lo que hay en eax , o sea nuestro ID , a una cadena en notación hexadecimal, y seguidamente , hay una rutina en la que hacen operaciones con un valor que no es constante :(!!! , cambia , y ese valor lo cogen con lo que retorna la api , VirtualAlloc pasandole estos parámetros, pero es que siempre da un valor diferente , y para hacer un keygen como sé cual es ese valor?
Pongo las rutinas que decía:
Código
  1. CPU Disasm
  2. Address   Hex dump          Command                                  Comments
  3. 004011AA  |.  50            PUSH EAX                                 ; /<%08X>
  4. 004011AB  |.  68 16404000   PUSH OFFSET 00404016                     ; |Format = "%08X"
  5. 004011B0  |.  68 F4454000   PUSH OFFSET 004045F4                     ; |Buf
  6. 004011B5  |.  E8 1A010000   CALL <JMP.&user32.wsprintfA>             ; \USER32.wsprintfA
  7. 004011BA  |.  83C4 0C       ADD ESP,0C
  8. 004011BD  |.  FF35 3E404000 PUSH DWORD PTR DS:[40403E]               ; /Arg3 = 290000
  9. 004011C3  |.  6A 10         PUSH 10                                  ; |Arg2 = 10
  10. 004011C5  |.  68 F4424000   PUSH OFFSET 004042F4                     ; |Arg1 = ASCII "12345"
  11. 004011CA  |.  E8 F4020000   CALL 004014C3                            ; \Simple_KGM_2.004014C3

Y los parametros que se le pasan a la api:
Código
  1. Address   Hex dump          Command                                  Comments
  2. 00401326  |.  6A 04         PUSH 4                                   ; /Protect = PAGE_READWRITE
  3. 00401328  |.  68 00100000   PUSH 1000                                ; |AllocType = MEM_COMMIT
  4. 0040132D  |.  6A 54         PUSH 54                                  ; |Size = 84.
  5. 0040132F  |.  6A 00         PUSH 0                                   ; |Address = NULL
  6. 00401331  |.  E8 30110000   CALL <JMP.&kernel32.VirtualAlloc>        ; \KERNEL32.VirtualAlloc
  7.  
Bueno no hay problema , la cogeré con virtualprotect o algo de eso.
544  Programación / Ingeniería Inversa / Re: Reto Septiembre 2012 De Reversing en: 14 Septiembre 2012, 03:42 am
Felisidades avesudra me sorprendiastes hasta en masm lo hisistes
yo tambien estoy practicando masm a ratos cuando puedo pero seme hizo mas fasil hacerlo en vb6

saludos flamer y felisitaciones los demas si estan un poco complicados
Si bueno no estoy acostumbrado a hacer crackmes pero los fáciles me mata la curiosidad jajaja , ya que estoy aprendiendo no viene mal , aunque también lo he puesto en C , es normal que para hacer estas cosas recurramos a lenguajes de más alto nivel. Voy a intentar mirar el SerialMe.

¡Un saludo!
545  Programación / Ingeniería Inversa / Re: Reto Septiembre 2012 De Reversing en: 14 Septiembre 2012, 03:25 am
Hola Flamer , ya estaba con ese crame  >:D , bueno ya está vencido, un pequeño tute.
1.Abrimos el programa con el Olly , buscamos las APIS a ver que hay de interesante... ummm GetDlgItemInt ... para que será? jeje , ponemos el breakpoint en las dos.
2.Bien , ejecutamos el programa dando F9 , ponemos nuestro ID , y el serial , y presionamos registrar.
3. Aleluya! , caemos en donde coge los seriales... Seguimos mirando , y coge mi ID , y lo mete en ebx, despues coge mi serial y lo mete en ECX...
4. Entramos al call , ese que hay ahí abajo , está muy claro , al serial , le suma 4C , lo incrementa en uno , le añade 38B , se añade a sí mismo , se multiplica por trés y se le resta uno.
5. Salimos del call y vemos una comparación de ebx con eax , ¿con eax? , si.. yo también me extrañé , pero es que al coger el serial en el ultimo GetDlgItemInt, devolvió su valor en eax , lo movió a ecx , pero no borró eax, por lo tanto está comparando nuestro serial original , con las operaciones que le ha hecho a nuestro ID.

Pues listo! Armemos nuestro keygen en ASM que estoy practicando jeje:
Código
  1. TITLE keygen (keygen.asm)
  2. .386 ; Hace el código compatible con el procesador 386
  3. .MODEL flat,stdcall
  4.  
  5. INCLUDE user32.inc
  6. INCLUDE kernel32.inc
  7. INCLUDE msvcrt.inc
  8. INCLUDELIB user32.lib
  9. INCLUDELIB kernel32.lib
  10. INCLUDELIB msvcrt.lib
  11. ;PARA TENER LOS BUFFERS
  12. __p__iob    PROTO C
  13.  
  14. _iobuf STRUCT
  15.    _ptr        DWORD ?
  16.    _cnt        DWORD ?
  17.    _base       DWORD ?
  18.    _flag       DWORD ?
  19.    _file       DWORD ?
  20.    _charbuf    DWORD ?
  21.    _bufsiz     DWORD ?
  22.    _tmpfname   DWORD ?
  23. _iobuf ENDS
  24.  
  25. FILE TYPEDEF _iobuf
  26.  
  27. ;PROTOTIPOS DE FUNCIONES EN C
  28.  
  29. EXTRN fgets:NEAR
  30. EXTRN sscanf:NEAR
  31. EXTRN getchar:NEAR
  32. EXTRN printf:NEAR
  33. EXTRN strlen:NEAR
  34. ;PROTOTIPOS DE FUNCIONES EN ASM
  35.  
  36.  
  37.  
  38. .data ;Datos del programa
  39.  
  40. MSG_ID BYTE "Ingrese su ID(maximo 4 digitos):",0
  41. MSG_KEY BYTE "Su serial es: %d",0Ah,0Dh,0
  42. PULSE_TECLA BYTE "Pulse intro para salir . . .",0
  43.  
  44. ;ESPECIFICADORES DE FORMATO
  45. ESPI BYTE "%d",0
  46. ESPS BYTE "%s",0
  47. .data?
  48. ID   DWORD ?
  49. SERIAL DWORD ?
  50. BUFFER_FGETS DWORD ?
  51. stdin  DWORD ?
  52. stdout DWORD ?
  53. stderr DWORD ?
  54. .code ;Código del programa
  55. main PROC
  56. ;Buffers
  57. call    __p__iob
  58.    mov     stdin,eax           ; #define stdin  (&__iob_func()[0])
  59.    add     eax,SIZEOF(FILE)
  60.    mov     stdout,eax          ; #define stdout (&__iob_func()[1])
  61.    add     eax,SIZEOF(FILE)
  62.    mov     stderr,eax          ; #define stderr (&__iob_func()[2])
  63. ;Inicio código.
  64. push OFFSET MSG_ID
  65. push OFFSET ESPS
  66. call printf
  67. ;COGEMOS DEL BUFFER DIEZ CARÁCTERES POR SI LAS MOSCAS.
  68. push stdin
  69. push 10
  70. push OFFSET BUFFER_FGETS
  71. call fgets
  72. ;COGEMOS EL ID DEL BUFFER DE FGETS CON SSCANF
  73. push OFFSET ID
  74. push OFFSET ESPI
  75. push OFFSET BUFFER_FGETS
  76. call sscanf
  77. ;;;;;;;;;;;;;;;;;;;;;;;;
  78. ;CREACIÓN DEL SERIAL   ;
  79. ;;;;;;;;;;;;;;;;;;;;;;;;
  80. mov ebx ,ID   ;
  81. add ebx,4Ch   ;
  82. inc ebx   ;
  83. add ebx,38Bh   ;
  84. add ebx,ebx   ;
  85. imul ebx,3   ;
  86. dec ebx   ;
  87. ;;;;;;;;;;;;;;;;;;;;;;;;
  88. ;IMPRIMIMOS SERIAL
  89. push ebx
  90. push OFFSET MSG_KEY
  91. call printf
  92. ;IMPRIMIMOS PARA AVISAR
  93. push OFFSET PULSE_TECLA
  94. push OFFSET ESPS
  95. call printf
  96. ;CUANDO PULSE INTRO CERRAMOS
  97. call getchar
  98. invoke ExitProcess,0
  99. ret
  100.  
  101. main endp
  102. END main
  103.  
Y no podía abandonar a mi querido C , uff , que liviano se me hace al ASM:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.    char * buffer_fgets = malloc(10);
  7.    int ID;
  8.    int serial;
  9.    printf("Ingresa el ID (4 caracteres maximo):");
  10.    fgets(buffer_fgets,6,stdin);
  11.    sscanf(buffer_fgets,"%d",&ID);
  12.    serial=ID;
  13.    //Rutina de creación.
  14.    serial+=76;//4c en hex
  15.    ++serial;
  16.    serial+=907;//38b en hex
  17.    serial+=serial;
  18.    serial*=3;
  19.    --serial;
  20.    printf("Tu serial es: %d \n",serial);
  21.    printf("Presione intro para terminar . . .");
  22.    getchar();
  23.    return 0;
  24. }
  25.  
546  Programación / Ingeniería Inversa / Re: Reto Septiembre 2012 De Reversing en: 14 Septiembre 2012, 02:25 am
Flamer cyclone vencido, gracias por la colecta de los crackmes , el método antidebug de este no sé ni cual es, porque el olly no se me cierra , he usado el 2.01 , en cuanto a un tute pues pequeño tute:
1.Abrimos el crackme con el Olly , pulsamos F9 y caemos en el entry point del programa.
Estudio del crackme.
-Luego de pedir el serial , saca a este mismo de la memoria y lo rota 11 veces a la derecha.
Código
  1. MOV EAX,DWORD PTR DS:[4030BC]
  2. ROR EAX,11
  3. MOV EBX,554F0000
  4. CMP EAX,EBX
-Después lo compara con 554F0000.
Por lo que deducimos que si:
Código:
ROR x,11 = 554F0000
Donde x es el serial que metemos ,despejamos, la inversa de ror , es rol por lo que queda esto:
Código:
x =  ROL 554F0000,11
x = 0000AA9E que es igual a 43678 en decimal.
¡Un saludo!
547  Programación / Programación C/C++ / Re: Problema al crear exe en Codeblocks+wxWidgets en: 13 Septiembre 2012, 23:08 pm
Si no tienes las librerías wxWidgets compiladas estáticamente(para que se incluya en el ejecutable) no se pondrá con el ejecutable y este mísmo al ejecutarlo te pedira la libreria (.dll) , por lo tanto si quieres distribuir tu aplicación y no tienes las wxWidgets compiladas estáticamente , tendrás que poner esa dll que está en el directorio que dices junto al ejecutable.En cuanto al aviso ni idea.
548  Programación / Programación C/C++ / Re: Problema al crear exe en Codeblocks+wxWidgets en: 13 Septiembre 2012, 15:45 pm
Normalmente el ejecutable no se encuentra en la carpeta release, sino en debug.

Saludos.
Eso depende de como tengas configurado Codeblocks , Limated Corch vete a la izquierda , donde se despliega el proyecto con todos los archivos y da clic derecho encima de tu proyecto , después clicas en Properties , seguidamente te vas a build targets , y eliges una de las dos opciones (Debug o Release) y miras a la derecha donde pone output filename para ver donde lo guarda en cada caso. Para cambiar entre compilar en Modo Debug o Release , a la derecha del botón de compilar pone Build Target y eliges Debug o Release , sabiendo ya donde se guarda el ejecutable.
549  Programación / .NET (C#, VB.NET, ASP) / Re: [DUDA]Programar en C una especie de LOGIN [C SHARP, visual c] en: 13 Septiembre 2012, 14:20 pm
Esto va en el subforo .NET de programación general , de todas maneras  , creo que es así , solo he mirado por google:
Código
  1. using system.windows.forms; //Debes poner esto para usar el MessageBox
  2. //El que haya de por medio.
  3. string nombredeltextbox = "El que cojas , yo no sé como cojerlo";
  4. if (String.Compare(nombredeltextbox,"Pepito") == 0)
  5. {
  6.    MessageBox.Show("Hola");
  7. }
  8. //Más código...
  9.  
PD: Busca en google , como comparar cadenas en C# etc...
550  Foros Generales / Noticias / Re: Así es el nuevo iPhone 5 con LTE en: 13 Septiembre 2012, 03:50 am
Yo creo que no. La gran masa sigue creyendo que Apple es lo mejor en todo, cuando la realidad es que cualquier terminal de gama media, supera a un Iphone 4S en hardware.
La exclusividad y perfecto marketing de Apple hace que cada día mas gente se crea todas las tonterías que dicen, eso si, luego cuando no les va el bluetooth, o no es compatible con no se que, etc, ya te vienen... "Oye, tu sabes porque esto no va??".
La respuesta que les doy a mis familiares y amigos es básicamente la misma, ¿¿¿Querias Iphone??? Pues ahora te lo comes con patatinas.
Es verdad que limitan muchísimo , y que el hardware es el que a ellos les da la gana... tengo un Ipod Touch 3G y estoy contento con él(pirateado) , me gusta ver las Keynotes y los nuevos productos de apple , pero los productos no valen lo que cuestan.En cuanto a lo del dinero podeis mirarlo en la página oficial www.apple.com/es/
Páginas: 1 ... 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 [55] 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 ... 83
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines