CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Changer image dans Executable

Volgo
Volgo
Niveau 13
11 juin 2007 à 17:03:38

Une petite question en passant :

Quand je fais de la traduction, les mots français prennent souvent + de lettres que les mots anglais.

Or si j´en met trop ça déborde sur les autres mots etc...

Et quand j´ajoute un octet l´exe ne marche plus du tout après.

Il y a un moyen pour remediter à cela ? :)

Volgo
Volgo
Niveau 13
11 juin 2007 à 17:04:03

Remedier*

Fvirtman
Fvirtman
Niveau 10
11 juin 2007 à 17:26:53

Difficilement :
il y 2 façons (usuelles) de coder une chaine :
- NULL Terminated : tu écris la chaine, et tu écris un 00 a la fin pour signaler qu´elle est finie -> si tu enleves le 00, tu courres au crash
- précédée par la taille : juste avant la chaine, tu as 1, 2, ou 4 octets (dépend du codage) qui disent combien il y a de caracteres.
Dans le 2e cas, si tu modifies la taille de la chaine, il faut mettre ce nombre a jour.
Dans le 1er cas, toujorus finir par un 00 (NULL terminated)

Si tu veux ralonger une chaine, il faut INSEER des octets : tous les éditeurs hexa ne le font pas. ça va décaler tout ce qu´il y a apres.
Donc si la lecture est séquentielle, ça marchera, mais si, dans le codage du fichier, tu as un offset (un pointeur interne, qui pointe sur une zone plus loin dans le fichier) -> tu es mort :)
Et il y a des offset dans beaucoup de fichiers :) Donc a mon avis, il va falloir te contenter de garder la meme taille de chaine :)

Volgo
Volgo
Niveau 13
11 juin 2007 à 18:24:47

Ok ça marche ;)

Pour les 00 à la fin, oui je suis au courant. :)

Par contre, comment je peux savoir les octets qui me disent combien il y a de caractere ?

Car au pire, je rajoute des caractere et je met le bon octet au début de la chaine. :)

Volgo
Volgo
Niveau 13
11 juin 2007 à 18:26:14

En fait j´avais remarqué qu´avant une liste de texte, il y a toujours un caractere spécial avant cette chaîne. :)

Volgo
Volgo
Niveau 13
11 juin 2007 à 18:29:49

Pour bien comprendre :

http://www.enregistrersous.com/images/154470477220070611182850.jpg

Est ce que le "04" est l´octet qui précede la chaine pour dire combien il y aura de caractere ? :)

dnob700
dnob700
Niveau 10
11 juin 2007 à 20:51:32

dans un exécutable il est complètement impossible d´insérer des octets, génrallement les données sont au début du programmes, mais en plus, elles sont toujours accédées par des pointeurs. Et enfin, ajouter des octets vide, même à la fin du programme l´empêche souvent de démarrer.

Par contre, il y a des logiciels qui permette d´éditer les fichiers de ressource d´un programme, c´est vers ça qu´il faut se tourner pour modifier une image.

Volgo
Volgo
Niveau 13
11 juin 2007 à 22:52:18

Merci :-)))

Quel logiciel par exemple ?

J´ai été voir pas mal de sites et à part ressource hacker et je ne sais plus quel programme, il ne me permettre pas de voir/modifier/supprimer cette image :/

Fvirtman
Fvirtman
Niveau 10
12 juin 2007 à 13:49:59

Quand je regarde ton image, je ne vois pas de chaine.
Je vois un int (4 octets)

04 00 00 00 (n´oublie pas que sur les Intel et compatibles, on est en little endian, donc le poids faible est a gauche ! donc 04 00 00 00 = 4 et non 0x4000000)

Je voi ensuite un short de valeur 4C 00
je vois ensuite un int (ou un short) 32 00 00 00 (ou 32 00), apres faut voir.
En aucun cas une chaine : en effet, dans une chaine, tu n´as pas de 00 (sauf poru le NULL terminated). De plus, si une chaine est codée en NULL terminated, il n´est pas nécessaire d´y préfixer la taille : une analyse séquentielle jusqu´au 00 te permet de trouver la taille.

Volgo
Volgo
Niveau 13
12 juin 2007 à 14:23:58

Merci pour les infos :-)))

Fvirtman
Fvirtman
Niveau 10
12 juin 2007 à 14:48:10

mais comem je te disais, et comme Dnob confirmait : si dans le fichier (ce qui est fort probable), il y a un pointeur interne, tu es mort si tu fais un décalage :)

Volgo
Volgo
Niveau 13
12 juin 2007 à 19:06:25

A chaque fois que j´inserais un décalage, l´exe plantai. ^^ :/

gollumkawder
gollumkawder
Niveau 10
13 juin 2007 à 16:35:33

Hmm, ca serait une idee de desassembler, mettre du texte a la fin du programme (en general ya un peu de place), et modifier l´appel a l´ancien emplacement du texte par le texte a la fin, sans oublier de retourner la ou il faut apres..

dnob700
dnob700
Niveau 10
13 juin 2007 à 18:27:37

Une fois que c´est désassembler, il devrait suffire de modifier le fichier de ressource et tout recompiler (ou effectivement modifier les chaines, mais un code désasembler est modifiable vu qu´il y a des label (si le désassembleur est bon), n´empêche, je n´ai jamais essayé pour voir si effectivement, ça fonctionne.

gollumkawder
gollumkawder
Niveau 10
14 juin 2007 à 09:49:13

Un debugger Ring3 comme OllyDbg peut faire cela. Cette ´technique´ est pratique pour rajouter un menu ou juste une option dans une application par exemple, tu mets tout le code supplementaire a la fin.

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment