Quel est le meilleur outil pour convertir les binaires PE en binaires elfes? P>
Voici une brève motivation pour cette question: p>
Étant donné que toute analyse doit fonctionner sur Linux, je préférerais un utilitaire / outil qui fonctionne sous Linux. P>
merci p>
3 Réponses :
Je ne sais pas si cela correspond totalement à vos besoins, mais c'est une option pour vous de croiser avec votre version Mingw de GCC? p>
Je veux dire faire: Est-ce que cela répond à vos besoins pour que I586-MINGW32MSVC-GCC compilent directement vers des fichiers binaires au format Elf (au lieu des PS que vous obtenez actuellement). Une description de la façon de faire des choses dans l'autre sens peut être trouvée ici - i Imaginez que ce sera un petit hacky mais tout à fait possible de faire ce travail pour vous dans l'autre sens (je dois admettre que je ne l'ai pas essayé). P>
Il est possible de reconstruire un exe en tant que binaire elfe, mais le binaire résultant segfault très peu après le chargement, en raison du système d'exploitation manquant.
Voici une méthode de le faire. P>
ld code> avec le script de liaison pour produire le fichier ELF. LI>
- Exécutez le nouveau programme et regardez-le Segfault car il ne fonctionne pas sous Windows (et il essaie d'appeler des fonctions dans le tableau d'adresses d'importation, qui n'existe pas). LI>
OL>
Exemple détaillé H2>
-
vider les en-têtes de section du fichier EXE. J'utilise objdump code> à partir du paquet de compilateur de mingw code> pour le faire. P>
XXX PRE> LI>
-
Utilisez dd code> (ou un éditeur Hex) pour extraire les données de la section brutes de l'EXE. Ici, je vais juste copier le code et les sections de données (nommé Auto et Dgroup dans cet exemple). Vous voudrez peut-être copier des sections supplémentaires. P>
0051D8DB ; size_t stackavail(void)
0051D8DB proc stackavail near
0051D8DB push edx
0051D8DC call [ds:off_5A0588]
0051D8E2 mov edx, eax
0051D8E4 mov eax, esp
0051D8E6 sub eax, [edx]
0051D8E8 pop edx
0051D8E9 retn
0051D8E9 endp stackavail
J'ai trouvé un moyen plus simple de le faire. Utilisez la commande Strip.
Exemple P>
strip --info
Bonjour, AMAN! Voulez-vous exécuter des fichiers binaires Windows sur Linux? Conversion de l'exécutable de l'EP en Elf n'est pas une solution!
@Siuchingpong: Je veux comparer les deux, j'ai mis à jour la description afin que les gens puissent lancer avec des réponses.
@Aman: Je vois. Votre question est beaucoup plus claire maintenant. Je ne pense pas que je connaisse suffisamment le sujet pour répondre à votre question, mais je peux vous donner des suggestions de mieux que je peux. J'ai visité le lien que vous avez posté, vous n'avez nulle part quoi que ce soit sur PE ou ELF, alors peut-être que cela fonctionne pour PE aussi. Compilez-le simplement en utilisant Mingw ou Cygwin pour essayer. Savez-vous quelle «section de code» d'un binaire est? Je pense que si vous pouvez l'extraire et le sauvegarder dans un fichier, la vigne peut peut-être analyser ce «binaire binaire». Voici quelques mots clés qui peuvent être utiles: Binutils, Objdump, Objcopy, NM, Lastel, LD, LLD, AR, AS.
S'il vous plaît n'oubliez pas de +1 mes commentaires si vous les trouvez utile :-).
@SIUCHINGPONG: lorsque j'ai exécuté l'analyse de la vigne, un message d'avertissement indique que l'outil n'est pas prêt pour les fichiers binaires PE.
+1 pour "Vine: le composant d'analyse statique de BitBlaze". Je ne savais pas quelque chose comme ça existe.