Android逆向是什么?
简单地来说,安卓逆向是对已经打包好的APP进行反编译、源码分析了解APP实现逻辑的一门技术。我们可以把安卓安装时用到的APK文件看作一个加密后的压缩包,逆向就是要最大程序地还原出APK打包之前的源码。
逆向需要用到解密、反编译、解压缩等技术,想要100%还原APK的源码几乎是不可能的,所以在实际进行逆向分析的时候,一般都是根据想实现的目的,分析出APK的部分源码和实现逻辑,然后对这一部分源码进行修改后与原始的APK打包在一起,这样就获得了一个实现自己特定目的的APP。
Android逆向技术可以做哪些?
- 软件防护 : 根据逆向的方法针对性的开发防护策略。
- 算法研究 : 在没有源码的前提下 , 通过反编译 , 反汇编 , 拿到 Smali 代码 , 研究其产品的算法 , 实现途径 。
- 接口分析 : 接入一个没有源码的第三方库 , 无法进行调试 , 出现问题后 , 可以使用逆向的方法 , 查找问题原因 , 解决相关问题 ; 找到问题后 , 修改汇编代码 , 然后重新打包。
- 数据采集 : 分析应用的数据 , 获取该应用的更新内容 , 运营信息 , 在 APP 中可以拿到一些非公开的数据 。
- 应用破解 : 单机游戏玩家需求 , 游戏修改器 , 或者应用停止运营 , 没有付费渠道 , 可以进行破解使用。
- 调试分析 : 应用打包 , 混淆 , 加固 后上传到应用市场 , 如果某个分发渠道版本出现问题 , 可能就需要调试分析具体的这个 APK 包的问题 ; 结合源码与渠道包进行逆向分析, 查找问题原因。
Android逆向需要学习那些才能够拿高薪?
根据一线大厂的逆向大牛,从中获取到的一手学习笔记。可以总结出如下学习路线图:资料笔记参考《Android逆向大厂笔记》
分为8个大类目,如下展示:
- Smali指令详解
- 加壳和脱壳入门
- NDK与逆向
- Xposed框架
- Frida
- 抓包
- 加壳和脱壳高级
- 加密与解密算法与逆向
结尾
大概逆向的学习需要这八大板块,但是学习逆向开发要一定的Android开发经验。 Android逆向要学习的东西过于冗杂而且涵盖面很广,零基础是极难上手的。零基础的小伙伴建议先入门编程和开发,最起码要先看得懂汇编语言,学会基础的编程开发。
学习安卓逆向,是为了好就业,那么在学习上,最好是偏向于工作实用性。 大致可以总结为汇编语言、Android开发、逆向分析工具、调试工具、SO和java层hook、Linux、Android底层运行机制、脱壳等。