Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
sthack4:crackm3 [2014/04/22 03:22] c4ffein créée |
sthack4:crackm3 [2017/04/09 15:33] (Version actuelle) |
||
---|---|---|---|
Ligne 244: | Ligne 244: | ||
</code> | </code> | ||
- | Ce qu'on remarque en premier, il y a un switch qui couvre toutes les lettres de l'alphabet. | + | Ce qu'on remarque en premier, il y'a un switch qui couvre toutes les lettres de l'alphabet. |
- | Ce switch est appele quand une touche est pressee (004108BC : Case 100 (WM_KEYDOWN) of switch...) | + | Ce switch est appelé quand une touche est pressée (004108BC : Case 100 (WM_KEYDOWN) of switch...) |
- | Pour presque toutes les lettres, ce qu il y a a l addresse 00418B20 est compare a un nombre qui va de 0 a une trentaine puis un jump vers 0041094C, par exemple: | + | Pour presque toutes les lettres, il y a une comparaison entre l'entier à l'addresse 00418B20 et un nombre qui va de 0 a une trentaine, puis un jump vers 0041094C, par exemple: |
<code ASM> | <code ASM> | ||
CMP DWORD PTR [418B20],10 ; Case 41 ('A') of switch 004108BF | CMP DWORD PTR [418B20],10 ; Case 41 ('A') of switch 004108BF | ||
Ligne 257: | Ligne 257: | ||
</code> | </code> | ||
- | On pourrait continuer l'analyse, mais on va deja suposer qu'il y a a l addresse 004108BF un compteur de touches pressees, et que ces CMP servent a verifier que les touches du clavier ont bien ete pressees dans l'ordre. | + | On pourrait continuer l'analyse, mais on peut déjà suposer que l'addresse 004108BF sert à compter les touches pressées, et que ces CMP servent donc a verifier que les touches du clavier ont bien été pressées dans l'ordre. |
- | Il faudrait donc lire les valeurs des comp pour savoir quelles sont les positions des lettres dans le mot de passe : | + | Il faudrait donc lire les valeurs des CMP pour savoir quelles sont les positions des lettres dans le mot de passe. |
+ | |||
+ | |||
+ | |||
+ | |||
+ | Si la mauvaise touche est pressée, PTR [418B20] est remis à 1 : | ||
+ | <code ASM> | ||
+ | 0041090C |> C705 208B4100>MOV DWORD PTR [418B20],1 | ||
+ | </code> | ||
+ | On cherche donc pour quelle touche une comparaison à 1 est effectuée. | ||
+ | Pour le T: | ||
+ | <code ASM> | ||
+ | 00410A37 |> A1 208B4100 MOV EAX,DWORD PTR [418B20] | ||
+ | 00410A3C |. 33FF XOR EDI,EDI ; EDI = 0 | ||
+ | 00410A3E |. 47 INC EDI ; EDI = 1 | ||
+ | 00410A3F |. 3BC7 CMP EAX,EDI ; On compare eax a 1 | ||
+ | 00410A41 |. 74 10 JE SHORT CrackM3-.00410A53 ; La touche est validé si T est pressée en 1er | ||
+ | 00410A43 |. 83F8 12 CMP EAX,12 ; Mais aussi a 0x12 | ||
+ | 00410A46 |. 74 0B JE SHORT CrackM3-.00410A53 ; Donc il y a un T en 18ème position | ||
+ | 00410A48 |. 893D 208B4100 MOV DWORD PTR [418B20],EDI ; Si les JE n'ont pas été suivis, alors T n'as pas été pressé au bon moment, PTR [418B20] reprend la valeur 1 | ||
+ | 00410A4E |. E9 AC000000 JMP CrackM3-.00410AFF | ||
+ | </code> | ||
+ | On peut commencer à remplir le mot de passe : | ||
+ | <code> | ||
+ | T________________T | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <code ASM> | ||
+ | 004109AC |> 833D 208B4100>CMP DWORD PTR [418B20],2 ; Case 48 ('H') of switch 004108BF | ||
+ | </code> | ||
+ | <code> | ||
+ | TH_______________T | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <code ASM> | ||
+ | 004108F3 |. A1 208B4100 MOV EAX,DWORD PTR [418B20] ; Case 45 ('E') of switch 004108BF | ||
+ | 004108F8 |. 83F8 03 CMP EAX,3 | ||
+ | 004108FB |. 74 51 JE SHORT CrackM3-.0041094E | ||
+ | 004108FD |. 83F8 06 CMP EAX,6 | ||
+ | 00410900 |. 74 4C JE SHORT CrackM3-.0041094E | ||
+ | 00410902 |. 83F8 0C CMP EAX,0C | ||
+ | 00410905 |. 74 47 JE SHORT CrackM3-.0041094E | ||
+ | 00410907 |. 83F8 13 CMP EAX,13 | ||
+ | 0041090A |> 74 42 JE SHORT CrackM3-.0041094E | ||
+ | 0041090C |> C705 208B4100>MOV DWORD PTR [418B20],1 ; Default case of switch 004108BF | ||
+ | 00410916 |. E9 E4010000 JMP CrackM3-.00410AFF | ||
+ | </code> | ||
+ | <code> | ||
+ | THE__E_____E_____TE | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <code ASM> | ||
+ | 0041093F |> A1 208B4100 MOV EAX,DWORD PTR [418B20] ; Case 20 (' ') of switch 004108BF | ||
+ | 00410944 |. 83F8 04 CMP EAX,4 | ||
+ | 00410947 |. 74 05 JE SHORT CrackM3-.0041094E ; Si pressée en 4ème, saute vers l'incrémentation de PTR [418B20] | ||
+ | 00410949 |. 83F8 0E CMP EAX,0E | ||
+ | 0041094C |>^ 75 BE JNZ SHORT CrackM3-.0041090C ; Si n'est pas pressée en 14ème, saute vers la réinitialisation de PTR [418B20] | ||
+ | </code> | ||
+ | <code> | ||
+ | THE _E_____E_ ___TE | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <code ASM> | ||
+ | 00410991 |> 833D 208B4100>CMP DWORD PTR [418B20],5 ; Case 4B ('K') of switch 004108BF | ||
+ | 00410998 |.^ EB B2 JMP SHORT CrackM3-.0041094C | ||
+ | </code> | ||
+ | <code> | ||
+ | THE KE_____E_ ___TE | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | <code ASM> | ||
+ | 00410A9A |> 833D 208B4100>CMP DWORD PTR [418B20],7 ; Case 59 ('Y') of switch 004108BF | ||
+ | 00410AA1 |.^ E9 A6FEFFFF JMP CrackM3-.0041094C | ||
+ | </code> | ||
+ | <code> | ||
+ | THE KEY____E_ ___TE | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <code ASM> | ||
+ | 00410988 |. 833D 208B4100>CMP DWORD PTR [418B20],8 ; Case 4C ('L') of switch 004108BF | ||
+ | 0041098F |.^ EB BB JMP SHORT CrackM3-.0041094C | ||
+ | </code> | ||
+ | <code> | ||
+ | THE KEYL___E_ ___TE | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <code ASM> | ||
+ | 004109F1 |> 833D 208B4100>CMP DWORD PTR [418B20],9 ; Case 4F ('O') of switch 004108BF | ||
+ | 004109F8 |.^ E9 4FFFFFFF JMP CrackM3-.0041094C | ||
+ | </code> | ||
+ | <code> | ||
+ | THE KEYLO__E_ ___TE | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <code ASM> | ||
+ | 004109B5 |> A1 208B4100 MOV EAX,DWORD PTR [418B20] ; Case 47 ('G') of switch 004108BF | ||
+ | 004109BA |. 3BC1 CMP EAX,ECX | ||
+ | 004109BC |.^ 74 90 JE SHORT CrackM3-.0041094E | ||
+ | 004109BE |. 83F8 0B CMP EAX,0B | ||
+ | 004109C1 |.^ E9 44FFFFFF JMP CrackM3-.0041090A | ||
+ | </code> | ||
+ | <code> | ||
+ | THE KEYLOGGE_ ___TE | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <code ASM> | ||
+ | 00410A15 |> A1 208B4100 MOV EAX,DWORD PTR [418B20] ; Case 52 ('R') of switch 004108BF | ||
+ | 00410A1A |. 83F8 0D CMP EAX,0D | ||
+ | 00410A1D |.^ 0F84 2BFFFFFF JE CrackM3-.0041094E | ||
+ | 00410A23 |. 83F8 14 CMP EAX,14 | ||
+ | 00410A26 |.^ E9 DFFEFFFF JMP CrackM3-.0041090A | ||
+ | </code> | ||
+ | <code> | ||
+ | THE KEYLOGGER ___TER | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <code ASM> | ||
+ | 004109C6 |> 833D 208B4100>CMP DWORD PTR [418B20],0F ; Case 4D ('M') of switch 004108BF | ||
+ | 004109CD |.^ E9 7AFFFFFF JMP CrackM3-.0041094C | ||
+ | </code> | ||
+ | <code> | ||
+ | THE KEYLOGGER M__TER | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <code ASM> | ||
+ | 00410936 |> 833D 208B4100>CMP DWORD PTR [418B20],10 ; Case 41 ('A') of switch 004108BF | ||
+ | 0041093D |. EB 0D JMP SHORT CrackM3-.0041094C | ||
+ | </code> | ||
+ | <code> | ||
+ | THE KEYLOGGER MA_TER | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <code ASM> | ||
+ | 00410A2B |> 833D 208B4100>CMP DWORD PTR [418B20],11 ; Case 53 ('S') of switch 004108BF | ||
+ | 00410A32 |.^ E9 15FFFFFF JMP CrackM3-.0041094C | ||
+ | </code> | ||
+ | <code> | ||
+ | THE KEYLOGGER MASTER | ||
+ | </code> | ||
+ | |||
+ | Le mot de passe est donc "The keylogger master" ; il faut le rentrer assez vite pour voir apparaitre le goodboy. | ||
+ | |||
+ | |||
+ | --- //c4ffein// |