- 促进正向开发,深刻理解系统原理
- 借助别人的设计和实现,实现本身的功能
- 分析恶意软件,应用安全审计
- 从逆向的角度实现安全保护
学完逆向以后你将能够从不一样的角度看待和思考问题算法
将想法和设计理念变成具体实现的过程安全
具体的物理实现 => 抽象的逻辑设计 反编译机器码 => 汇编代码(相似的高级语言代码) => 理解其算法和设计概念bash
从二进制码中提取设计概念和算法网络
程序的编译和反编译 高级语言(C/C++/Oc/Java/Python/C#) -> 中间语言(如:汇编等) -> 目标代码(exe/lib/dll/sys/dylib等二进制文件)框架
编译连接
高级语言 ========> 机器码
<======== 机器码
反汇编/反编译
复制代码
编译连接
高级语言 ========> 机器码
<========
反汇编/反编译
复制代码
上述过程看似平淡无奇,但实际作的时候不会很顺利,由于咱们可能须要反复探索才能定位目标函数,探索的过程及枯燥也有趣,你会在探索中成长和强大😄,逆向是一个试错的过程,须要不停的猜想、查找和进行验证,既考验耐心也考验动手能力函数
定位关键代码的方式布局
- 经过监控UI事件的响应定位关键代码
- 经过监控底层API的调用定位关键代码(如网络访问接口、文件读写接口等)
- 经过观察数据的变化来定位关键代码和地址