CRACK de Invisible Keylogger 1.2 dit IK

By Nody

Intro.

 

Logiciel : (Amecisco) Invisible Keylogger 1.2 dit IK

Source : http://www.amecisco.com (800 ko)

Commentaires :

IK est un petit Keylogger sympa, assez discret. Si j’ai bien captΘ les descriptifs du site web de IK, il met en mΘmoire un module qui intercepte les touches avant mΩme windows. ╟a c’est trΦs cool.
ProblΦme : IK est un shareware.

Il Θcrit les touches dans un fichier ik.dat cryptΘs que dat2txt.exe permet de dΘcrypter. Il crΘe en fait un buffer de 75 touches en mΘmoire puis il les Θcrit dans le fichier.

La version shareware est limitΘ α 500 touches enregistrΘes. En fait, 500 touches c’est vite Θcrit, alors c’est parti pour une version illimitΘe.

 

Le Crack.

 

Installez IK et redΘmarrez Windows pour qu'il soit chargΘ en mΘmoire. On trouve le programme principal dans c:\program files\ik\, accompagnΘ de dat2txt.exe qui est chargΘ de dΘcrypter ik.dat (fichier contenant les touches frappΘs par l'utilisateur).
Faites un Ctrl-Alt-Suppr et vous voyez IK chargΘ comme tΓches. Tapez 500 lettres (τa va vite ... :-) ) et refaites un Ctrl-Alt-Suppr, ⌠ magie, IK a disparu. Ne vous inquiΘtez pas, rΘ-exΘcutez ik.exe et vous aurez le droit α 500 nouvelles touches gratuites. Bon, passons aux choses sΘrieuses...

Mais c'est pas tout, il y a aussi une jolie DLL dans c:\windows\system\ qui s'appelle ik.dll. On la fait passer directement chez w32dasm et zou, un jolie petit morceau d’asm.

Bon allons voir les ‘exported fonctions’ Il y en a une qui a l'air sympa, c'est l'API ‘KeyboardHook' . On va alors la charger avec le Symbol Loader de Soft-Ice. Vous Ωtes grand, je vous laisse faire τa.

Maintenant sous Soft-Ice, tapez un ‘bpx keyboardhook’ et sortez de Soft-Ice..

On tombe directement dedans et on y retourne aussi vite aprΦs un Ctrl-D.

 

Voilα une partie de la source de KeyboadHook :

(Note : les 4 premiers chiffres de l'offset sont s√rement diffΘrents sous Soft-Ice)

1000120D  mov dword ptr [1000C0B0], 00000000

10001217  mov byte ptr [eax+1000C010], cl

1000121D  mov ecx, dword ptr [1000C0B4]

10001223  inc eax             eax := eax + 1

10001224  inc ecx             ecx := ecx + 1

10001225  cmp ecx, 000003E8        \

[...]                                                     \  ecx < α 1000 ? Si oui on va en 1000126B

10001236  jl 1000126B                     \

[...]

* Reference To: USER32.UnhookWindowsHookEx, Ord:0248h

10001249  call dword ptr [1000B25C]

[...]

* Reference To: USER32.PostMessageA, Ord:01B1h

1000125B  call dword ptr [1000B268]

10001261  mov eax, 00000001             eax := 1

[...]

10001268  ret 000C                                 bye bye....

* Reference by a (U)nconditional or (C)onditional Jump at Address:
|:10001236 (C)
|

1000126B  cmp eax, 00000096              \ eax == 150 ?

10001270  jne 10001277                         \ oui on continue,  non on saute

10001272  call 10001300                       \ c'est pour aprΦs...(pas important)

  * Reference by a (U)nconditional or (C)onditional Jump at Addresses:
|:100011FC (C), :10001201 (C), :10001270 (C)
|

[...]

* Reference To: USER32.CallNextHookEx, Ord:0011h

1000128B  call dword ptr [1000B260]

[...]

10001293  ret 000C                                                bye bye ....

 

Sous Soft-Ice, virez le bpx 'keyboadhook' et faites un 'bpx unhookwindowshookex'. Amusez-vous α taper des lettres et α un moment, vous tombez sous Soft-Ice pour le USER32! UnhookWindowsHookEx. Tapez F12 et vous tombez o∙ ? Et ouais dans IK α l'offset 10001249 (cf le dΘtail de la routine au-dessus). Sortez de Soft-Ice, faites un Ctrl-Alt-Suppr et vous verrez que IK n'est plus lα.

Bon, pas bien difficile α comprendre. Si vous Ωtes pressΘs, remplacez le jl en 10001236 en un jmp. Je suis gentil je donne l'hexa :

7C 33 E8 C3 00 00 00 par E9 33 E8 C3 00 00 00

C'est bien de patcher un jl en jmp, mais bon, faut pas s'arrΘter lα.

Qu'est-ce qui provoque le saut ? C'est le cmp ecx, 3E8, ie compare ecx α 1000. Mouais mais 1000 c'est 500 * 2, c'est le_nombre_de_touches_autorisΘes * 2. Si vous avez tracez l'API KeyboardHook, vous avez remarquez qu'aprΦs le mov ecx, dword ptr [1000C0B4], on a ecx = eax. Mais c'est seulement ecx qui est utilisΘ pour la comparaison 'nombre de touches utilisΘes > 500?'.

En fait, eax et ecx jouent le r⌠le de compteur dans cette routine mais ils ne comptent pas la mΩme chose : ecx sert UNIQUEMENT pour la protection, alors eax est vraiment utile pour le programme.
Regardez, on a τa, si nombre de touches < α 500 :

1000126B  cmp eax, 00000096       

10001270  jne 10001277                  

10001272  call 10001300

Compare eax α 0x96 ie 150 et si eax = 150 alors on fait le call 10001300. Que reprΘsente 150 ? Encore une fois, 150 = 75 * 2 = taille_du_buffer * 2,et devinez ce qu'il y a dans le call ? La routine d'Θcriture des caractΦres dans ik.dat.

Je n'ai toujours pas compris pourquoi eax = nombre_de_touches_frappΘes * 2, mais bon, on se passera de l'explication.....

Question : comment cracker autrement ik.dll qu'en remplaτant le jl ?

En nopant le inc ecx of course !! Mais il y a plein d'autres facτons !! Par conter, Θviter de noper le inc eax, c'est plus risquΘ ... Mais vous pouvez mettre un cmp ecx, 540BE3FF (petit farceur va :-) ),cmp ebx, 3e8, etc .....

 

Conclu.

Rien de bien difficile, le tout est de trouver la bonne routine .....

Remarques pour l'utilisation de IK : IK est trΦs pratique pour choper les mots de passe des connections internet (qui a dit du lycΘe ???) mais faites gaffe quand mΩme, par exemple rennomer le en 'explorer.exe', 'win386.exe', 'system.exe' et Θvidement, ne laisser pas trainer le fichier dat2txt.exe sur le pc de votre victime, on sait jamais ......
De plus, si le pc est assez lent au dΘmarrage, la fenΩtre ik peut-etre visible pendant 1 ou 2 secondes dans la barre des tΓches.

 

AprΦs l'avoir renommΘ, crΘΘz un fichier ik.reg et exΘcutez le et il contiendra τa :

REGEDIT4

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]

"ik"="C:\\PROGRA~1\\IK\\IK.EXE"

et remplacer ik.exe par system.exe, etc ....

 

nodless@usa.net