Cherche editeur hexa DOS

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.

genre : HEX monficher.exe -offset 4353 -write 4c

quelqu’un aurait ca en stock?

d’avance merci

Si j’avais un compilo C, c’est le genre de truc que j’aurai fait en moins de 4 secondes…

Regarde voir du côté de GnuWin32 (http://gnuwin32.sourceforge.net)
Edité le 14/11/2007 à 19:04

dos hex editor[/url] sur google : [url=http://www.bookcase.com/library/software/msdos.util.binedit.html]www.bookcase.com…

en gros j’ai besoin d’ecrire en bas ce qu’il y a en haut :
et ce en ligne de commande ms-dos genre dans un ficher .BAT

http://dl.free.fr/haXuwkkW7/MEMBAtpatch.png


Edité le 15/11/2007 à 13:47

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

Merci gcc,
mais je n’ai pas trouvé mon bonheur du coté de pc-tools :frowning:

je cherche un programme qui puisse ecrire quelque chose dans un ficher à une adresse donné, le tout en commande dos.

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

Merci deltree pour le prog compilé, (j’ai pas Borland C++)

j’ai bien essayé mais voilà il m’ecrit ‘FA’ à l’offset 15028 en lieu de l’offset 604852 :frowning:

la commande:
DOSHEX.EXE DIVERS.MFR 604852 250

est-ce l’offset en ‘int’ qui devrait etre en ‘long’?

Bonjour,
Ah oui exact, j’avais prévenue pour les bugs :smiley:
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 :wink:

Thanks :wink:

Voilà, j’ai édité le source sus-cité, maintenant les paramètres sont bien en hexa, et j’utilise un long, on doit être moins limité en taille.

donc essaye avec ça:
doshex(3).zip

Ca fonctionne tout simplement nikel!

Merci deltree :clap:

mon fichier bat:

COPY DIVERS.MFR DIVERS_OLD.MFR
DOSHEX DIVERS.MFR 93AB4 FA
DOSHEX DIVERS.MFR 93BA7 16
DOSHEX DIVERS.MFR 93BA8 09
DOSHEX DIVERS.MFR 93BA9 43
DOSHEX DIVERS.MFR 93BAA 79
DOSHEX DIVERS.MFR 93BAB 12
DOSHEX DIVERS.MFR 93BAC 40

Petite dernière question en DOS, je fais une sauvegarde de mon fichier avant modif, comment faire un nom de fichier avec la date du jour dans le nom?