Modification d'une Application Windows

TristanLeBoss Messages postés 2 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 24 janvier 2005 - 24 janv. 2005 à 04:51
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 - 24 janv. 2005 à 10:20
Bonjour,
Voilà, je cherche un peu d'aide concernant la modification d'une application windows. Je ne vais pas rentrer dans les détails mais il s'agit d'une petite application (1,13 Mo, Delphi) qui gère la base de données (sous forme de fichiers) des musiques de mon balladeur MP3. Je connais la structure de ces fichiers et ils contiennent, entre autres, 2 checksums. Ce que je veux faire, à défaut de connaitre le moyen de calculer ces checksums, est de supprimer la vérification par l'application de ces 2 checksums (en effet, le balladeur ne les vérifie pas, lui). Pour cela, j'ai commencé par désassembler l'application avec IDA (www.datarescue) puis j'ai cherché le string ("Database crashed!!") qui s'affichait lorsque les checksums étaient incorrects. Il est déclaré trois fois dans l'application sous la forme :

_str_Database_crashe_0 dd 0FFFFFFFFh
dd 62
db 'Database crashed!!',0Dh,0Ah
db 'You should rebuild database for operation.',0

IDA m'a conduit aux endroits (3 mais seulement 2 semblent être utilisés par l'application) qui "utilisaient" ce string et à chaque fois ça donne ça :

mov eax, offset _str_Database_crashe_0.Text
call @Dialogs@ShowMessage$qqrx17System@AnsiString

C'est ce code qui affiche la boite de dialogue avec le message. En regardant attentivement, j'ai remarqué que dans les trois cas, un jump (JNZ (75xx), JZ (OF84xx)) nous conduisait directement à l'affichage de la boite de dialogue. Je me suis donc dit qu'en changeant ces jumps par leur "inverse" (JNZ (75xx) par JZ (74xx) et JZ (0F84xx) par JNZ (0F85xx)) je pourrai "bypasser" la vérification du checksum ... malheureusement, ça ne marche pas et une des 2 vérifications éfectives est toujours fonctionnelle et du coup le programme m'affiche le message.

Je sais que mon problème vient du fait que j'ai un peu de mal à comprendre l'assembleur et je voulais savoir si une personne pouvait me donner un pitit coup de main . Je pense pas que ce soit bien bien dur et long. Si quelqu'un est intéréssé ....

2 réponses

TristanLeBoss Messages postés 2 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 24 janvier 2005
24 janv. 2005 à 04:54
Hum, désolé, j'ai oublié la fin du message (la fatigue sûrement lol) :

Merci d'avance.

Tristan
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
24 janv. 2005 à 10:20
salut,


une instruction 75XX et 0F85XX n'est pas la meme instruction, la premiere est jBYTE l'autre est jDWORD.


@++
0
Rejoignez-nous