begin process at 2012 05 25 11:29:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Assembleur

 > 

Divers

 > 

Général

 > 

Modifier un programme windows en hexadecimal


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Modifier un programme windows en hexadecimal

mercredi 16 juin 2010 à 16:26:08 | Modifier un programme windows en hexadecimal

Zestyr

Bonjours, je savais pas trop où poster ce sujet alors je me suis permis de le faire ici.
Je souhaiterais ajouter des instructions à un programme (.exe). En examinant avec un editeur hexadecimal (EditHexa) des exécutables windows d'un programme HelloWorld que j'ai compilé en C avec Code::Blocks, DevCpp, et Vc j'ai pu remarquer quelques similitudes. J'ai remarquer aussi que des libraries, des commandes, des fonctions et des programmes étaient appelés.


J'aimerais que vous me guidiez vers des documents me permettant de comprendre comment un programme est exécuté sous windows, et des documents sur des méthodes pour ajouter des instructions à un programme.
Enfin bref tous ce qui pourrait m'aider ;)


Merci,
Cordialement Zestyr


Try not ! Do or do not ! There is not try !
mercredi 16 juin 2010 à 19:44:55 | Re : Modifier un programme windows en hexadecimal

patatalo

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
salut,

win 32 assembly, pe header

tu ne peux rien faire avec seulement un éditeur hexa, il te faut également un debugger.

@++
jeudi 17 juin 2010 à 18:56:41 | Re : Modifier un programme windows en hexadecimal

ghuysmans99

Membre Club
Réponse acceptée !
@patatalo : Si si c'est faisable, il sera juste mort avant d'avoir un truc fonctionnel

Plus sérieusement, utilise un debugger comme OllyDbg ou si tu veux quelque chose de plus poussé (mais malheureusement payant), IDA.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
samedi 19 juin 2010 à 12:48:23 | Re : Modifier un programme windows en hexadecimal

Zestyr

Salut, veuillez escuser mon temps de réponse.
Merci beaucoup pour vos réponses
Avec un debugger c'est plus claire. J'aimerais aussi savoir où ( la position ) l'on peut rajouter des instructions en hexa pour qu'elle soit exécutées.

Un grand merci aussi à ceux qui pourront me donner des informations supplémentaire,
Cordialement Zestyr

Try not ! Do or do not ! There is not try !
samedi 19 juin 2010 à 14:46:20 | Re : Modifier un programme windows en hexadecimal

ghuysmans99

Membre Club
Je sais que IDA le fait, mais pour les autres debuggers je l'ignore.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
samedi 19 juin 2010 à 19:43:36 | Re : Modifier un programme windows en hexadecimal

patatalo

Membre Club Administrateur CodeS-SourceS
salut,



tout dépend de ce que ton programme doit faire. Le problème si tu modifie un programme avec son binaire, c'est que tu dois pouvoir justement creer de la place pour ajouter ton code dedans. Soit ajouter une section et lancer dans le programme par un call, jmp ou modifier le point d'entrée, le header pourrait être a modifier (checksum, ...). Soit modifier le programme pour gagner de la place tout en conservant ses besoins de base et ajouter ton code dans les trous obtenus. Avec un programme codé en C, c'est assez simple de gagner de la place, avec un programme codé en assembleur, ça pourrait être plus compliqué vu qu'à la base, il devrait être optimisé.

@++
samedi 19 juin 2010 à 21:36:50 | Re : Modifier un programme windows en hexadecimal

ghuysmans99

Membre Club
La méthode la plus propre à mon sens est d'injecter une DLL dans le programme à son démarrage qui modifiera des morceaux de code de ce dernier. Pour ton info, Windows ne s'occupe pas du checksum des exécutables.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
samedi 19 juin 2010 à 22:13:40 | Re : Modifier un programme windows en hexadecimal

Zestyr

C'est quoi le checksum d'un exécutable ? ( j'ai une petite idée mais bon ... )

@ghuysmans99: Comment s'y prendre pour injecter une DLL ?

@patatalo: Y'a t'il une méthode plus ou moins universel pour faire de la place ? Dans mon exécutable codé en C il y a pleins de octets avec une valeur hexadécimal de 00 qui se suivent, puis-je rajouter des instructions là ? Il y a quelques jours

Try not ! Do or do not ! There is not try !
samedi 19 juin 2010 à 22:55:26 | Re : Modifier un programme windows en hexadecimal

ghuysmans99

Membre Club
1) Réponse sur CodeProject : [ Lien ]

2) Tu dois créer un thread dans le process qui chargera la DLL dans son espace mémoire. Il y a plein d'exemples sur le site.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
mardi 22 juin 2010 à 00:42:03 | Re : Modifier un programme windows en hexadecimal

patatalo

Membre Club Administrateur CodeS-SourceS
re,



non, pas de methodes universelle pour gagner de la place etant donné que déjà, il n'y a pas de code universel.

le plus simple serait peut-être de voir en fin de programme car l'alignement est de 4Ko en memoire mais encore une fois, rien de sur car le code pourrait avoir une taille alignée sur 4ko pile ou un peu moins et donc, pas de place.

il est possible aussi de gratouiller quelques octets par-ci par-là avec les alignements de fonctions.

Sinon, il faut recoder une fonction avec le debugger pour gagner quelques octets et faire les modifs dans le fichier hexa.

tu peux aussi mettre un VirtualAlloc et un ReadFile pour charger un bout de code en mémoire mais ce code n'aura pas d'offset fixe et devra donc être prévu pour fonctionner sans.

Pour la modification des 0, je dirais pourquoi pas mais si tu regarde avec un editeur hexa, assure toi de ne pas être dans la section data. Même en section code, il n'est pas dit qu'un programme n'utiliserait pas cet emplacement pour une raison ou une autre si il s'attends a être initialisé a 0, il pourrait ne plus fonctionner.

Le plus simple serait peut-être quand même d'agrandir la section code.

@++

1 2

Cette discussion est classée dans : programme, windows, not, color, hexadecimal


Répondre à ce message

Sujets en rapport avec ce message

Interagir avec un service windows [ par frobinet ] Bonjour, J'ai crée un service windows (en reprenant les sources diffusés sur ce site) pour gérer un lecteur de carte. Le but étant qu'un seul program Comment lancer une application Windows depuis un programme MSDOS [ par ds6 ] J'ai actuellement une application Base de Données qui tourne sous MSDOS (utilisation en réseau depuis une fenêtre Windows). Elle active automatiquemen Demarrage [ par freegamer ] Bonjours,Je suis en train de develloper un programme limitant les accés en VB, mais j'aimerais aussi empecher sous dos de demarrer Windows en "mode sa control textbox [ par mastercatz ] Bonjour.Je suis en train de faire un programme lié au base de données pour mon boulot. Ce programme affiche les resultats dans des textbox, or il y a call API Windows [ par vecchio56 ] Pourquoi il faut mettre absolument dword ptr avant le nom d'une fonction pour appeler une API de Windows? hlt exception eprivilege [ par NemesisMenphis ] Bonjour,Je programme en delphi mais j'utilise de l'assembleur dans une partie de mon code :asm hlt;end;Mais j'ai un probléme lors de la compilation, un programme pour programmer en assembleur [ par cricri_b34 ] j'aimerais essayer de créer un petit programme en assembleur... mais je n'ai pas de programme pour le compiler :-/est ce que quelqu'un connaitrais un Appel d'API windows en ASM avec VC++ [ par cancooler ] Bonjour a tous, voici ma question: Je desirerai appeler une API windows dans un bloc de code ASM compilé avec VC++Voila le code qui me pose probleme: portabilité du code [ par sajid_morad ] salut tout le monde, je programme avec le visaul c++ , et j ai inserer un code asm dans mon programme, sashant que j ai un micro pricesseur pentium, v programme c et asm?? [ par manycalavera ] g 1 projet sur le bp led(bouton poussoir et lampe) et g du mal. Pouvez vous m'aidez?je dois appuyer sur le bouton poussoir et la lampe doit s'allumer


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales