---------> Furb3T<---------
presenta:
Dongle: primi passi.
Attenzione : il materiale che trovatein questo tutorial è a puro scopo didattico.
Cari studenti, oggi affronteremo un tipo diprotezione che ultimamente va per la maggiore: la chiave hardware, in inglese Dongle.Questa protezione consiste in un plug che si inserisce nella porta parallela del computerdove dovrebbe girare quel determinato programma; questo non fa altro che verificare se èinserita questa chiave nella porta ( I problema da superare), dopodichè passerà ilcontrollo alla chiave che verificherà alcuni requisiti ( II problema da superare). Avretecapito, quindi, che per i nostri scopi, in primo luogo bisognerà far vedere al prg lachiave hardware e in secondo luogo dovremmo capire qual è lo schema di protezione cheviene elaborato nella chiave per superare quest'altro scoglio. Vorrei fare alcuneprecisazioni: esistono diversi tipi di chiavi hw, nel momento in cui riconoscete ilmomento vi suggerisco di andare nel sito dei costruttori di quella chiave e leggere lecaratteristiche, ciò vi aiuterà nell'affrontare meglio il problema; altra precisazione:le chiavi hw possono essere delle cose facilissime da bypassare, ma non tutte sono cosìanzi alcune di queste potrebbero svolgere alcune routine del prg, ed in questo casosarebbe difficile ricostruire tutta la routine, ma il nostro motto è non scoraggiarsimai, anzi è proprio dalle difficoltà che si matura e si trovano nuove strade da percorrere.
Iniziamo a muoverci!!! Il prg ( molto semplice) che ho preso come riferimento è CpsWin32 versione 1.15
00419082 CALL 0056859B
00419087 MOV DWORD PTR [EBP-1C], AX
0041908B MOV EDX, DWORD PTR [EBP-1C] istruzioni cheseguono il valore di
0041908E AND EDX, 0000FFFF EDX venga variatofino a diventare = FFFF, ciò
00419094 TEST EDX,EDX dovrebbe far pensareche il JZ non dovrebbe essere
00419096 JZ 004190C5 rilevante ai nostrifini.
Continuiamoquindi a steppare per vedere cosa succede e se le nostre intuizioni erano giuste:
004190C5 MOV DWORD PTR [0075F5F4], 0000
004190E2 XOR EDX,EDX ---> EDX viene azzerato (Possibileinizializzazione?)
004190E4 MOV DX, DWORD PTR [0075F5F4] ---> Muove la flag aDx
004190EB CMP EDX, DWORD PTR [EBP-18] ---> Cosa è EBP-18?
004190EE JGE 00419159 ---> jump importante
Se andiamo a vedere il valore di EBP-18, ( DEBP-18) vediamo che questo è 5; probabilmente nel check che è stato fatto dallaprecendente call è stato rilevato che non c'è la chiave hw e il risultato di questoerrore (5) è stato messo in EBP-18. Provate a editare la flag di EBP-18 e al posto di 5mettete 0 ( 0 perchè è il valore che viene attribuito a EDX), in questo modo avverrà ilJGE ma ancora non avremo finito di operare: rimane da risolvere il II problema.Procediamo:
00419159 MOV DWORD PTR [0075F5F4], 003F
00419162 PUSH 0075F1E8
00419167 MOV DX, DWORD PTR [0075F5F4]
00419174 CALL 00568595 --> questa call dovrebbe leggere idati dalla chiave
00419179 MOV DWORD PTR [EBP-1C], AX --> i dati da Axvengono memorizzati in [Ebp-1C]
0041917D MOV DWORD PTR [0075F5F4], 0005
00419186 XOR EAX,EAX ---> inizializza Eax
00419188 MOV AX, DWORD PTR [0075F1E8] ---> Ax = FFFF
0041918E XOR ECX,ECX ---> inizializza Ecx
00419190 MOV CX, DWORD PTR [0075F5F4]
00419197 XOR EDX,EDX ---> inizializza Edx
00419199 MOV DX, DWORD PTR [EBP+2*ECX-28] ---> Dx =
0041919E CMP EAX,EDX ---> compara Eax a Edx
004191A0 JZ 004191CC ---> Altro jump importante.
Che fortuna!!! il prg compara Eax con Edx,dove Eax riporta l'errore (FFFF) mentre Edx riporta il valore esatto (5460). A questopunto basterebbe cambiare la flag a Eax portandola = 5460 per ottenere il jump che abilitail prg. Provare per Credere!!!!
Ringraziamenti : A tutto il mio gruppo preferito RingZer0
|
Top: Sicurezza su Internet -
Back This page last updated: Friday 08 November 2002 at 3:58pm Please send any comments on this page to Astalalista. |
|
| Labelled with ICRA | Use this button to NOT browser button |
| Member of BannerPower Rotation System |