2010-12-10 55 views
3

Ma première question ici, j'espère que je ne me trompe pas. Mon problème est que j'ai un certain vieux programme DOS qui a beaucoup piraté le format de fichier à l'extrême pour économiser de l'espace. (Oui, c'est un pro de demoscene pour ceux qui savent.)Désassembleur pour Linux capable de désassembler les anciens fichiers DOS .COM/.EXE

Objdump ne veut pas m'aider avec; Googling rapide n'a donné aucun résultat réel pour le problème et la page de manuel ne semble pas trop généreuse à cet égard non plus.

Il y en a d'autres oui, comme lida. Cependant, pour une raison quelconque, je ne pouvais pas faire fonctionner Iida; Je crois qu'il existe des alternatives.

Quelqu'un at-il l'expérience de désassembler les exécutables DOS sous Linux? Ou devrais-je simplement essayer un désassembleur basé sur DOS et l'exécuter sur Dosemu?

Répondre

5

IDA est le meilleur désassembleur, et il existe également une version linux. C'est mieux qu'un simple désassembleur parce que c'est interactif. En outre, si vous voulez voir un assemblage «fait à la main», le meilleur endroit pour regarder sont les vieux virus. Et pas les binaires, mais les sources, parce qu'ils sont commentés. Vous pouvez essayer Netlux pour cela.

3

ndisasm est livré avec NASM, l'assembleur netwide. Il est assez polyvalent, y compris la possibilité de désassembler les flux bruts d'octets (puisque vous avez mentionné les fichiers COM) et aussi quelques formats de fichier objet. Strictement parlant, je pense qu'il est également possible de désassembler les flux bruts d'octets avec une option objdump, mais je ne me souviens pas comment cela se passe.

Toutefois, le code auto-modifiable peut rendre cela plutôt délicat. En regardant un flot d'octets, il est difficile de prévoir quelles pourraient être les instructions finales exécutées si le programme se modifiait lui-même, une astuce commune pour gagner de la place à l'ère DOS. Vous avez mentionné le démarrage sous DOS, ce qui me donne quelques idées intéressantes: vous pouvez peut-être passer à travers un débogueur DOS ou exécuter DOS sous qemu et utiliser ses options de débogage (dont certaines incluent la sortie de l'assemblage et l'état du registre pendant l'exécution).

+0

Ah, ndisasm était capable de le démonter sans problème. Ironiquement, la raison pour laquelle je voulais démonter cela était de voir comment les gens faisaient leur assemblée «de retour dans la journée», alors que moi-même, j'apprenais l'assemblage et l'utilisation des MSNA. – zxcdw