一、在对软件进行逆向工程研究的时候,一般会依照以下几个大的步骤来完成:
1、研究保护方法,去除保护功能。大部分软件开发者为了维护自己的关键技术不被侵犯,采用了各式各样的软件保护技术,如序列号保护、加密锁、反调试技术、加壳等。要想对这类软件进行逆向,首先要判断出软件的保护方法,然后去详细分析其保护代码,在掌握其运行机制后去除软件的保护。
2、反汇编目标软件,跟踪、分析代码功能。在去除了目标软件的保护后,接下来就是运用反汇编工具对可执行程序进行反汇编,通过动态调试与静态分析相结合,跟踪、分析软件的核心代码,理解软件的设计思路等,获取关键信息。
3、生成目标软件的设计思想、架构、算法等相关文档,并在此基础上设计出对目标软件进行功能扩展等的文档。
4、向目标软件的可执行程序中注入代码,开发出更完善的应用软件
软件逆向工程可以让人们了解程序的结构以及程序的逻辑,深入洞察程序的运行过程,分析出软件使用的协议及通信方式,并能够更加清晰地揭露软件机密的商业算法等。因此逆向工程的优势是显而易见的。
二、常用软件:
OllyDbg:常用于动态调试程序,无法调试内核,UI功能强大。
SoftICE:工作在ring0态的调试器,常用于调试驱动程序,功能强大的命令行工具。
WinDbg:介于上两者之间的调试器,具有图形界面,调试主要通过命令来进行。
IDA Pro:反汇编软件,用于静态反汇编,带有较弱的动态调试功能。
UltraEdit:16进制编辑器,可用于直接修改可执行文件,也可用于常见语言的变成工作。
虚拟机:防止被调试程序破坏物理机的内核及操作系统。
三、资源连接
http://www.freebuf.com/articles/network/167128.html 没事儿下个副本吧?逆向新手踩坑指南
http://www.freebuf.com/column/157275.html 逆向新手踩坑指南之爬爬山能锻炼身体
http://www.freebuf.com/column/158790.html 逆向动态调试值OIIydbg
http://www.freebuf.com/column/157939.html 逆向神奇IDA的使用
http://www.freebuf.com/sectool/75529.html 逆向分析神器BinNavi开源了
http://www.freebuf.com/news/topnews/40039.html 走进科学:对七夕“超级病毒”XX神器的逆向分析
http://www.freebuf.com/articles/network/163233.html 通过逆向分析防御挖矿病毒
http://www.freebuf.com/articles/system/53021.html 金玉其外败絮其中:百度杀毒“雪狼引擎”逆向分析