Bonjour à tous, je cherche un editeur hexa en ligne de commande afin de pouvoir remplacer un octet d’un ficher par un autre, et ce sous DOS 6.22 en batch.
Si tu as encore ton DOS 6.2, tu as peut être aussi gardé un vieux pctools ou pcshell ?
Si je me souviens bien, il y avait un mode éditeur hexa qui ressemblait à ça
Voilà une aide pour utiliser la commande “debug” sous DOS mirror.href.com…
donc
pour écrire 1 2 3 4 au début du fichier par exemple. faire debug < commandes.txt pour automtiser et mettre en ligne de commandes.
Malheureusement, il est dit explicitement que la taille est limité à la mémorie conventionnelle, ce qui risque d’être un peu limite vu l’exemple que tu donnais.
Sinon, voici mon oeuvre, garantie bugée, mais qui fonctionnesi on donne les bon paramètres.
çacompile sous C++ Borland 5.0 (un version qui produit ausi bien du DOS que du Win16 et un WIN32)
#include <stdio.h>
int main(int argc, char* argv[]){
if(argc<4){
printf("Usage: \nwrite file offset byte");
return 1;
}
FILE * f = fopen( argv[1],"r+");
long offset;
sscanf(argv[2],"%lx",&offset);
int value;
sscanf(argv[3],"%x",&value);
fseek(f,offset,0);
int result = fwrite(&value,1,1,f);
fclose(f);
return 0;
}
par contre, pour le EXE, faut un endroit pour le hoster, vous en connaissez un? DOSHEX.zip
doshex file.txt 3 65
écritsur le 3ème caractère la letre A
contrairement à son nom, faut mette du décimal (ça fait longtemps que j’ai pas fait de C)
je ne l’ai pas testé pour de grands fichiers.
Edité le 22/11/2007 à 12:14
J’ai rechargé mon vieux dos 6.2 et mon vieux pctools parce que je ne me rappelais plus exactement comment ça fonctionnait :
Tu lances pctools, tu sélectionnes ton fichier et tu appuies sur E(dit) puis sur F1 et le tour est joué
Ca c’est pour les adresses relatives (à l’intérieur du fichier)
Si tu travailles sur des adresses disque, il te faudra appuyer sur F3 à l’entrée dans le programme pour accéder aux fonctions disque
Edit:
Si ça marche avec pctools, ca doit marcher aussi avec pcshell
Edité le 16/11/2007 à 11:02
Bonjour,
Ah oui exact, j’avais prévenue pour les bugs
Faut donc que je remette en long, et que je trouve le format du sprintf pour ça, j’ai pas le compilo Borland sous la main, je refais un soir