反汇编入门经典教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
反汇编入门教程
仅以此文来描述如何反汇编一个EXE程序,这里采用的是静态反汇编,也就是先把整个程序全部反汇编成汇编语言后进行修改,这个例子很简单,首先是我从看雪论坛上下载到的一个C RACK M E.EXE程序
然后我们使用W32D ASM.EXE打开它,可以看到这个EXE程序在反编译以后的内容
双击正式启动这个程序,随便输入注册码123,点击C HECK
这里可以看到程序在输入错误后提示的内容
然后我们使用"串式数据参考",找到这个字符串的位置
这个位置如下
可以看到在我程序的0040段,15B9这个偏移地址下程序输出了这个字符串,然后我们考虑一下,程序在我输入了错误的注册码,并且点击了CHECK以后,弹
出了这个字符串,我们向上找,应该可以找到一个跳转,类似JE,JNE,JMP之类的东西,跳转到此处,位置如下
可以看到在偏移地址15AB下有一个入口,注意R EFERENCED BY .....这句,是说"有人从这里插队了"
到底是谁"插队"到这里了呢,是00401595这个代码.
现在我们跳转到这个位置去追踪它
输入00401595
可以看到是个JNE(不等跳转),我们只要把这个JNE改成JE就可以了
使用HIEW打开这个程序
打开以后看到一堆乱码,这是因为它是用文本方式打开了一个EXE程序这里我们按F4,选择DECODE(反汇编)模式
这回看到的就都是机器码了
然后按F5,输入1595(刚才我们找到的那个语句地址),找到那个位置
就是这个7516的JNE命令,我们要把它改成JE,这里直接把7516这个机器码修改成7416
按F3进入编辑模式
然后按F9保存
这回再次打开修改后的程序,重新输入123,可以看到CRACK后的结果是
完成!
反汇编
反汇编:把目标代码转为汇编代码的过程,也可说是把编程语言转为汇编语言代码,低级转高级的意思,常用于软件破解(例如找到它是如何注册的,从而解出它的注册码或者编写注册机。),外挂技术,病毒分析,逆向工程,软件汉化。学习汇编和理解反汇编语言对软件调试,漏洞分析,OS的内核原理和理解高级语言的代码都有相当大的帮助,从中可以学习软件作者的编程思想,总之一句话:软件的一切神秘的运行机制全在反汇编代码里面了。
通常,编写程序是利用高级语言如C,PASCAL等高级语言进行编程的,然后再经过编译程序生成可以被计算机系统直接执行的文件(机器语言)。反汇编即是指将这些执行文件反编译还原成汇编语言或其他高级语言。但通常反编译出来的程序与原程序会存在些许不同,虽然执行效果相同,但程序代
码会发生很大的变化,要读懂反汇编需要有扎实的高级语言编写功底,和汇编功底。目前网络上的免费软件,PSP PS NDS游戏机的破解和苹果I OS系统的越狱都跟反汇编息息相关。
另外,有许多程序也可以进行逆向操作即反编译以求修改,例如F LASH 的文件生成的SWF文件,也可以被反汇编成F LASH原码,但会发现与原程序有很大变化。反汇编可以通过反汇编的一些软件实现DEBUG也能反汇编的,DEBUG文件位置-U,这样就能实现了。
静态反汇编是从反汇编出来的程序清单上分析,从提示信息入手进行分析。目前,大多数软件在设计时,都采用了人机对话方式。所谓人机对话,即在软件运行过程中,需要由用户选择的地方,软件即显示相应的提示信息,并等待用户按键选择。而在执行完某一段程序之后,便显示一串提示信息,以反映该段程序运行后的状态,是正常运行,还是出现错误,或者提示用户进行下一步工作的帮助信息。为此,如果我们对静态反汇编出来的程序清单进行阅读,可了解软件的编程思路,以便顺利破解该软件,也就是我们常说的破解版即盗版。反汇编亦是外挂设计最重要的环节,可以说没有反汇编就没有外挂。常用的静态分析工具是W32DASM、PE I D、F ILE I NFO、H EX R AYS I DA和HIEW等。
反汇编工具
反汇编工具如:OD、DEBUG、IDA P RO等。
OD一般杀软会报毒。排除即可。需要有扎实的基础才能看懂。
下载OD百度即可。最好去大的站点下载。