Modification de parties de fichiers binarys compilés

a appris l’anglais comme deuxième langue, désolé pour les erreurs et la maladresse

J’ai donné un projet particulier sur lequel travailler. La société a perdu le code source de l’application et je dois y apporter des modifications. Maintenant, l’ingénierie inverse est impossible pour un seul homme, c’est trop énorme, bien qu’il soit possible de corriger des fonctions individuelles, car les changements ne sont pas si monumentaux.

Donc, une solution possible serait de comstackr le code C et, après réécriture des adresses, de le patcher dans le binary réel, idéalement, de remplacer le code auquel l’instruction CALL saute ou d’insérer un JMP dans mon code.

Y at-il un moyen d’accomplir cela en utilisant MingW32? Si oui, pouvez-vous donner un exemple simple? Je suis également intéressé par des livres qui pourraient m’aider à accomplir cette tâche.

Merci de votre aide

    J’utilise OllyDBG pour ce genre de choses. Il vous permet de voir le désassemblage et de le déboguer, vous pouvez placer des points d’arrêt, etc., et vous pouvez également éditer le binary. Vous pouvez donc éditer l’en-tête PE de ce programme en ajoutant une section de code avec votre code (compilé) à l’intérieur, puis l’appeler à partir du programme d’origine.
    Je ne peux vous donner aucun conseil car je n’ai jamais essayé, même si j’y ai réfléchi à maintes resockets. Tu sais, la paresse .. 🙂

    Je désassemblerais le programme avec un désassembleur de haute qualité qui produirait quelque chose qui pourrait être réassemblé dans une application exécutable, puis remplacerais les pièces à modifier avec du code C.

    Quelque chose comme cela vous permettra d’inverser le code machine en source. Ce ne sera pas joli mais ça marche.

    http://www.hex-rays.com/idapro/

    Il existe également des outils pour patcher l’exécution http://www.dyninst.org/ par exemple. Ils ne sont vraiment pas faits pour patcher mais ils peuvent faire l’affaire.

    Et bien sûr, le dernier choix consiste simplement à utiliser un assembleur et à écrire le code machine 🙂