如何快速读懂反汇编的汇编代码?
简单的逆向工程其实不难,IDA加Hex-Rays插件,可以直接把汇编还原成C代码。虽然还原出来的代码比较怪,但是已经比直接看汇编代码强多了。
如果想学逆向工程,常用的汇编指令要熟悉,各种调用约定要搞清楚,比如stdcallastcallcdecl、thiscall等,还有ARM的APCS,这对你理解函数之间的调用、参数的传递、栈指针的变化等很关键。如果程序在编译的时候没有使用全局优化,难度会低一些,使用全局优化后,各种寄存器会跨函数直接使用,跟踪起来比较费劲。
1.首先建议学习几门语言:汇编、C++、,Python,C++里的编程范型是比较多的。.这三门语言,差不多可以代表现今发挥了巨大作用的编程语言了。
2.逆向的直接基础知识,推荐几本书:
Intel 微处理器.
Windows环境下32位汇编语言程序设计
C++反汇编与逆向分析技术揭秘
IDA Pro权威指南
这些书是基本的书籍,要么很基础(汇编),要么比较抽象的研究软件逆向.没有多少实际的逆向的例子.
比如UltraISO注册算法&keygen分析很典型.你看了就知道软件逆向到底涉及了多少知识.
3.再掌握几个工具:
静态反汇编工具: IDA Pro
动态反汇编工具: ollydbg/x64dbg
Windows内核调试工具: windbg