Modification d'octets dans un prog ! aidezz moi

cs_Swop Messages postés 20 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 1 juin 2005 - 14 juin 2004 à 12:41
cs_Swop Messages postés 20 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 1 juin 2005 - 14 juin 2004 à 19:02
j'ai fait un patcheur qui modifie les bytes d'un fichier exe avec la fonction suivante :

Open "programme.exe" For Binary As #1
Put #1 , offset + 1, Byte
Close #1


Cela marche parfaitement, mais le problème, c'est qu'il ne modifie pas seulement que le byte demandé. Il remple le byte suivant par "00", et ça modifie certaines fonctions du prog qui le font généralement planter. Quelqun pourait m'aider ???

7 réponses

cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
14 juin 2004 à 13:25
Ce qui est bizarre, c'est qu'on dirait qu'il traite ta modification comme une modification de caractère dans un fichier Texte Unicode.
0
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
14 juin 2004 à 13:31
Je te mets quelques éléments de l'aide de VB

Ce qui pourrait expliquer ton problème
If the variable being written is a Variant of VarType 8 (String), Put writes 2 bytes identifying the VarType, 2 bytes indicating the length of the string, and then writes the string data. The record length specified by the Len clause in the Open statement must be at least 4 bytes greater than the actual length of the string.


Ce qui pourrait régler ton problème
If the variable being written is a fixed-size array, Put writes only the data. No descriptor is written to disk.


Un exemple Ms
VarString$ = String$(10," ")
Put #1,,VarString$
0
cs_Swop Messages postés 20 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 1 juin 2005
14 juin 2004 à 14:49
je ne sais pas, le byte qui remplace l'otre est en héxa (ex : &HEB) je ne sait pas si il considère cela come un text Unicode.
Les changements sont parfaits, et après avoir lu tes exstraits, je ne comprend pas pourquoi il continu à placer un "00" sur le byte suivant ...
et sinon, dans l'exemple Ms, à koi correspond le 10 et le " " ??
merci d'avance
swop
0
cs_Swop Messages postés 20 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 1 juin 2005
14 juin 2004 à 15:38
aidez moi plizz ' c'est un projet que je doi rendre très bien tot !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
14 juin 2004 à 17:26
Bonjour
PhilippeE >
Les citations de MSDN concernent les fichiers ouverts en mode Random

Pour les fichiers ouverts en mode Binary, MSDN dit :
L'instruction Put écrit les chaînes de longueur variable qui ne sont pas des éléments de type défini par l'utilisateur, sans rechercher le descripteur de 2 octets. Le nombre d'octets écrits est égal au nombre de caractères de la chaîne.

Swop >
Si tu veux écrire l'octet de valeur 235 (&HEB) à l'offset "offset + 1", il ne faut pas faire inscrire la valeur numérique &HEB (dans ce cas, 2 octets sont inscrits :
&HEB à offset + 1
&H00 à offset + 2)
mais le caractère dont le code ASCII est &HEB :

Put #1 , offset + 1, Chr$(&HEB)
0
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
14 juin 2004 à 17:52
Les règles des écritures en mode Binary et Random ne sont pas aussi différentes que tu sembles le croire, avec des variables de longueur indéterminée, le mode Binary comme le mode Random vont écrire des choses en trop.

Dans mon exemple, avec une string à taille fixe on écrit que 10 octets au lieu de 12, même dans un fichier en mode Binaire.

Dans tous les cas, il faut utiliser des variables à longueur fixe.

Sinon dans mon exemple String(10," ") je créais une chaîne de 10 caractères initialisés à " ". Dans ton cas String(1,chr$(&HEB)).
0
cs_Swop Messages postés 20 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 1 juin 2005
14 juin 2004 à 19:02
merci beacoup pour votre aide, je vais essayer ces techniques ...
swop
0
Rejoignez-nous