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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 [7] 8
61  Programación / Ingeniería Inversa / Crackme fácil en: 25 Octubre 2009, 18:29 pm
Buenas a todos.
Aquí os dejo un crackme muy sencillo programado en vb6:
rapidshare -> http://rapidshare.com/files/297775061/Crackme.zip.html
megaupload -> http://www.megaupload.com/?d=F3YMKH72

No tiene trucos antidebugger de ningún tipo y también es muy simple. Es un poco más complicado que
http://foro.elhacker.net/ingenieria_inversa/crackme_muy_facil-t271924.0.html
el programado con el masm32 simplemente porque el vb6 "ensucia" mucho más los ejecutables.
Éste crackme consta de dos partes. La primera es una única clave, que en cuanto sea correcta habilita la segunda parte, que consta de nombre y serial, para la que deberéis programar un keygen. Ya os advierto que la relación nombre/serial de este crackme es aún más sencilla que la del otro aunque parezca más compleja por culpa del vb6.
Eso sí, no me vale que habilitéis la segunda parte con ningún programa externo ni que lo parcheéis. Sólo será válido el código. Esta parte, puede que sea más complicada que la segunda pero podéis preguntarme cualquier duda.
Saludos y suerte a todos.
62  Programación / Ingeniería Inversa / Crackme muy fácil. en: 25 Octubre 2009, 18:21 pm
Buenas a todos,
aquí les dejo este sencillísimo "keygenme" programado con el MASM32:
rapidshare -> http://rapidshare.com/files/297771977/Crackme.zip.html
megaupload -> http://www.megaupload.com/?d=JSCXZRF7

Está pensado para los que quieran empezar en este mundo y nunca hayan creado un keygen. No vale como solución un parche del crackme, porque he dejado el ejecutable lleno de comentarios para ayudar un poco a los novatos; entre otras cosas indiqué dónde se debería parchear. Los comentarios los he puesto en inglés para asegurarme que se mostraban en los debuggers como cadenas de texto.

Saludos.
63  Programación / ASM / Re: Diferencia entre estos dos codes (ASM) en: 24 Octubre 2009, 17:43 pm
La diferencia de tamaño viene dada porque en el primer ejemplo los datos del título y texto van en una sección nueva (.data) que no existe en el segundo ejemplo, que lo incluye directamente en el código.
Eso quiere decir que si los desensamblas verás:

Código del primer ejemplo:
Código:
00401000 <>/$  6A 00                    PUSH 0                                  ; /Style = MB_OK|MB_APPLMODAL
00401002   |.  68 0B304000              PUSH 0040300B                           ; |Title = "Titulo"
00401007   |.  68 00304000              PUSH 00403000                           ; |Text = "Hola mundo"
0040100C   |.  6A 00                    PUSH 0                                  ; |hOwner = NULL
0040100E   |.  E8 07000000              CALL <JMP.&user32.MessageBoxA>          ; \MessageBoxA
00401013   |.  6A 00                    PUSH 0                                  ; /ExitCode = 0
00401015   \.  E8 06000000              CALL <JMP.&kernel32.ExitProcess>        ; \ExitProcess
0040101A    $- FF25 08204000            JMP [<&user32.MessageBoxA>]             ;  user32.MessageBoxA
00401020    .- FF25 00204000            JMP [<&kernel32.ExitProcess>]           ;  kernel32.ExitProcess
y sus secciones:
Código:
Memory map
Address    Size       Owner                          Section      Contains                    Type              Access         Initial   Mapped as
00400000   00001000   Normal   00400000 (itself)                  PE header                   Imag 01001002     R              RWE
00401000   00001000   Normal   00400000              .text        code                        Imag 01001002     R              RWE
00402000   00001000   Normal   00400000              .rdata       imports                     Imag 01001002     R              RWE
00403000   00001000   Normal   00400000              .data        data                        Imag 01001002     R              RWE

Código del segundo ejemplo (mínimo):
Código:
00401000 <>/$ /EB 12                    JMP SHORT 00401014
00401002   |. |48 6F 6C 61 20 6D 75 6E >ASCII "Hola mundo",0
0040100D   |. |54 69 74 75 6C 6F 00     ASCII "Titulo",0
00401014   |> \6A 00                    PUSH 0                                  ; /Style = MB_OK|MB_APPLMODAL
00401016   |.  68 0D104000              PUSH 0040100D                           ; |Title = "Titulo"
0040101B   |.  68 02104000              PUSH 00401002                           ; |Text = "Hola mundo"
00401020   |.  6A 00                    PUSH 0                                  ; |hOwner = NULL
00401022   |.  E8 07000000              CALL <JMP.&user32.MessageBoxA>          ; \MessageBoxA
00401027   |.  6A 00                    PUSH 0                                  ; /ExitCode = 0
00401029   \.  E8 06000000              CALL <JMP.&kernel32.ExitProcess>        ; \ExitProcess
0040102E    $- FF25 08204000            JMP [<&user32.MessageBoxA>]             ;  user32.MessageBoxA
00401034    .- FF25 00204000            JMP [<&kernel32.ExitProcess>]           ;  kernel32.ExitProcess
y sus secciones:
Código:
Memory map
Address    Size       Owner                          Section      Contains                    Type              Access         Initial   Mapped as
00400000   00001000   Minimo   00400000 (itself)                  PE header                   Imag 01001002     R              RWE
00401000   00001000   Minimo   00400000              .text        code                        Imag 01001002     R              RWE
00402000   00001000   Minimo   00400000              .rdata       data,imports                Imag 01001002     R              RWE

El tamaño de las secciones se puede definir en la compilación, pero para el MASM por defecto es de 1 kb por sección, y ese es el tamaño que ganas entre ambos códigos.

Con respecto al "@F" es una de las palabras reservadas del MASM que hace referencia a la siguiente etiqueta (para los saltos) y existe otra "@B" para saltar a la etiqueta anterior.
64  Programación / Ingeniería Inversa / Re: CrackME#1 by Thunder en: 23 Octubre 2009, 14:59 pm
ThUnDeR_07, ¿te vale rapidshare?
http://rapidshare.com/files/296817429/Keygen_for_Thunder_s_Crackme__1_by_PeterPunk.zip.html

Ahora mismo no me apetece mucho escribir un tuto (tengo pendientes varios desde hace meses para crackmes.de, aunque igual ya están resueltos), pero aquí va un mini resumen:
- Desempaqué el .exe con el upx (parámetro -d)
- Ejecuté el crackme con el Olly y tras probarlo, busqué todas las cadenas.
- Había referencias a mi nick en 0x47D1A2 y al mostrarlo en el dump, sorpresa, cadena "REGISTRADO . . ." en 0x47D1C3.
- Marcamos la primera "R" de la cadena en el dump y buscamos las referencias a esta cadena (CTRL+R):
Código
  1. References in Crackme_:.text to 0047D1C3..0047D1C3, item 0
  2. Address=00402FCE
  3. Disassembly=CMP DL,[ECX+47D1C3]
  4.  
- Estudiamos esa parte del código:
Código
  1. 00402F84   |> /8B55 E4                  /MOV EDX,[EBP-1C]
  2. 00402F87   |. |33C9                     |XOR ECX,ECX                            ;  (Initial CPU selection)
  3. 00402F89   |. |8A4C15 E8                |MOV CL,[EBP+EDX-18]
  4. 00402F8D   |. |81C1 79FFFFFF            |ADD ECX,-87
  5. 00402F93   |. |894D FC                  |MOV [EBP-4],ECX
  6. 00402F96   |. |330D 8CD14700            |XOR ECX,[47D18C]
  7. 00402F9C   |. |894D FC                  |MOV [EBP-4],ECX
  8. 00402F9F   |. |8A45 FC                  |MOV AL,[EBP-4]
  9. 00402FA2   |. |8B55 E4                  |MOV EDX,[EBP-1C]
  10. 00402FA5   |. |8882 B2D14700            |MOV [EDX+47D1B2],AL
  11. 00402FAB   |. |FF45 E4                  |INC DWORD PTR [EBP-1C]
  12. 00402FAE   |> |8D4D E8                   LEA ECX,[EBP-18]
  13. 00402FB1   |. |51                       |PUSH ECX
  14. 00402FB2   |. |E8 09B50500              |CALL 0045E4C0
  15. 00402FB7   |. |59                       |POP ECX
  16. 00402FB8   |. |3B45 E4                  |CMP EAX,[EBP-1C]
  17. 00402FBB   |.^\77 C7                    \JA SHORT 00402F84
  18. 00402FBD   |.  EB 03                    JMP SHORT 00402FC2
  19. 00402FBF   |>  FF45 F8                  /INC DWORD PTR [EBP-8]
  20. 00402FC2   |>  8B45 F8                   MOV EAX,[EBP-8]
  21. 00402FC5   |.  8A90 B2D14700            |MOV DL,[EAX+47D1B2]
  22. 00402FCB   |.  8B4D F8                  |MOV ECX,[EBP-8]
  23. 00402FCE   |.  3A91 C3D14700            |CMP DL,[ECX+47D1C3]
  24. 00402FD4   |.^ 74 E9                    \JE SHORT 00402FBF
- Con una ojeada vemos que compara la cadena con otra que varía según un xor en la línea:
Código
  1. 00402F96   |.  330D 8CD14700            |XOR ECX,[47D18C]
- Para que las dos cadenas sean iguales necesitamos un "xor ecx, 7"
- Buscamos las referencias a 0x47D18C:
Código:
References in Crackme_:.text to 0047D18C
Address     Disassembly                                 Comment
00401AB9    MOV [47D18C],EDX
00401B0F    INC DWORD PTR [47D18C]                      DS:[0047D18C]=00000001
004020A5    INC DWORD PTR [47D18C]                      DS:[0047D18C]=00000001
0040252A    INC DWORD PTR [47D18C]                      DS:[0047D18C]=00000001
0040281E    INC DWORD PTR [47D18C]                      DS:[0047D18C]=00000001
004029C4    INC DWORD PTR [47D18C]                      DS:[0047D18C]=00000001
00402CC0    INC DWORD PTR [47D18C]                      DS:[0047D18C]=00000001
00402ED8    INC DWORD PTR [47D18C]                      DS:[0047D18C]=00000001
00402F96    XOR ECX,[47D18C]                            (Initial CPU selection)
- Estudiamos el código próximo a todas las referencias que hagan "INC DWORD PTR [47D18C]" y ahí encontraremos fácilmente las características del serial:
1 - El nombre introducido debe tener entre 5 y 15 caracteres
2 - La longitud del serial es de 21
3 - Los caracteres 3, 11y 19 del serial son guiones
4 - Hay más caracteres fijos: los dos primeros son "TH", los anteriores al segundo guion seon "UN", "D3" los anteriores al tercer guion y el último es una "R": TH-?????UN-?????D3-?R
5 - El penúltimo caracter es la longitud del nombre
6 - Los cinco primeros que faltan son suma_asciis_nombre + 0x1987 xor 0xBADD + 0xDEAD en hexadecimal
7 - Los restantes son suma_asciis_nombre + 0x2009 xor 0xDADD + 0xF00D en hexadecimal
65  Programación / Ingeniería Inversa / Re: CrackME#1 by Thunder en: 22 Octubre 2009, 13:21 pm
LLevaba meses sin entrar por aquí (e incluso sin entretenerme con la ingeniería inversa) pero estaba aburrido.

El keygen:
http://www.megaupload.com/?d=IWLW7KD0

Está compilado con el Masm32 y sólo testado en Windows XP, así que si alguien lo prueba en Vista ¿me podría decir cómo le va?
En principio el nombre que aparece por defecto es con el que está registrado Windows.
El fondo del Keygen debe ser igual que la parte del fondo del escritorio sobre la que está.
Debería sonar un midi que está en el keygen como recurso sin ser extraído temporalmente.

PD: Si a alguien que se le de bien el fotochop o cualquier otro programa de diseño, me quiere hacer otra imagen para el keygen (250x70) con temática Ingeniería inversa y punk (incluyendo mi nombre claro) le estaría eternamente agradecido  ;D (también admoto icono nuevo  :silbar:)
66  Programación / Ingeniería Inversa / Re: Reto Panda en: 2 Abril 2009, 18:37 pm
Sí, lo cierto es que era muy fácil y Anon, no hace falta que revises tus apuntes sobre el FPU.
67  Programación / Ingeniería Inversa / Re: OllyDBG en: 17 Marzo 2009, 20:17 pm
Creo que no puedes, por que el Olly necesita usar una fuente en la que todos los caracteres tegan el mismo ancho (no recuerdo como se llaman este tipo de fuentes), para que no se descuadre nada.

Demostración:

0044F185   . 8B0D 9C0C4500  MOV ECX,DWORD PTR DS:[450C9C]            ;  KeyFileM.00451C1C
0044F18B   . A1 0C0E4500    MOV EAX,DWORD PTR DS:[450E0C]
0044F190   . 8B00           MOV EAX,DWORD PTR DS:[EAX]
0044F192   . 8B15 18E64400  MOV EDX,DWORD PTR DS:[44E618]            ;  KeyFileM.0044E664
0044F198   . E8 A7DFFFFF    CALL KeyFileM.0044D144


Código:
0044F185   . 8B0D 9C0C4500  MOV ECX,DWORD PTR DS:[450C9C]            ;  KeyFileM.00451C1C
0044F18B   . A1 0C0E4500    MOV EAX,DWORD PTR DS:[450E0C]
0044F190   . 8B00           MOV EAX,DWORD PTR DS:[EAX]
0044F192   . 8B15 18E64400  MOV EDX,DWORD PTR DS:[44E618]            ;  KeyFileM.0044E664
0044F198   . E8 A7DFFFFF    CALL KeyFileM.0044D144
68  Programación / Ingeniería Inversa / Re: Me kedan 10 días....... o no se si devolverlo en: 9 Marzo 2009, 18:31 pm
PeterPunk 1 - 0 DPSClick  ;-)
69  Programación / Programación Visual Basic / Re: como simular el efecto de espejo en vb en: 28 Enero 2009, 03:46 am
Buenas CICOLO_111234, si lo que quieres es invertir la imagen vertical u horizontalmente lo más fácil es usar la API StretchBlt.
Aquí un pequeño ejemplo. Pon tres picture boxes y un botón en un formulario y copia este código:
Código
  1. Option Explicit
  2.  
  3. Const ScrCopy = &HCC0020
  4.  
  5. Private Declare Function StretchBlt Lib "gdi32" ( _
  6.    ByVal hdc As Long, _
  7.    ByVal X As Long, _
  8.    ByVal Y As Long, _
  9.    ByVal nWidth As Long, _
  10.    ByVal nHeight As Long, _
  11.    ByVal hSrcDC As Long, _
  12.    ByVal xSrc As Long, _
  13.    ByVal ySrc As Long, _
  14.    ByVal nSrcWidth As Long, _
  15.    ByVal nSrcHeight As Long, _
  16.    ByVal dwRop As Long) As Long
  17.  
  18. Private Declare Function PaintDesktop Lib "user32" (ByVal hdc As Long) As Long
  19.  
  20.  
  21. Private Sub Command1_Click()
  22.    'Ponemos en el Picture1 un trozo del fondo de escritorio:
  23.    PaintDesktop Picture1.hdc
  24.    'Espejo vertical:
  25.    StretchBlt Picture2.hdc, 100, 0, -100, 100, Picture1.hdc, 0, 0, 100, 100, ScrCopy
  26.    'Espejo horizontal:
  27.    StretchBlt Picture3.hdc, 0, 100, 100, -100, Picture1.hdc, 0, 0, 100, 100, ScrCopy
  28. End Sub
  29.  
  30. Private Sub Form_Load()
  31.    Me.Height = 4000
  32.    Me.Width = 4000
  33.    Me.AutoRedraw = True
  34.    Me.ScaleMode = vbPixels
  35.  
  36.    Picture1.Top = 20
  37.    Picture1.Left = 20
  38.    Picture1.Width = 100
  39.    Picture1.Height = 100
  40.    Picture1.BorderStyle = 0
  41.  
  42.    Picture2.Top = 20
  43.    Picture2.Left = 120
  44.    Picture2.Width = 100
  45.    Picture2.Height = 100
  46.    Picture2.BorderStyle = 0
  47.  
  48.    Picture3.Top = 120
  49.    Picture3.Left = 20
  50.    Picture3.Width = 100
  51.    Picture3.Height = 100
  52.    Picture3.BorderStyle = 0
  53.  
  54.    Command1.Top = 120
  55.    Command1.Left = 120
  56.    Command1.Width = 100
  57.    Command1.Height = 100
  58.  
  59. End Sub
  60.  

Saludos.
70  Seguridad Informática / Desafíos - Wargames / Re: ayuadame a descifra esto en: 21 Enero 2009, 01:25 am
QUE BIEN LO HAZ descifrado LA RESPUESTA ES NIRVANA
Páginas: 1 2 3 4 5 6 [7] 8
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines