2012-05-26 4 views
2

J'ai écrit un simple programme de mot Hello avec masm32. Mais quand j'essaye de le démonter avec IDA et que je reçois un résultat beaucoup plus important (je ne l'écrirai pas car ça prendrait beaucoup de place). Et je ne comprends pas pourquoi c'est différent. Comment exécuter le code désassemblé?Lecture du code désassemblé

+0

Je peux me tromper, mais la plus grande sortie devrait être une conséquence du fait que le désassemblage contient plus d'informations comme l'adresse de chaque instruction. –

Répondre

2

Ceci est normal. La compilation est un processus «avec perte», ce qui signifie que si vous compilez du code et que vous le décompilez, vous n'êtes pas sûr d'obtenir exactement la même chose que celle que vous avez initialement créée. La même chose s'applique au langage assembleur. Lorsque vous assemblez et liez le code, c'est un processus à sens unique. C'est pourquoi les programmeurs sauvegardent le code source original, plutôt que d'essayer de décompiler leurs binaires quand ils veulent corriger les bogues.

+0

Vous ne compilez pas l'assemblage, vous l'assemblez et vous le liez. Considérons que pour chaque opcode il y a une valeur binaire correspondante, donc vous n'avez pas d'optimisation typique des langages compilés (a.k.a. haut niveau). –

+0

Vous voyez que j'ai une tâche pour disaseble un exemple. Exe, puis exécutez le exécuter avec le code de sortie – LTnewbie

+0

ne veut pas dire suggérer qu'il y avait une optimisation se produisant. J'ai mis à jour la réponse pour aborder la pédanterie terminologique. –

Questions connexes