您的位置  > 互联网

王爽的汇编语言程序设计,你真的了解吗?

逆向工程涉及的东西很多,而且非常复杂。 仅了解一点 x86 汇编是不够的。 我只知道一点点,所以我将这个问题作为参考。

首先,王霜的汇编还停留在16位8086汇编阶段,但是现在的操作系统都是运行在32位或者64位保护模式下,尤其是64位的,无法直接运行16位程序。发帖者的第一个任务是学习32位汇编。 这里推荐的书是

@鸡气猫

同学提到的《Intel汇编语言编程》最新版本是第五版。 其实我个人认为16位汇编转换成32位只要能真正理解逻辑地址、线性地址和物理地址就足够了。 没有必要急于去了解保护模式下的分页机制之类深奥的东西。

汇编已经快完成了,也就是说,你了解了一种语言。 仅仅知道这一点还不够。 你还需要了解一些“前行”的事情。 如果你连源代码都看不懂,那么看着像圣经一样的反汇编代码就根本跟不上。 了解它,不仅需要知道,还需要比普通程序员有更深的理解。 这方面需要的东西太多了。 您需要了解消息机制。 否则,你不知道如何跟踪某个按钮的点击事件。 没有子窗口,这是一个大坑……这方面,首先需要看一本API编程的书。 我推荐《编程第五版》。 虽然很旧,但是基本的API几乎没有改变,所以这本书完全可以用。

@

罗云斌提到的《32位环境下的汇编语言编程》可以看作是汇编版的编程书籍。 您可以选择任意一篇来阅读。 深入的理解取决于对操作系统的深入分析。

这时候提问者可以看一些逆向工程相关的书籍。 这里推荐的第一本是薛老板段刚的《加密解密》第三版。 其实主要讲的是各种工具的使用以及邮件的逆向工程。 知识。 不要阅读前两版。 引入的工具太旧了。 我还在介绍He和IDA Pro(顺便佩服刘涛涛)。 这两个工具都快比我老了……最重要的两个工具是IDA Pro和IDA Pro。 ,分别是动态调试和静态反汇编的工件。 动态调试相当于一辆汽车,你驾驶它前进,而静态反汇编则是一张地图,防止你在代码中迷失方向。 其中OD是免费的,IDA是付费的(一个IDA Pro+插件就要好几万软妹币……)不过IDA有演示版,支持的文件格式和CPU相对较少。 应该就可以了,但是没办法用F5(F5是快捷键,直接反编译成伪C代码)……还有一本关于IDA的专门书籍《IDA Pro权威指南》 。

这时候,普通的无花、无壳、无VM的小程序就可以用了,但这样傻乎乎又可爱的小程序在这个残酷的世界里太少见了。

如果想继续深究,难免会和各种反调试加密壳作斗争。 你需要学习PE文件格式、多态引擎、虚拟机引擎等。 你也会经常需要开发驱动或者深入R0,这些东西有的根本没有任何书籍,大部分都是网上的资料,我也不太了解。 这里推荐几本书:

PE文件格式:

[翻译] 规范v8和v8.1中文版[2008.3.29更新v8.1版本]

原版在这里

/en-US///

,也有几本书,不过我没读过。 感觉这个加上《加密解密》里的介绍就够了,还有几张大图。

关于驾驶这个东西的书只有几本,所以我会告诉你我所知道的一切:

《驱动开发技术详解》

《竹林小道深入浅出,驱动发展》

《天枢夜读从汇编语言到内核编程》

《软件调试》

既然涉及到驱动程序,不固定装配的保护模式肯定不行。 推荐杨继文的黑书《80x86汇编语言编程教程》。 据说有错误,但我没看到。 应该是水平问题。 官方文档是Intel的开发者手册。

Intel Speed 64 和 IA-32

对于VMP,我实在是无能为力。 你可以自己在下面的论坛里找到。看学和UPK的亮点都非常酷。

看学安全论坛暨一风言雨论坛-UPK安全社区

我爱破解论坛-LCG-LSG|软件安全

还有一些像飘云阁、第八人这样的东西,我已经很久没有发过了。 不知道还在不在,所以就不发了。

另外,如果题主是做arm汇编或者逆向工程,需要阅读《软件安全与逆向分析》作者

@非冲

(嘿嘿,请帮忙做广告)