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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  Reto crack Keylogger
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Reto crack Keylogger  (Leído 6,625 veces)
.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Reto crack Keylogger
« en: 5 Febrero 2014, 16:38 pm »

Hola a todos, bueno exactamente este no es un reto de crackmes y o cosas por el estilo. Me explico, siempre me interesó este Keylogger (local) que se puede descargar en el siguiente link:

http://www.familykeylogger.com/

Me gustaba mucho su simple uso y simplicidad de instalación. Al momento en que lo intenté crackear hice los pasos típicos:
- OllyDbg
- Referencias de texto

No encontré absolutamente nada (buscaba "Key Invalid!")
Tras al arrancarlo si aparecía la string y un simple salto encargado de la validación del Keylogger.

Tras reiniciar me llevé una sorpresa muy divertida, lo encontré tan divertido que debo invitarlos a crackearlo. Logré crackearlo gracias a un tutorial de Karmany que leí tiempo atrás.

Si alguien quiere la solución por favor me envían un MP, saludos.

PD: Lo que no logro entender es como este programa me crashea en dos circunstancia OllyDbg si alguien me dice como lo hace, se lo agradecería.
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Reto crack Keylogger
« Respuesta #1 en: 5 Febrero 2014, 16:51 pm »

Muy interesante, me lo guardo para cuando tenga tiempo.

Saludos

PD: Puedes enviarme la solución por MP? Solo por si no logro hacerlo en un tiempo razonable.
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Reto crack Keylogger
« Respuesta #2 en: 5 Febrero 2014, 19:32 pm »

XD
Interesante "reto"...
base: 400000

wndproc del dialogo:
00406240             . 55             PUSH EBP
00406241             . 8BEC           MOV EBP,ESP
00406243             . 81EC 98050000  SUB ESP,0x598
00406249             . A1 30404200    MOV EAX,DWORD PTR DS:[0x424030]
0040624E             . 33C5           XOR EAX,EBP
00406250             . 8945 F4        MOV DWORD PTR SS:[EBP-0xC],EAX
00406253             > EB 06          JMP SHORT mfc7sys.0040625B
00406255             >^EB FC          JMP SHORT mfc7sys.00406253
00406257             .^EB FC          JMP SHORT mfc7sys.00406255
00406259             . 0132           ADD DWORD PTR DS:[EDX],ESI
0040625B             > 8B45 0C        MOV EAX,DWORD PTR SS:[EBP+0xC]
0040625E             . 8985 6CFAFFFF  MOV DWORD PTR SS:[EBP-0x594],EAX
00406264             . 83BD 6CFAFFFF >CMP DWORD PTR SS:[EBP-0x594],0x10
0040626B             . 74 16          JE SHORT mfc7sys.00406283
0040626D             . 81BD 6CFAFFFF >CMP DWORD PTR SS:[EBP-0x594],0x111
00406277             . 74 1B          JE SHORT mfc7sys.00406294
00406279             . E9 B4020000    JMP mfc7sys.00406532
0040627E             . E9 AF020000    JMP mfc7sys.00406532
00406283             > 6A 00          PUSH 0x0                                 ; /Result = 0x0
00406285             . 8B4D 08        MOV ECX,DWORD PTR SS:[EBP+0x8]           ; |
00406288             . 51             PUSH ECX                                 ; |hWnd
00406289             . FF15 CCF24100  CALL DWORD PTR DS:[<&USER32.EndDialog>]  ; \EndDialog
0040628F             . E9 9E020000    JMP mfc7sys.00406532
00406294             > 8B55 10        MOV EDX,DWORD PTR SS:[EBP+0x10]
00406297             . 81E2 FFFF0000  AND EDX,0xFFFF
0040629D             . 0FB7C2         MOVZX EAX,DX
004062A0             . 8985 68FAFFFF  MOV DWORD PTR SS:[EBP-0x598],EAX
004062A6             . 83BD 68FAFFFF >CMP DWORD PTR SS:[EBP-0x598],0x1
004062AD             . 74 46          JE SHORT mfc7sys.004062F5
004062AF             . 83BD 68FAFFFF >CMP DWORD PTR SS:[EBP-0x598],0x2
004062B6             . 0F84 6A020000  JE mfc7sys.00406526
004062BC             . 81BD 68FAFFFF >CMP DWORD PTR SS:[EBP-0x598],0x3FB
004062C6             . 74 05          JE SHORT mfc7sys.004062CD
004062C8             . E9 65020000    JMP mfc7sys.00406532
004062CD             > 6A 03          PUSH 0x3
004062CF             . 6A 00          PUSH 0x0
004062D1             . 6A 00          PUSH 0x0
004062D3             . 8B0D E4544200  MOV ECX,DWORD PTR DS:[0x4254E4]          ;  mfc7sys.00427420
004062D9             . 51             PUSH ECX
004062DA             . 68 44F34100    PUSH mfc7sys.0041F344                    ;  ASCII "open"
004062DF             . B9 C8504200    MOV ECX,mfc7sys.004250C8
004062E4             . E8 97B0FFFF    CALL mfc7sys.00401380
004062E9             . 50             PUSH EAX                                 ; |hWnd
004062EA             . FF15 30F24100  CALL DWORD PTR DS:[<&SHELL32.ShellExecut>; \ShellExecuteA
004062F0             . E9 3D020000    JMP mfc7sys.00406532
004062F5             > 6A 32          PUSH 0x32                                ; /Count = 32 (50.)
004062F7             . 8D55 8C        LEA EDX,DWORD PTR SS:[EBP-0x74]          ; |
004062FA             . 52             PUSH EDX                                 ; |Buffer
004062FB             . 68 FD030000    PUSH 0x3FD                               ; |ControlID = 3FD (1021.)
00406300             . 8B45 08        MOV EAX,DWORD PTR SS:[EBP+0x8]           ; |
00406303             . 50             PUSH EAX                                 ; |hWnd
00406304             . FF15 98F24100  CALL DWORD PTR DS:[<&USER32.GetDlgItemTe>; \GetDlgItemTextA
0040630A             . 6A 32          PUSH 0x32                                ; /Count = 32 (50.)
0040630C             . 8D4D C0        LEA ECX,DWORD PTR SS:[EBP-0x40]          ; |
0040630F             . 51             PUSH ECX                                 ; |Buffer
00406310             . 68 FE030000    PUSH 0x3FE                               ; |ControlID = 3FE (1022.)
00406315             . 8B55 08        MOV EDX,DWORD PTR SS:[EBP+0x8]           ; |
00406318             . 52             PUSH EDX                                 ; |hWnd
00406319             . FF15 98F24100  CALL DWORD PTR DS:[<&USER32.GetDlgItemTe>; \GetDlgItemTextA
0040631F             . 8D45 8C        LEA EAX,DWORD PTR SS:[EBP-0x74]
00406322             . 50             PUSH EAX                                 ; /String
00406323             . FF15 D4F14100  CALL DWORD PTR DS:[<&KERNEL32.lstrlenA>] ; \lstrlenA
00406329             . 83F8 18        CMP EAX,0x18
0040632C             . 74 39          JE SHORT mfc7sys.00406367
0040632E             . 8D4D C0        LEA ECX,DWORD PTR SS:[EBP-0x40]
00406331             . 51             PUSH ECX                                 ; /String
00406332             . FF15 D4F14100  CALL DWORD PTR DS:[<&KERNEL32.lstrlenA>] ; \lstrlenA
00406338             . 83F8 18        CMP EAX,0x18
0040633B             . 75 2A          JNZ SHORT mfc7sys.00406367
0040633D             . 6A 32          PUSH 0x32                                ; /Count = 32 (50.)
0040633F             . 8D55 8C        LEA EDX,DWORD PTR SS:[EBP-0x74]          ; |
00406342             . 52             PUSH EDX                                 ; |Buffer
00406343             . 68 FE030000    PUSH 0x3FE                               ; |ControlID = 3FE (1022.)
00406348             . 8B45 08        MOV EAX,DWORD PTR SS:[EBP+0x8]           ; |
0040634B             . 50             PUSH EAX                                 ; |hWnd
0040634C             . FF15 98F24100  CALL DWORD PTR DS:[<&USER32.GetDlgItemTe>; \GetDlgItemTextA
00406352             . 6A 32          PUSH 0x32                                ; /Count = 32 (50.)
00406354             . 8D4D C0        LEA ECX,DWORD PTR SS:[EBP-0x40]          ; |
00406357             . 51             PUSH ECX                                 ; |Buffer
00406358             . 68 FD030000    PUSH 0x3FD                               ; |ControlID = 3FD (1021.)
0040635D             . 8B55 08        MOV EDX,DWORD PTR SS:[EBP+0x8]           ; |
00406360             . 52             PUSH EDX                                 ; |hWnd
00406361             . FF15 98F24100  CALL DWORD PTR DS:[<&USER32.GetDlgItemTe>; \GetDlgItemTextA
00406367             > 6A 00          PUSH 0x0                                 ; /hTemplateFile = NULL
00406369             . 68 80000000    PUSH 0x80                                ; |Attributes = NORMAL
0040636E             . 6A 02          PUSH 0x2                                 ; |Mode = CREATE_ALWAYS
00406370             . 6A 00          PUSH 0x0                                 ; |pSecurity = NULL
00406372             . 6A 03          PUSH 0x3                                 ; |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE
00406374             . 68 000000C0    PUSH 0xC0000000                          ; |Access = GENERIC_READ|GENERIC_WRITE
00406379             . 68 684D4200    PUSH mfc7sys.00424D68                    ; |FileName = "C:\Documents and Settings\All Users\Application Data\mfc7sys.dat"
0040637E             . FF15 C4F14100  CALL DWORD PTR DS:[<&KERNEL32.CreateFile>; \CreateFileA
00406384             . 8945 FC        MOV DWORD PTR SS:[EBP-0x4],EAX
00406387             . 837D FC FF     CMP DWORD PTR SS:[EBP-0x4],-0x1
0040638B             . 74 6E          JE SHORT mfc7sys.004063FB
0040638D             . 6A 00          PUSH 0x0                                 ; /pOverlapped = NULL
0040638F             . 8D45 F8        LEA EAX,DWORD PTR SS:[EBP-0x8]           ; |
00406392             . 50             PUSH EAX                                 ; |pBytesWritten
00406393             . 8D4D 8C        LEA ECX,DWORD PTR SS:[EBP-0x74]          ; |
00406396             . 51             PUSH ECX                                 ; |/String
00406397             . FF15 D4F14100  CALL DWORD PTR DS:[<&KERNEL32.lstrlenA>] ; |\lstrlenA
0040639D             . 50             PUSH EAX                                 ; |nBytesToWrite
0040639E             . 8D55 8C        LEA EDX,DWORD PTR SS:[EBP-0x74]          ; |
004063A1             . 52             PUSH EDX                                 ; |Buffer
004063A2             . 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-0x4]           ; |
004063A5             . 50             PUSH EAX                                 ; |hFile
004063A6             . FF15 A8F14100  CALL DWORD PTR DS:[<&KERNEL32.WriteFile>>; \WriteFile
004063AC             . 8B4D FC        MOV ECX,DWORD PTR SS:[EBP-0x4]
004063AF             . 51             PUSH ECX                                 ; /hObject
004063B0             . FF15 B4F14100  CALL DWORD PTR DS:[<&KERNEL32.CloseHandl>; \CloseHandle
004063B6             . 6A 01          PUSH 0x1                                 ; /Revision = 0x1
004063B8             . 8D95 78FFFFFF  LEA EDX,DWORD PTR SS:[EBP-0x88]          ; |
004063BE             . 52             PUSH EDX                                 ; |pSecDescr
004063BF             . FF15 0CF04100  CALL DWORD PTR DS:[<&ADVAPI32.Initialize>; \InitializeSecurityDescriptor
004063C5             . 6A 00          PUSH 0x0
004063C7             . 6A 00          PUSH 0x0
004063C9             . 6A 01          PUSH 0x1
004063CB             . 8D85 78FFFFFF  LEA EAX,DWORD PTR SS:[EBP-0x88]
004063D1             . 50             PUSH EAX
004063D2             . FF15 10F04100  CALL DWORD PTR DS:[<&ADVAPI32.SetSecurit>;  advapi32.SetSecurityDescriptorDacl
004063D8             . 8985 74FFFFFF  MOV DWORD PTR SS:[EBP-0x8C],EAX
004063DE             . 83BD 74FFFFFF >CMP DWORD PTR SS:[EBP-0x8C],0x0
004063E5             . 74 14          JE SHORT mfc7sys.004063FB
004063E7             . 8D8D 78FFFFFF  LEA ECX,DWORD PTR SS:[EBP-0x88]
004063ED             . 51             PUSH ECX
004063EE             . 6A 04          PUSH 0x4
004063F0             . 68 684D4200    PUSH mfc7sys.00424D68                    ;  ASCII "C:\Documents and Settings\All Users\Application Data\mfc7sys.dat"
004063F5             . FF15 14F04100  CALL DWORD PTR DS:[<&ADVAPI32.SetFileSec>;  advapi32.SetFileSecurityA
004063FB             > 68 E8030000    PUSH 0x3E8                               ; /Timeout = 1000. ms
00406400             . FF15 98F04100  CALL DWORD PTR DS:[<&KERNEL32.Sleep>]    ; \Sleep
00406406             . E8 05E6FFFF    CALL mfc7sys.00404A10
0040640B             . 0FBED0         MOVSX EDX,AL
0040640E             . 85D2           TEST EDX,EDX
00406410             . 74 1C          JE SHORT mfc7sys.0040642E
00406412             . 6A 00          PUSH 0x0                                 ; /Style = MB_OK|MB_APPLMODAL
00406414             . 68 54724200    PUSH mfc7sys.00427254                    ; |Title = "FKL"
00406419             . A1 C0504200    MOV EAX,DWORD PTR DS:[0x4250C0]          ; |
0040641E             . 50             PUSH EAX                                 ; |Text => "Invalid key!"
0040641F             . 8B4D 08        MOV ECX,DWORD PTR SS:[EBP+0x8]           ; |
00406422             . 51             PUSH ECX                                 ; |hOwner
00406423             . FF15 E4F24100  CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA
00406429             . E9 F6000000    JMP mfc7sys.00406524
0040642E             > 8D55 C0        LEA EDX,DWORD PTR SS:[EBP-0x40]
00406431             . 52             PUSH EDX                                 ; /<%s>
00406432             . 68 4C724200    PUSH mfc7sys.0042724C                    ; |<%s> = "5.56"
00406437             . 8D45 8C        LEA EAX,DWORD PTR SS:[EBP-0x74]          ; |
0040643A             . 50             PUSH EAX                                 ; |<%s>
0040643B             . 68 007A4200    PUSH mfc7sys.00427A00                    ; |Format = "-new http://spyarsenal.com/cgi-bin/reg.pl?p=fkl&key=%s&v=%s&email=%s"
00406440             . 8D8D 70FAFFFF  LEA ECX,DWORD PTR SS:[EBP-0x590]         ; |
00406446             . 51             PUSH ECX                                 ; |s
00406447             . FF15 9CF24100  CALL DWORD PTR DS:[<&USER32.wsprintfA>]  ; \wsprintfA
0040644D             . 83C4 14        ADD ESP,0x14
00406450             . 6A 00          PUSH 0x0                                 ; /IsShown = 0x0
00406452             . 6A 00          PUSH 0x0                                 ; |DefDir = NULL
00406454             . 8D95 70FAFFFF  LEA EDX,DWORD PTR SS:[EBP-0x590]         ; |
0040645A             . 52             PUSH EDX                                 ; |Parameters
0040645B             . 68 AC714200    PUSH mfc7sys.004271AC                    ; |FileName = "iexplore.exe"
00406460             . 68 44F34100    PUSH mfc7sys.0041F344                    ; |Operation = "open"
00406465             . 6A 00          PUSH 0x0                                 ; |hWnd = NULL
00406467             . FF15 30F24100  CALL DWORD PTR DS:[<&SHELL32.ShellExecut>; \ShellExecuteA
0040646D             . 68 88130000    PUSH 0x1388                              ; /Timeout = 5000. ms
00406472             . FF15 98F04100  CALL DWORD PTR DS:[<&KERNEL32.Sleep>]    ; \Sleep
00406478             . 6A 00          PUSH 0x0                                 ; /Style = MB_OK|MB_APPLMODAL
0040647A             . 68 54724200    PUSH mfc7sys.00427254                    ; |Title = "FKL"
0040647F             . A1 E0544200    MOV EAX,DWORD PTR DS:[0x4254E0]          ; |
00406484             . 50             PUSH EAX                                 ; |Text => "Thank you for registration!"
00406485             . 8B4D 08        MOV ECX,DWORD PTR SS:[EBP+0x8]           ; |
00406488             . 51             PUSH ECX                                 ; |hOwner
00406489             . FF15 E4F24100  CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA
0040648F             . 68 E8030000    PUSH 0x3E8                               ; /Timeout = 1000. ms
00406494             . FF15 98F04100  CALL DWORD PTR DS:[<&KERNEL32.Sleep>]    ; \Sleep
0040649A             . 6A 00          PUSH 0x0                                 ; /Result = 0x0
0040649C             . 8B55 08        MOV EDX,DWORD PTR SS:[EBP+0x8]           ; |
0040649F             . 52             PUSH EDX                                 ; |hWnd
004064A0             . FF15 CCF24100  CALL DWORD PTR DS:[<&USER32.EndDialog>]  ; \EndDialog
004064A6             . 68 B80B0000    PUSH 0xBB8                               ; /Timeout = 3000. ms
004064AB             . FF15 98F04100  CALL DWORD PTR DS:[<&KERNEL32.Sleep>]    ; \Sleep
004064B1             . 8D45 8C        LEA EAX,DWORD PTR SS:[EBP-0x74]
004064B4             . 50             PUSH EAX                                 ; /Arg3
004064B5             . 68 FA000000    PUSH 0xFA                                ; |Arg2 = 000000FA
004064BA             . 8D8D 70FEFFFF  LEA ECX,DWORD PTR SS:[EBP-0x190]         ; |
004064C0             . 51             PUSH ECX                                 ; |Arg1
004064C1             . E8 25220000    CALL mfc7sys.004086EB                    ; \mfc7sys.004086EB
004064C6             . 83C4 0C        ADD ESP,0xC
004064C9             . 68 BC714200    PUSH mfc7sys.004271BC                    ; /Arg3 = 004271BC ASCII " - Windows Internet Explorer"
004064CE             . 68 FA000000    PUSH 0xFA                                ; |Arg2 = 000000FA
004064D3             . 8D95 70FEFFFF  LEA EDX,DWORD PTR SS:[EBP-0x190]         ; |
004064D9             . 52             PUSH EDX                                 ; |Arg1
004064DA             . E8 74220000    CALL mfc7sys.00408753                    ; \mfc7sys.00408753
004064DF             . 83C4 0C        ADD ESP,0xC
004064E2             . 8D85 70FEFFFF  LEA EAX,DWORD PTR SS:[EBP-0x190]
004064E8             . 50             PUSH EAX                                 ; /Title
004064E9             . 6A 00          PUSH 0x0                                 ; |Class = 0x0
004064EB             . FF15 A0F24100  CALL DWORD PTR DS:[<&USER32.FindWindowA>>; \FindWindowA
004064F1             . 8985 70FFFFFF  MOV DWORD PTR SS:[EBP-0x90],EAX
004064F7             . 83BD 70FFFFFF >CMP DWORD PTR SS:[EBP-0x90],0x0
004064FE             . 74 24          JE SHORT mfc7sys.00406524
00406500             . 6A 00          PUSH 0x0                                 ; /lParam = 0x0
00406502             . 68 60F00000    PUSH 0xF060                              ; |wParam = 0xF060
00406507             . 68 12010000    PUSH 0x112                               ; |Message = WM_SYSCOMMAND
0040650C             . 8B8D 70FFFFFF  MOV ECX,DWORD PTR SS:[EBP-0x90]          ; |
00406512             . 51             PUSH ECX                                 ; |hWnd
00406513             . FF15 ACF24100  CALL DWORD PTR DS:[<&USER32.SendMessageA>; \SendMessageA
00406519             . 68 684D4200    PUSH mfc7sys.00424D68                    ; /FileName = "C:\Documents and Settings\All Users\Application Data\mfc7sys.dat"
0040651E             . FF15 70F14100  CALL DWORD PTR DS:[<&KERNEL32.DeleteFile>; \DeleteFileA
00406524             > EB 0C          JMP SHORT mfc7sys.00406532
00406526             > 6A 00          PUSH 0x0                                 ; /Result = 0x0
00406528             . 8B55 08        MOV EDX,DWORD PTR SS:[EBP+0x8]           ; |
0040652B             . 52             PUSH EDX                                 ; |hWnd
0040652C             . FF15 CCF24100  CALL DWORD PTR DS:[<&USER32.EndDialog>]  ; \EndDialog
00406532             > EB 06          JMP SHORT mfc7sys.0040653A
00406534             >^EB FC          JMP SHORT mfc7sys.00406532
00406536             .^EB FC          JMP SHORT mfc7sys.00406534
00406538               03             DB 03
00406539               34             DB 34                                    ;  CHAR '4'
0040653A             > 33C0           XOR EAX,EAX
0040653C             . 8B4D F4        MOV ECX,DWORD PTR SS:[EBP-0xC]
0040653F             . 33CD           XOR ECX,EBP
00406541             . E8 A41C0000    CALL mfc7sys.004081EA
00406546             . 8BE5           MOV ESP,EBP
00406548             . 5D             POP EBP
00406549             . C2 1000        RETN 0x10

Check (00404A10):
Código:
00404A10             $ 55             PUSH EBP
00404A11             . 8BEC           MOV EBP,ESP
00404A13             . 81EC 28010000  SUB ESP,0x128
00404A19             . A1 30404200    MOV EAX,DWORD PTR DS:[0x424030]
00404A1E             . 33C5           XOR EAX,EBP
00404A20             . 8945 F8        MOV DWORD PTR SS:[EBP-0x8],EAX
00404A23             . 56             PUSH ESI
00404A24             > EB 06          JMP SHORT mfc7sys.00404A2C
00404A26             >^EB FC          JMP SHORT mfc7sys.00404A24
00404A28             .^EB FC          JMP SHORT mfc7sys.00404A26
00404A2A             . 0132           ADD DWORD PTR DS:[EDX],ESI
00404A2C             > C785 DCFEFFFF >MOV DWORD PTR SS:[EBP-0x124],0x0
00404A36             . C705 00404200 >MOV DWORD PTR DS:[0x424000],0x0
00404A40             . 6A 00          PUSH 0x0                                 ; /hTemplateFile = NULL
00404A42             . 68 80000000    PUSH 0x80                                ; |Attributes = NORMAL
00404A47             . 6A 03          PUSH 0x3                                 ; |Mode = OPEN_EXISTING
00404A49             . 6A 00          PUSH 0x0                                 ; |pSecurity = NULL
00404A4B             . 6A 03          PUSH 0x3                                 ; |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE
00404A4D             . 68 00000080    PUSH 0x80000000                          ; |Access = GENERIC_READ
00404A52             . 68 684D4200    PUSH mfc7sys.00424D68                    ; |FileName = "C:\Documents and Settings\All Users\Application Data\mfc7sys.dat"
00404A57             . FF15 C4F14100  CALL DWORD PTR DS:[<&KERNEL32.CreateFile>; \CreateFileA
00404A5D             . 8945 E0        MOV DWORD PTR SS:[EBP-0x20],EAX
00404A60             . 837D E0 FF     CMP DWORD PTR SS:[EBP-0x20],-0x1
00404A64             . 75 07          JNZ SHORT mfc7sys.00404A6D
00404A66             . B0 01          MOV AL,0x1
00404A68             . E9 CF030000    JMP mfc7sys.00404E3C
00404A6D             > 6A 00          PUSH 0x0                                 ; /pOverlapped = NULL
00404A6F             . 8D45 FC        LEA EAX,DWORD PTR SS:[EBP-0x4]           ; |
00404A72             . 50             PUSH EAX                                 ; |pBytesRead
00404A73             . 68 FE000000    PUSH 0xFE                                ; |BytesToRead = FE (254.)
00404A78             . 8D8D E0FEFFFF  LEA ECX,DWORD PTR SS:[EBP-0x120]         ; |
00404A7E             . 51             PUSH ECX                                 ; |Buffer
00404A7F             . 8B55 E0        MOV EDX,DWORD PTR SS:[EBP-0x20]          ; |
00404A82             . 52             PUSH EDX                                 ; |hFile
00404A83             . FF15 98F14100  CALL DWORD PTR DS:[<&KERNEL32.ReadFile>] ; \ReadFile
00404A89             . 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-0x4]
...

.:UND3R:. si necesitas un "Local Keylogger" mandame un MP, puedo programarte uno mejor que esta basura
« Última modificación: 5 Febrero 2014, 19:37 pm por x64Core » En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.518


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Reto crack Keylogger
« Respuesta #3 en: 5 Febrero 2014, 20:50 pm »

Como todo exe automodificable, primero hay que "liberarlo" de dicha automodificación.

Para tener un exe "libre" hay que poner un BP luego de que se ejecuta la rutina de desencriptación del código, corregir la sección .data (porque ya tiene cosas inicializadas), NOPear el call a la  rutina de desencriptación (no olvidar el PUSH!) y dumpear (arreglando el EP. Se puede agregar la IAT en una nueva sección.).

Luego, sólo es cuestión de parchear la rutina 404A10 para que devuelva siempre 0.

Y eso es todo.

Saludos!

PD: No doy más detalles sobre lo primero, para evitar posibles problemas...
PD2: @.:UND3R:.: El dump es el que te hace crashear Olly? Si es así, es porque la sección .data tiene variables inicializadas (crashea cuando llama una API de threads). Por eso puse de corregir la sección .data...  :P
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: Reto crack Keylogger
« Respuesta #4 en: 6 Febrero 2014, 01:26 am »

Muy interesante, me lo guardo para cuando tenga tiempo.

Saludos

PD: Puedes enviarme la solución por MP? Solo por si no logro hacerlo en un tiempo razonable.

Pues de verdad te lo recomiendo te agradará  ;D



XD
Interesante "reto"...
base: 400000

wndproc del dialogo:
00406240             . 55             PUSH EBP
00406241             . 8BEC           MOV EBP,ESP
00406243             . 81EC 98050000  SUB ESP,0x598
00406249             . A1 30404200    MOV EAX,DWORD PTR DS:[0x424030]
0040624E             . 33C5           XOR EAX,EBP
00406250             . 8945 F4        MOV DWORD PTR SS:[EBP-0xC],EAX
00406253             > EB 06          JMP SHORT mfc7sys.0040625B
00406255             >^EB FC          JMP SHORT mfc7sys.00406253
00406257             .^EB FC          JMP SHORT mfc7sys.00406255
00406259             . 0132           ADD DWORD PTR DS:[EDX],ESI
0040625B             > 8B45 0C        MOV EAX,DWORD PTR SS:[EBP+0xC]
0040625E             . 8985 6CFAFFFF  MOV DWORD PTR SS:[EBP-0x594],EAX
00406264             . 83BD 6CFAFFFF >CMP DWORD PTR SS:[EBP-0x594],0x10
0040626B             . 74 16          JE SHORT mfc7sys.00406283
0040626D             . 81BD 6CFAFFFF >CMP DWORD PTR SS:[EBP-0x594],0x111
00406277             . 74 1B          JE SHORT mfc7sys.00406294
00406279             . E9 B4020000    JMP mfc7sys.00406532
0040627E             . E9 AF020000    JMP mfc7sys.00406532
00406283             > 6A 00          PUSH 0x0                                 ; /Result = 0x0
00406285             . 8B4D 08        MOV ECX,DWORD PTR SS:[EBP+0x8]           ; |
00406288             . 51             PUSH ECX                                 ; |hWnd
00406289             . FF15 CCF24100  CALL DWORD PTR DS:[<&USER32.EndDialog>]  ; \EndDialog
0040628F             . E9 9E020000    JMP mfc7sys.00406532
00406294             > 8B55 10        MOV EDX,DWORD PTR SS:[EBP+0x10]
00406297             . 81E2 FFFF0000  AND EDX,0xFFFF
0040629D             . 0FB7C2         MOVZX EAX,DX
004062A0             . 8985 68FAFFFF  MOV DWORD PTR SS:[EBP-0x598],EAX
004062A6             . 83BD 68FAFFFF >CMP DWORD PTR SS:[EBP-0x598],0x1
004062AD             . 74 46          JE SHORT mfc7sys.004062F5
004062AF             . 83BD 68FAFFFF >CMP DWORD PTR SS:[EBP-0x598],0x2
004062B6             . 0F84 6A020000  JE mfc7sys.00406526
004062BC             . 81BD 68FAFFFF >CMP DWORD PTR SS:[EBP-0x598],0x3FB
004062C6             . 74 05          JE SHORT mfc7sys.004062CD
004062C8             . E9 65020000    JMP mfc7sys.00406532
004062CD             > 6A 03          PUSH 0x3
004062CF             . 6A 00          PUSH 0x0
004062D1             . 6A 00          PUSH 0x0
004062D3             . 8B0D E4544200  MOV ECX,DWORD PTR DS:[0x4254E4]          ;  mfc7sys.00427420
004062D9             . 51             PUSH ECX
004062DA             . 68 44F34100    PUSH mfc7sys.0041F344                    ;  ASCII "open"
004062DF             . B9 C8504200    MOV ECX,mfc7sys.004250C8
004062E4             . E8 97B0FFFF    CALL mfc7sys.00401380
004062E9             . 50             PUSH EAX                                 ; |hWnd
004062EA             . FF15 30F24100  CALL DWORD PTR DS:[<&SHELL32.ShellExecut>; \ShellExecuteA
004062F0             . E9 3D020000    JMP mfc7sys.00406532
004062F5             > 6A 32          PUSH 0x32                                ; /Count = 32 (50.)
004062F7             . 8D55 8C        LEA EDX,DWORD PTR SS:[EBP-0x74]          ; |
004062FA             . 52             PUSH EDX                                 ; |Buffer
004062FB             . 68 FD030000    PUSH 0x3FD                               ; |ControlID = 3FD (1021.)
00406300             . 8B45 08        MOV EAX,DWORD PTR SS:[EBP+0x8]           ; |
00406303             . 50             PUSH EAX                                 ; |hWnd
00406304             . FF15 98F24100  CALL DWORD PTR DS:[<&USER32.GetDlgItemTe>; \GetDlgItemTextA
0040630A             . 6A 32          PUSH 0x32                                ; /Count = 32 (50.)
0040630C             . 8D4D C0        LEA ECX,DWORD PTR SS:[EBP-0x40]          ; |
0040630F             . 51             PUSH ECX                                 ; |Buffer
00406310             . 68 FE030000    PUSH 0x3FE                               ; |ControlID = 3FE (1022.)
00406315             . 8B55 08        MOV EDX,DWORD PTR SS:[EBP+0x8]           ; |
00406318             . 52             PUSH EDX                                 ; |hWnd
00406319             . FF15 98F24100  CALL DWORD PTR DS:[<&USER32.GetDlgItemTe>; \GetDlgItemTextA
0040631F             . 8D45 8C        LEA EAX,DWORD PTR SS:[EBP-0x74]
00406322             . 50             PUSH EAX                                 ; /String
00406323             . FF15 D4F14100  CALL DWORD PTR DS:[<&KERNEL32.lstrlenA>] ; \lstrlenA
00406329             . 83F8 18        CMP EAX,0x18
0040632C             . 74 39          JE SHORT mfc7sys.00406367
0040632E             . 8D4D C0        LEA ECX,DWORD PTR SS:[EBP-0x40]
00406331             . 51             PUSH ECX                                 ; /String
00406332             . FF15 D4F14100  CALL DWORD PTR DS:[<&KERNEL32.lstrlenA>] ; \lstrlenA
00406338             . 83F8 18        CMP EAX,0x18
0040633B             . 75 2A          JNZ SHORT mfc7sys.00406367
0040633D             . 6A 32          PUSH 0x32                                ; /Count = 32 (50.)
0040633F             . 8D55 8C        LEA EDX,DWORD PTR SS:[EBP-0x74]          ; |
00406342             . 52             PUSH EDX                                 ; |Buffer
00406343             . 68 FE030000    PUSH 0x3FE                               ; |ControlID = 3FE (1022.)
00406348             . 8B45 08        MOV EAX,DWORD PTR SS:[EBP+0x8]           ; |
0040634B             . 50             PUSH EAX                                 ; |hWnd
0040634C             . FF15 98F24100  CALL DWORD PTR DS:[<&USER32.GetDlgItemTe>; \GetDlgItemTextA
00406352             . 6A 32          PUSH 0x32                                ; /Count = 32 (50.)
00406354             . 8D4D C0        LEA ECX,DWORD PTR SS:[EBP-0x40]          ; |
00406357             . 51             PUSH ECX                                 ; |Buffer
00406358             . 68 FD030000    PUSH 0x3FD                               ; |ControlID = 3FD (1021.)
0040635D             . 8B55 08        MOV EDX,DWORD PTR SS:[EBP+0x8]           ; |
00406360             . 52             PUSH EDX                                 ; |hWnd
00406361             . FF15 98F24100  CALL DWORD PTR DS:[<&USER32.GetDlgItemTe>; \GetDlgItemTextA
00406367             > 6A 00          PUSH 0x0                                 ; /hTemplateFile = NULL
00406369             . 68 80000000    PUSH 0x80                                ; |Attributes = NORMAL
0040636E             . 6A 02          PUSH 0x2                                 ; |Mode = CREATE_ALWAYS
00406370             . 6A 00          PUSH 0x0                                 ; |pSecurity = NULL
00406372             . 6A 03          PUSH 0x3                                 ; |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE
00406374             . 68 000000C0    PUSH 0xC0000000                          ; |Access = GENERIC_READ|GENERIC_WRITE
00406379             . 68 684D4200    PUSH mfc7sys.00424D68                    ; |FileName = "C:\Documents and Settings\All Users\Application Data\mfc7sys.dat"
0040637E             . FF15 C4F14100  CALL DWORD PTR DS:[<&KERNEL32.CreateFile>; \CreateFileA
00406384             . 8945 FC        MOV DWORD PTR SS:[EBP-0x4],EAX
00406387             . 837D FC FF     CMP DWORD PTR SS:[EBP-0x4],-0x1
0040638B             . 74 6E          JE SHORT mfc7sys.004063FB
0040638D             . 6A 00          PUSH 0x0                                 ; /pOverlapped = NULL
0040638F             . 8D45 F8        LEA EAX,DWORD PTR SS:[EBP-0x8]           ; |
00406392             . 50             PUSH EAX                                 ; |pBytesWritten
00406393             . 8D4D 8C        LEA ECX,DWORD PTR SS:[EBP-0x74]          ; |
00406396             . 51             PUSH ECX                                 ; |/String
00406397             . FF15 D4F14100  CALL DWORD PTR DS:[<&KERNEL32.lstrlenA>] ; |\lstrlenA
0040639D             . 50             PUSH EAX                                 ; |nBytesToWrite
0040639E             . 8D55 8C        LEA EDX,DWORD PTR SS:[EBP-0x74]          ; |
004063A1             . 52             PUSH EDX                                 ; |Buffer
004063A2             . 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-0x4]           ; |
004063A5             . 50             PUSH EAX                                 ; |hFile
004063A6             . FF15 A8F14100  CALL DWORD PTR DS:[<&KERNEL32.WriteFile>>; \WriteFile
004063AC             . 8B4D FC        MOV ECX,DWORD PTR SS:[EBP-0x4]
004063AF             . 51             PUSH ECX                                 ; /hObject
004063B0             . FF15 B4F14100  CALL DWORD PTR DS:[<&KERNEL32.CloseHandl>; \CloseHandle
004063B6             . 6A 01          PUSH 0x1                                 ; /Revision = 0x1
004063B8             . 8D95 78FFFFFF  LEA EDX,DWORD PTR SS:[EBP-0x88]          ; |
004063BE             . 52             PUSH EDX                                 ; |pSecDescr
004063BF             . FF15 0CF04100  CALL DWORD PTR DS:[<&ADVAPI32.Initialize>; \InitializeSecurityDescriptor
004063C5             . 6A 00          PUSH 0x0
004063C7             . 6A 00          PUSH 0x0
004063C9             . 6A 01          PUSH 0x1
004063CB             . 8D85 78FFFFFF  LEA EAX,DWORD PTR SS:[EBP-0x88]
004063D1             . 50             PUSH EAX
004063D2             . FF15 10F04100  CALL DWORD PTR DS:[<&ADVAPI32.SetSecurit>;  advapi32.SetSecurityDescriptorDacl
004063D8             . 8985 74FFFFFF  MOV DWORD PTR SS:[EBP-0x8C],EAX
004063DE             . 83BD 74FFFFFF >CMP DWORD PTR SS:[EBP-0x8C],0x0
004063E5             . 74 14          JE SHORT mfc7sys.004063FB
004063E7             . 8D8D 78FFFFFF  LEA ECX,DWORD PTR SS:[EBP-0x88]
004063ED             . 51             PUSH ECX
004063EE             . 6A 04          PUSH 0x4
004063F0             . 68 684D4200    PUSH mfc7sys.00424D68                    ;  ASCII "C:\Documents and Settings\All Users\Application Data\mfc7sys.dat"
004063F5             . FF15 14F04100  CALL DWORD PTR DS:[<&ADVAPI32.SetFileSec>;  advapi32.SetFileSecurityA
004063FB             > 68 E8030000    PUSH 0x3E8                               ; /Timeout = 1000. ms
00406400             . FF15 98F04100  CALL DWORD PTR DS:[<&KERNEL32.Sleep>]    ; \Sleep
00406406             . E8 05E6FFFF    CALL mfc7sys.00404A10
0040640B             . 0FBED0         MOVSX EDX,AL
0040640E             . 85D2           TEST EDX,EDX
00406410             . 74 1C          JE SHORT mfc7sys.0040642E
00406412             . 6A 00          PUSH 0x0                                 ; /Style = MB_OK|MB_APPLMODAL
00406414             . 68 54724200    PUSH mfc7sys.00427254                    ; |Title = "FKL"
00406419             . A1 C0504200    MOV EAX,DWORD PTR DS:[0x4250C0]          ; |
0040641E             . 50             PUSH EAX                                 ; |Text => "Invalid key!"
0040641F             . 8B4D 08        MOV ECX,DWORD PTR SS:[EBP+0x8]           ; |
00406422             . 51             PUSH ECX                                 ; |hOwner
00406423             . FF15 E4F24100  CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA
00406429             . E9 F6000000    JMP mfc7sys.00406524
0040642E             > 8D55 C0        LEA EDX,DWORD PTR SS:[EBP-0x40]
00406431             . 52             PUSH EDX                                 ; /<%s>
00406432             . 68 4C724200    PUSH mfc7sys.0042724C                    ; |<%s> = "5.56"
00406437             . 8D45 8C        LEA EAX,DWORD PTR SS:[EBP-0x74]          ; |
0040643A             . 50             PUSH EAX                                 ; |<%s>
0040643B             . 68 007A4200    PUSH mfc7sys.00427A00                    ; |Format = "-new http://spyarsenal.com/cgi-bin/reg.pl?p=fkl&key=%s&v=%s&email=%s"
00406440             . 8D8D 70FAFFFF  LEA ECX,DWORD PTR SS:[EBP-0x590]         ; |
00406446             . 51             PUSH ECX                                 ; |s
00406447             . FF15 9CF24100  CALL DWORD PTR DS:[<&USER32.wsprintfA>]  ; \wsprintfA
0040644D             . 83C4 14        ADD ESP,0x14
00406450             . 6A 00          PUSH 0x0                                 ; /IsShown = 0x0
00406452             . 6A 00          PUSH 0x0                                 ; |DefDir = NULL
00406454             . 8D95 70FAFFFF  LEA EDX,DWORD PTR SS:[EBP-0x590]         ; |
0040645A             . 52             PUSH EDX                                 ; |Parameters
0040645B             . 68 AC714200    PUSH mfc7sys.004271AC                    ; |FileName = "iexplore.exe"
00406460             . 68 44F34100    PUSH mfc7sys.0041F344                    ; |Operation = "open"
00406465             . 6A 00          PUSH 0x0                                 ; |hWnd = NULL
00406467             . FF15 30F24100  CALL DWORD PTR DS:[<&SHELL32.ShellExecut>; \ShellExecuteA
0040646D             . 68 88130000    PUSH 0x1388                              ; /Timeout = 5000. ms
00406472             . FF15 98F04100  CALL DWORD PTR DS:[<&KERNEL32.Sleep>]    ; \Sleep
00406478             . 6A 00          PUSH 0x0                                 ; /Style = MB_OK|MB_APPLMODAL
0040647A             . 68 54724200    PUSH mfc7sys.00427254                    ; |Title = "FKL"
0040647F             . A1 E0544200    MOV EAX,DWORD PTR DS:[0x4254E0]          ; |
00406484             . 50             PUSH EAX                                 ; |Text => "Thank you for registration!"
00406485             . 8B4D 08        MOV ECX,DWORD PTR SS:[EBP+0x8]           ; |
00406488             . 51             PUSH ECX                                 ; |hOwner
00406489             . FF15 E4F24100  CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA
0040648F             . 68 E8030000    PUSH 0x3E8                               ; /Timeout = 1000. ms
00406494             . FF15 98F04100  CALL DWORD PTR DS:[<&KERNEL32.Sleep>]    ; \Sleep
0040649A             . 6A 00          PUSH 0x0                                 ; /Result = 0x0
0040649C             . 8B55 08        MOV EDX,DWORD PTR SS:[EBP+0x8]           ; |
0040649F             . 52             PUSH EDX                                 ; |hWnd
004064A0             . FF15 CCF24100  CALL DWORD PTR DS:[<&USER32.EndDialog>]  ; \EndDialog
004064A6             . 68 B80B0000    PUSH 0xBB8                               ; /Timeout = 3000. ms
004064AB             . FF15 98F04100  CALL DWORD PTR DS:[<&KERNEL32.Sleep>]    ; \Sleep
004064B1             . 8D45 8C        LEA EAX,DWORD PTR SS:[EBP-0x74]
004064B4             . 50             PUSH EAX                                 ; /Arg3
004064B5             . 68 FA000000    PUSH 0xFA                                ; |Arg2 = 000000FA
004064BA             . 8D8D 70FEFFFF  LEA ECX,DWORD PTR SS:[EBP-0x190]         ; |
004064C0             . 51             PUSH ECX                                 ; |Arg1
004064C1             . E8 25220000    CALL mfc7sys.004086EB                    ; \mfc7sys.004086EB
004064C6             . 83C4 0C        ADD ESP,0xC
004064C9             . 68 BC714200    PUSH mfc7sys.004271BC                    ; /Arg3 = 004271BC ASCII " - Windows Internet Explorer"
004064CE             . 68 FA000000    PUSH 0xFA                                ; |Arg2 = 000000FA
004064D3             . 8D95 70FEFFFF  LEA EDX,DWORD PTR SS:[EBP-0x190]         ; |
004064D9             . 52             PUSH EDX                                 ; |Arg1
004064DA             . E8 74220000    CALL mfc7sys.00408753                    ; \mfc7sys.00408753
004064DF             . 83C4 0C        ADD ESP,0xC
004064E2             . 8D85 70FEFFFF  LEA EAX,DWORD PTR SS:[EBP-0x190]
004064E8             . 50             PUSH EAX                                 ; /Title
004064E9             . 6A 00          PUSH 0x0                                 ; |Class = 0x0
004064EB             . FF15 A0F24100  CALL DWORD PTR DS:[<&USER32.FindWindowA>>; \FindWindowA
004064F1             . 8985 70FFFFFF  MOV DWORD PTR SS:[EBP-0x90],EAX
004064F7             . 83BD 70FFFFFF >CMP DWORD PTR SS:[EBP-0x90],0x0
004064FE             . 74 24          JE SHORT mfc7sys.00406524
00406500             . 6A 00          PUSH 0x0                                 ; /lParam = 0x0
00406502             . 68 60F00000    PUSH 0xF060                              ; |wParam = 0xF060
00406507             . 68 12010000    PUSH 0x112                               ; |Message = WM_SYSCOMMAND
0040650C             . 8B8D 70FFFFFF  MOV ECX,DWORD PTR SS:[EBP-0x90]          ; |
00406512             . 51             PUSH ECX                                 ; |hWnd
00406513             . FF15 ACF24100  CALL DWORD PTR DS:[<&USER32.SendMessageA>; \SendMessageA
00406519             . 68 684D4200    PUSH mfc7sys.00424D68                    ; /FileName = "C:\Documents and Settings\All Users\Application Data\mfc7sys.dat"
0040651E             . FF15 70F14100  CALL DWORD PTR DS:[<&KERNEL32.DeleteFile>; \DeleteFileA
00406524             > EB 0C          JMP SHORT mfc7sys.00406532
00406526             > 6A 00          PUSH 0x0                                 ; /Result = 0x0
00406528             . 8B55 08        MOV EDX,DWORD PTR SS:[EBP+0x8]           ; |
0040652B             . 52             PUSH EDX                                 ; |hWnd
0040652C             . FF15 CCF24100  CALL DWORD PTR DS:[<&USER32.EndDialog>]  ; \EndDialog
00406532             > EB 06          JMP SHORT mfc7sys.0040653A
00406534             >^EB FC          JMP SHORT mfc7sys.00406532
00406536             .^EB FC          JMP SHORT mfc7sys.00406534
00406538               03             DB 03
00406539               34             DB 34                                    ;  CHAR '4'
0040653A             > 33C0           XOR EAX,EAX
0040653C             . 8B4D F4        MOV ECX,DWORD PTR SS:[EBP-0xC]
0040653F             . 33CD           XOR ECX,EBP
00406541             . E8 A41C0000    CALL mfc7sys.004081EA
00406546             . 8BE5           MOV ESP,EBP
00406548             . 5D             POP EBP
00406549             . C2 1000        RETN 0x10

Check (00404A10):
Código:
00404A10             $ 55             PUSH EBP
00404A11             . 8BEC           MOV EBP,ESP
00404A13             . 81EC 28010000  SUB ESP,0x128
00404A19             . A1 30404200    MOV EAX,DWORD PTR DS:[0x424030]
00404A1E             . 33C5           XOR EAX,EBP
00404A20             . 8945 F8        MOV DWORD PTR SS:[EBP-0x8],EAX
00404A23             . 56             PUSH ESI
00404A24             > EB 06          JMP SHORT mfc7sys.00404A2C
00404A26             >^EB FC          JMP SHORT mfc7sys.00404A24
00404A28             .^EB FC          JMP SHORT mfc7sys.00404A26
00404A2A             . 0132           ADD DWORD PTR DS:[EDX],ESI
00404A2C             > C785 DCFEFFFF >MOV DWORD PTR SS:[EBP-0x124],0x0
00404A36             . C705 00404200 >MOV DWORD PTR DS:[0x424000],0x0
00404A40             . 6A 00          PUSH 0x0                                 ; /hTemplateFile = NULL
00404A42             . 68 80000000    PUSH 0x80                                ; |Attributes = NORMAL
00404A47             . 6A 03          PUSH 0x3                                 ; |Mode = OPEN_EXISTING
00404A49             . 6A 00          PUSH 0x0                                 ; |pSecurity = NULL
00404A4B             . 6A 03          PUSH 0x3                                 ; |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE
00404A4D             . 68 00000080    PUSH 0x80000000                          ; |Access = GENERIC_READ
00404A52             . 68 684D4200    PUSH mfc7sys.00424D68                    ; |FileName = "C:\Documents and Settings\All Users\Application Data\mfc7sys.dat"
00404A57             . FF15 C4F14100  CALL DWORD PTR DS:[<&KERNEL32.CreateFile>; \CreateFileA
00404A5D             . 8945 E0        MOV DWORD PTR SS:[EBP-0x20],EAX
00404A60             . 837D E0 FF     CMP DWORD PTR SS:[EBP-0x20],-0x1
00404A64             . 75 07          JNZ SHORT mfc7sys.00404A6D
00404A66             . B0 01          MOV AL,0x1
00404A68             . E9 CF030000    JMP mfc7sys.00404E3C
00404A6D             > 6A 00          PUSH 0x0                                 ; /pOverlapped = NULL
00404A6F             . 8D45 FC        LEA EAX,DWORD PTR SS:[EBP-0x4]           ; |
00404A72             . 50             PUSH EAX                                 ; |pBytesRead
00404A73             . 68 FE000000    PUSH 0xFE                                ; |BytesToRead = FE (254.)
00404A78             . 8D8D E0FEFFFF  LEA ECX,DWORD PTR SS:[EBP-0x120]         ; |
00404A7E             . 51             PUSH ECX                                 ; |Buffer
00404A7F             . 8B55 E0        MOV EDX,DWORD PTR SS:[EBP-0x20]          ; |
00404A82             . 52             PUSH EDX                                 ; |hFile
00404A83             . FF15 98F14100  CALL DWORD PTR DS:[<&KERNEL32.ReadFile>] ; \ReadFile
00404A89             . 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-0x4]
...

.:UND3R:. si necesitas un "Local Keylogger" mandame un MP, puedo programarte uno mejor que esta basura


Esas son efectivamente posibles strings interesantes pero si reinicias el ejecutable verás que no están y si es no está ¿Cómo puedes parchear ese salto?.



Como todo exe automodificable, primero hay que "liberarlo" de dicha automodificación.

Para tener un exe "libre" hay que poner un BP luego de que se ejecuta la rutina de desencriptación del código, corregir la sección .data (porque ya tiene cosas inicializadas), NOPear el call a la  rutina de desencriptación (no olvidar el PUSH!) y dumpear (arreglando el EP. Se puede agregar la IAT en una nueva sección.).

Luego, sólo es cuestión de parchear la rutina 404A10 para que devuelva siempre 0.

Y eso es todo.

Saludos!

PD: No doy más detalles sobre lo primero, para evitar posibles problemas...
PD2: @.:UND3R:.: El dump es el que te hace crashear Olly? Si es así, es porque la sección .data tiene variables inicializadas (crashea cuando llama una API de threads). Por eso puse de corregir la sección .data...  :P

El crash parece que es por la detección del OllyDbg
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.518


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Reto crack Keylogger
« Respuesta #5 en: 6 Febrero 2014, 01:46 am »

El crash parece que es por la detección del OllyDbg

Pero es el dumpeado o el original? Aparte, te refieres a Olly sin plugines, no?
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: Reto crack Keylogger
« Respuesta #6 en: 6 Febrero 2014, 02:02 am »

Pero es el dumpeado o el original? Aparte, te refieres a Olly sin plugines, no?

Estoy realizando mi solución en minutos la publico para que veas mi duda, no te vayas. Saludos
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: Reto crack Keylogger
« Respuesta #7 en: 6 Febrero 2014, 02:51 am »

Solución propuesta

En el proceso de instalación podemos ver la ruta en donde el Keylogger es instalado (la carpeta junto con sus respectivos archivos se encuentran ocultos):


Una vez instalado el Keylogger procedemos a registrarlo, para ello hacemos clic derecho en el icono al costado a la derecha y seleccionamos la opción Register:


Hacemos un File Attach. Aquí la duda MCKSys Argentina tuve que hacer el attach a causa de que no puedo correr el Keylogger desde el inicio (protección anti-debugger creo), inclusive luego de atachar el ejecutable si le doy run y presiono el botón para registrar no me muestra el mensaje de Key Invalid! queda corriendo pero no hace nada (a ver si logras encontrar cómo el ejecutable afecta a OllyDbg):


Como comenté anteriormente no es posible a causa de la protección anti-debugger presionar el botón mientras se está ejecutando el Keylogger desde Olly por lo cual una vez atachado ponemos un BP condicional en TranslateMessage con la condición de que se detenga al momento de recibir un mensaje con valor 202:


Una vez presionado el botón para registrar ponemos un BP on Execution en la sección .CODE y veremos lo siguiente:


Luego utilicé Analize This! (Plugins de Olly recomendado hace años por Apuromafo) el cual permite una mejor visualización del código y si bajamos podremos ver el algo muy interesante  :)  ):


Podemos ver que la comprobación se realiza en CALL 00404A10 en donde siempre debe retornar 0 para que la validación sea válida. Si ingresamos dentro de la CALL podremos visualizar las referencias que posee:


Ya sabiendo que función es la encargada de realizar la comprobación, cuantas veces es llamada y que valor debe retornar, solo queda parchear. Como solución propuesta decidí cambiar la siguiente instrucción de la CALL 00404A10 (en todas las llamadas):


Citar
0040618D   .  0FBED0        MOVSX EDX,AL

0040640B   .  0FBED0        MOVSX EDX,AL (XOR EDX, EDX)

00406920   .  0FBED0        MOVSX EDX,AL (XOR EDX, EDX)

004069CD   .  0FBEC0        MOVSX EAX,AL (XOR EAX,EAX)

Ya sabiendo que modificar, reiniciamos y procedemos a realizar los cambios pero nos llevaremos una sorpresa una que nunca me había tocado solucionar  :rolleyes: :

Vemos un ejecutable automodificable (estilo packer) por lo cual la única manera de poder parchear el ejectuable es alterar los bytes que serán escritos en las instrucciones siguientes de los llamados a las CALL 00404A10 o dumpear el ejecutable una vez que esté en ejecución el Keylogger, reparar IAT y posteriormente nopear las funciones encargadas de escribir los bytes, vamos por la 1era opción.

Ponemos un Hardware Breakpoint on Write en 0040640B para ver que función es la encargada de escribir esa sección del código:


Como vemos el resultado de la operación XOR EAX,ECX es lo que se almacena en la sección CODE por lo cual si reiniciamos y ponemos un BP en en 0040233B y damos RUN veremos que el valor de ECX es 73h

Si logeamos el valor de ECX en el address 0040233B registrará siempre 73h por lo que el proceso de descifrado se realiza siempre bajo un XOR con la constante 73h.

Teniendo todos estos datos, sabemos que los bytes que son insertados en la sección CODE deben estar almacenados en la sección DATA y cifrados bajo un XOR ?,73h por lo tanto la solución sería encontrar estos datos y reemplazarlos por los bytes (tras realizar un XOR 73h) del mnemónico de instrucción XOR EDX,EDX y XOR EAX,EAX respectivamente.

quedando como solución:

Citar
MOVSX EDX,AL       XOR 73h
0F BE D0                7C CD A3

XOR EDX,EDX         XOR 73h
33 D2 90                40 A1 E3

XOR EAX,EAX         XOR 73h
33 C0 90                40 B3 E3

Instrucción                                                                               XOR EDX,EDX
Original          Byte Origi.   MNEMONICO      Byte Ori XOR 73h     con XOR 73h   
0040618D   .  0FBED0        MOVSX EDX,AL   7C CD A3                40 A1 E3

0040640B   .  0FBED0        MOVSX EDX,AL   7C CD C6                40 A1 86

00406920   .  0FBED0        MOVSX EDX,AL   7C A8 A3                 40 C4 E3

004069CD   .  0FBEC0        MOVSX EAX,AL   7C CD B3                40 B3 E3

En palabras simples modificamos estos 12 Bytes:
Citar
0040618D   .  7C CD A3

0040640B   .  7C CD C6

00406920   .  7C A8 A3

004069CD   . 7C CD B3

Por:
Citar
0040618D   .  40 A1 E3

0040640B   .  40 A1 86

00406920   .  40 C4 E3

004069CD   . 40 B3 E3

Nos quedará:
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Reto crack Keylogger
« Respuesta #8 en: 6 Febrero 2014, 18:20 pm »

Und3r:
usa estas funciones antidebuger
IsDebuggerPresent
RaiseException
TerminateProcess
UnhandledExceptionFilter

usando solo strongod como plugin

y  marcando
hidepeb
kernelmode
skip some exceptions

lo carga desde el ep

después podés ver como correrlo anulando  IsdebuggerPresent de forma manual o con un plugin
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Reto Crack pyton,,, Cuenta Premium Megaupload de Premio « 1 2 3 »
Ingeniería Inversa
TECHNO_ASSIST 20 11,144 Último mensaje 5 Agosto 2011, 00:02 am
por TECHNO_ASSIST
usb keylogger, o keylogger desde modo seguro.
Seguridad
minerif 0 3,474 Último mensaje 24 Marzo 2013, 23:20 pm
por minerif
Reto algoritmo mezcla cifras y letras (RETO REMUNERADO)
Desafíos - Wargames
kingMezlo 3 5,517 Último mensaje 31 Diciembre 2013, 19:47 pm
por #Aitor
Ayuda con un crack!! Tómalo como un reto
Hacking
Natsu10 2 2,723 Último mensaje 16 Julio 2014, 19:09 pm
por simorg
[Reto] Go Crack II « 1 2 »
Ingeniería Inversa
jaxoR 14 7,397 Último mensaje 2 Julio 2015, 05:43 am
por tincopasan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines