逆向工程的汇编语言

时间:2012-03-30 23:13:30

标签: c++ assembly x86 reverse-engineering masm

我应该选择NASM或MASM来学习装配。我想学习装配,动力是逆向工程。

因此,当我反汇编某些可执行文件时,我可以通过查看反汇编代码来理解代码。

更新:我认为我完全清楚自己...我理解那些是汇编程序,但要理解反汇编程序的输出我需要知道汇编,这就是我要问从哪里开始的原因(使用MASM或NASM) )

3 个答案:

答案 0 :(得分:14)

假设您想学习如何在Windows上进行逆向工程 ,请按照以下步骤操作。 Linux方式非常不同(尽管最终你会得到或多或少相同的地方):

你想从一些非常简单的东西开始,比如8080处理器。你可以在这里找到一个在线模拟器:http://www.tramm.li/i8080 - 这是一个名为“CP / M”的传统操作系统。单击“启动EMU8080”链接 - 您将获得一个“SID”命令行 - 一个简单的古老调试器。它只有10个命令 - 在任何地址浏览内存,输入新的汇编命令等。输入HELP查看全部。如果需要,您可以尝试谷歌搜索SID手册。然后google for 8080汇编手册 - 你会发现一堆PDF - 它们都是英特尔在20世纪70年代写的相同2本手册的副本。阅读两者 - 它们将为您提供808x CPU基础知识的良好开端。 PC中使用的所有现代处理器都来自8080. 使用SID和8080播放,直到您有了这个想法。

下一步是8086.为此,您需要获取Window XP的副本并在命令行中运行DEBUG程序。 DEBUG是微软对SID的剽窃。一旦你知道SID就会很容易学习。文档在这里:http://thestarman.pcministry.com/asm/debug/debug.htm - 尽可能多地阅读,同时确保遵循其他页面的链接 - 同一网站包含基本8086编程的一堆东西。如果到那时你将内部化8080手册,8086会觉得超级简单。 (如果你跳过8080 / SID阶段,一切都会感觉很奇怪,拼图需要更多的时间来整理,相信我。)

你可能还想玩http://ladsoft.tripod.com/grdb_debugger.html - 一个改进的DEBUG克隆,更容易使用。

下一步,请获得Peter Abel的一本名为“IBM PC Assembler Language and Programming”的书 - 旧版本,更好。你可以在亚马逊上找到一个像1巴克(我不是在开玩笑!)。阅读前7章。让自己的汇编程序称为“FASM”(忘记MASM和NASM废话)。阅读FASM文档。以16位实模式编写程序。您仍然可以在Windows XP命令行上运行它们。

下一步,阅读http://www.drpaulcarter.com/pcasm/ - 这有助于您了解保护模式。然后阅读实际的Intel 386参考文档:http://www.logix.cz/michal/doc/i386/

然后买一本名为“逆转。逆向工程的秘密”的书。它非常蹩脚,但会给你一些关于你接下来需要学习的东西的想法。像低级Windows编程(消息,处理程序等)

完成所有这些操作后,才能下载http://www.ollydbg.de/并尝试使用它。一定要获得版本1.x,而不是2.x.转到Youtube并找到一些教程。欢迎您跳过此步骤,但我可以保证您会感到沮丧并且不会理解您在屏幕上看到的任何内容,除非您完成上述所有操作。

祝你好运。如果您有任何疑问,可以通过我的博客与我联系(链接在我的个人资料页面上)。

答案 1 :(得分:3)

你在这里谈论反汇编。您列出的工具是汇编程序,它们无法帮助您理解或理解现有代码。但是,它们对于重新组装阶段非常有用!

对于反汇编,我高度推荐IDA Pro。它拥有您寻求的所有工具,文档,插件和社区帮助。作为奖励,旧版本也是免费的。

答案 2 :(得分:0)

我认为你倒退了。我通过调试高级语言编译器的输出来学习汇编。