Je me demandais si avec autoit il est possible de modifier un fichier binaire en l'éditant en hexadécimal?
Par exemple avec un fichier comme celui-ci que j'ouvre avec un éditeur hexa:

Lui dire de modifier l'offsset 886 par une autre valeur hexa?


Code : Tout sélectionner
#Include <Array.au3>
$file_in = "77162099.png"
$file_out = "test.png"
$file = FileOpen($file_in, 16)
$caract = StringRegExp(FileRead($file), '[[:xdigit:]]{2}', 3)
FileClose($file)
_arraydisplay($caract, "fichier")
$txt = ""
For $i = 0 to UBound($caract)-1
$txt &= $caract[$i]
Next
$file2 = FileOpen($file_out, 17)
FileWrite($file2, "0x" & $txt)
FileClose($file2)


Code : Tout sélectionner
#Include <Array.au3>
$file_in = "1STD.SET"
$file = FileOpen($file_in, 16)
$caract = StringRegExp(FileRead($file), '[[:xdigit:]]{2}', 3)
FileClose($file)
$txt = "offset 67422 à 67435 :" &@crlf&@crlf
For $i = 67422 to 67435
$txt &= Chr("0x" & $caract[$i])
Next
msgbox(0,"", $txt)
Code : Tout sélectionner
#Include <Array.au3>
#include<File.au3>
;Ouverture du fichier et mise dans un tableau
$fichier_a_ouvrir = "1STD.SET"
$fichier = FileOpen($fichier_a_ouvrir, 16)
$tableau_fichier = StringRegExp(FileRead($fichier), '[[:xdigit:]]{2}', 3)
FileClose($fichier)
;Declaration des varaibles
$debut_nom = 17712
$longueur_fullname = 38
$longueur_shortname = 14
Dim $csv[36] = ["FULL NAME (max 38 characters);SHORT NAME (max 14 characters);COLOR ID (1 character)"]
;Assignation de $i au début des noms d'entreprises
$i = $debut_nom
For $y = 1 to 35
$ligne = ""
;Récupération du FULLNAME
For $i = $i to $i + $longueur_fullname
$ligne &= Chr("0x" & $tableau_fichier[$i])
Next
$i = $i + 1
$ligne &= ";"
;Récupération du SHORTNAME
For $i = $i to $i + $longueur_shortname
$ligne &= Chr("0x" & $tableau_fichier[$i])
Next
$i = $i + 1
$ligne &= ";"
;Récupération du Color_ID
$ligne &= Chr("0x" & $tableau_fichier[$i])
$i = $i + 11
;Assignation du mot dans un tableau pour export en csv
$csv[$y] = $ligne
Next
;Affichage du tableau
_FileWriteFromArray("test.csv", $csv)
_arraydisplay($csv, "fichier")