- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
打造自己的反汇编引擎——Intel 指令编码学习报告
作 者: egogg
时 间: 2008-10-22,13:28
写在前面:
学习 Intel 指令格式已经有近一个月了,本来想把整个反汇编引擎写完整之后再发布源代
码和学习报告的,但是,最初的热情过后,剩下的就是辛苦劳动了,现在实在太累了,似乎
有点写不下去的感觉了,所以我还是打算,边总结学习的过程,边完成整个反汇编引擎:一
方面,希望论坛里对指令解码知识感兴趣的朋友,高手给些鼓励;另一方面,希望能和这些
朋友们讨论程序中的 bug ,讨论整个反汇编引擎的架构(这个我会在后面的学习报告中详细
说明我所了解的一些架构)。学习新的知识是一件很令人高兴和满足的事情,但是能和别人
分享学习的经验,更令人快乐。
学习指令编码格式的好处有很多,我在这里提一些吧:
一、加深对指令的了解。并不是用汇编语言写出的程序速度就一定比其他高级语言快,或
者说节省空间,现在大部分的编译器做得比一般的汇编语言初学者,甚至是有一定编程经验
的人都好,对一些汇编指令有所了解后,可能利用这些指令写出符合特定条件的好的代码,
不管是用在 shellcode 还是用在关键代码的性能优化方面都有好处。例如:Svin 的教程中就
有一个题目:
用四个 byte 实现下列的算法:(opcode hack )
IF ZF=1
inc eax
ELSE
mov al,40
再有,现在的高级语言因为执行效率的原因,一般都舍弃用 leave 和 enter 指令,然而这些
指令有着空间的优势……等等,此外,学习了指令编码之后会对 intel 的寻址模式有一个更
为深刻的了解。
二、学习了指令编码可以软件保护中的很多技巧如花指令等有更深刻的了解。
三、如果这些小的技巧实在是不值一提,那么如果想些一个虚拟机架构的话,就必须对这
些指令有所了解。
……
由于我是一个菜鸟,所以有很多说不清楚的地方,还希望高手指正,毕竟,讨论才是学习
永恒的主题。本来打算,把这些学习报告发在新手区的,但是看到这个版块有一个专题,就
发到这个地方了。很多高手可能想自己学习研究,我会提前把我找到的所有的资料都列在附
件中。
实验反汇编引擎介绍:(原代码下载:dasm.rar )
引擎采用了最直观,当然也是最笨拙的方法,switch...case,代码虽然不够简练,但是执
行效率和整体结构还是很清楚的,代码的解析和识别只剩下力气活了。
反汇编引擎目前的进度:
基本框架已经实现,能解析的指令大约 200 多条,2-byte 的指令还不能解析,浮点指令和
mmx 指令的解析都还待完成。
(2008.10.22 更新:已经能正确解析所有常用指令(除特权指令,浮点指令,mmx 指令之外的指令))
(2008.10.24 更新:改正了解析 C4,C5 指令的一个小 bug )
测试程序:(CrackMe.exe 为测试用的 pe 文件)
我用了不久前学习 pe 文件格式的时候写的 pe 文件解析代码,提取了.text 中的数据作测试
用,pe 文件的解析部分代码很丑,大家感兴趣的话,可以只看反汇编部分的代码,代码没
有加注释,我想我会在后续的学习报告中详细解释每一个部分的代码。
程序的运行方式:dasmMain.exe 待解析的 pe 文件 out.txt 最好重定向到文件中看,输出
的结构有点多。
由于有些指令不能识别,导致实际的反汇编代码跟正确的比有些混乱,但是大部分代码
还是正确的,我测试的输出结果如图:
跟 olly 的结果比较一下:
对得不是太齐,但是如果以后做成 GUI 的形式,因该没有什么问题了。实际的效果大家
可以用不同的 pe 文件测试,当然,程序只是读文件的.text 区,没有任何分析,实际效果,
大家还是要对照地址来检查。
学习资料:
1、首推 Svin 的教程,英文原版:tutorial of opcode by svin.rar 都是一些保存好的网页,大家
可以权当链接使用。当然,论坛上也有翻译后的版本,大家可以找一找,不过还是推荐到原
论坛看原帖。
2 、 The art of disassembly , 英 文 原 版 : Art Of Disassembly.part1.rarArt Of
Disassembly.part2.rarArt Of Disassembly.part3.rar ,当然论坛里也有中文版的。
3、罗聪的《学习 Opcode 教程》:learningopcode.ra
您可能关注的文档
- 信息化、经济增长与社会转型.pdf
- 休闲农业园区规划设计:绿色农业示范区建设的休闲提升.pdf
- 亿纬锂能年报(300014)年度报告2011年(电气机械财务预算)惠州亿纬锂能股份有限公司_@九舍会智库.pdf
- 小学语文阅读教学备课的十项思路.pdf
- 粤水电招聘薪酬待遇(建筑业人力资源薪酬福利)广东水电二局股份有限公司_@九舍会智库.pdf
- 休闲农业园区规划设计:绿色农业示范区建设的休闲提升.docx
- 雅致股份2013年报管理制度排名_薪酬报告(建筑业薪酬总额)雅致集成房屋股份有限公司_@九舍会智库.pdf
- 亚厦股份招聘薪酬工资(建筑业人力资源规划)浙江亚厦装饰股份有限公司_@九舍会智库.pdf
- 浙江广厦年报(600052)年度报告2011年(房地产业财务预算)浙江广厦股份有限公司_@九舍会智库.pdf
- 一个模块化机器人平台的设计.pdf
原创力文档


文档评论(0)