「逆向工程」- 技术整理

更新日期:2020年04月05日
@IGNORECHANGE

PC

PC逆向学习路线:
1、先学汇编!!必须学!!从8086汇编开始学,再到32位,有兴趣可以玩玩64位。
2、调试技能(OD、Windbg这些)
3、编程技能(WinAPI多多少少要知道一点,MSDN文档一定要会看)
4、脱壳
5、漏洞分析

PC逆向学习书籍推荐:
《汇编语言 第三版 王爽》-> x86从实模式到保护模式(可选)-> 加密与解密 -> 0day安全:软件漏洞分析技术

实战操作:
逆向水平通过看书是无法提升的,唯一的捷径就是多练习
逆向完尽量写分析文章整理思路,这属于学习总结的一个过程
平时没事的时候多看一点其他大神发的分析文章,安全博客-阿里聚安全、百度安全应急响应中心、安全客 - 有思想的安全新媒体

Android

众所周知,Android是基于Linux内核的,App大部分要用Java开发,小部分会用到jni,其中涉及到Java、C/C++,意味着你需要学习多门“汇编”语言。

Android App 大部分是基于Java开发的,实际上并不是用的Java的原生虚拟机,Android的解释器是Google自己开发的,叫做Dalvik(不谈ART), 名字由来很玄学,这里不过多探讨。Dalvik虚拟机跑的指令集是Dalvik指令集,一般反编译后用smali语法来表示。所以学习Android逆向的第一件事情就是学习Smali语法。

如何反编译一个APK? 如果你去网上搜索的话,一般博客都会写各种牛X命令行工具,一言以蔽之就是要用N多工具才能成功反编译一个APK文件。其实网上有很多集成化工具,比如:Android Killer,拖入Apk即可反编译。JEB也是一门不错的工具,拖入APK即可,在汇编区域按下Tab键就可以得到Java源码,JEB反编译出来的源码很美!

学习完Smali逆向之后呢? 你如果想深入学习不想止步于破解几个小游戏,那就要去学习ARM汇编!ARM才是移动平台的老大!ARM是一种指令集,这种指令集的CPU普遍用于移动设备、嵌入式设备,也就是说,我们使用的手机绝大部分都是用ARM指令集的处理器,所以学习ARM钱途光明啊~实用性不多讲,ARM逆向能赚很多钱是真的,这个不多讲了。

参考文献


ToC

PC

Android

参考文献