2021年正确的Android逆向开发学习之路

时间:2024-09-13 23:37:50

2021年正确的Android逆向开发学习之路

说明

文章首发于HURUWO的博客小站,本平台做同步备份发布。如有浏览或访问异常或者相关疑问可前往原博客下评论浏览。

原文链接 2021年正确的Android逆向开发学习之路直接点击即可前往访问。

前言

在做从正向的程序开发转到逆向开发的两年里,深切体会到两种开发的不同。尤其是学习道路这一块走了很多的弯路,当然我现在也不是厉害的逆向。所以所有的看法仅代表个人意见,如有不同看法请在评论区打出来。

正向开发为什么容易学习

以普通的Android开发为例,一位新手想要学习正常的Android开发,那么他非常容易获得:

  1. 谷歌官方提供的入门教程
  2. 谷歌官方提供的免费好用的IDE AndroidStudio
  3. 各种入门 进阶的 尤其是中文的 书籍 比如 第一行代码 Android艺术开发探索 等等
  4. 庞大的开发人员和活跃的社区 各大编程论坛比如**** 都有 Android的一席之地
  5. 丰富的解决方案 遇到的问题可以在搜索引擎上随意搜索出答案 也可以去论坛社区提问
  6. 好用的开发语言包括java Kotlin 或者是 js 都是相比逆向 的汇编 ARM 来说更容易学习的

    7.持续的官方优化 及时的文档更新 虽然谷歌一直在更新Android版本,使得开发者不得不学习新的版本开发知识。但好在官方给出详尽的资料文档以及相关的开源代码示例,使得重新学习非常简单。

逆向开发为什么难以学习

和正向开发相比,逆向开发的学习难点在于:

  1. 没有任何官方的逆向资料,谷歌不会教你怎么逆向,做安全加密的官方更不会教你怎么逆向。所以所以的逆向都是一些个人或者小组织的内部学习。

    2 .一言难尽的逆向工具,把编译好的代码反过来解析是件非常麻烦的事情。java层有免费的jadx apktool等工具 总体来说勉强可用。即使是付费的软件比如JEB等工具,还原代码起来也是差强人意。至于so层的,除了IDA(付费)没有其他的 ollydbg 的话,估计没啥人用吧。
  2. 逆向工具并不能帮你完成所有事情,你需要很大的力气才能看懂工具反过来的代码。所以需要类似 frida xposed 等hook 工具分析 运行时的状态。所以需要额外的学习更多的知识。
  3. 逆向开发同样的要了解非常多的正向开发知识,而且未必比正向开发来的少。没有正向开发的知识支撑,你或许难以入手。
  4. 混杂的技术栈。逆向过程你或许需要学习包括且不限于 android开发 JNI开发 通信协议 hook 汇编 arm指令 python js lua(逆向分析游戏) c/c++ liunx 等知识,了解的越多做起事情越容易。
  5. 少量且隐秘的从事人员,封闭的且极少更新的社区。比如看雪论坛,即使时热门的Android板块也是几天才有一条回复,半个月来一篇新帖。你想提问或许难以得到回应。
  6. 无法搜索到的解决方案。如果问题是常见的如软件安装 或者 框架问题,或许很快有答案。但是具体到某个APP或者某个某行代码报错,你可能翻遍整个互联网也没有答案。这时候一个可靠的引路人极其重要。
  7. 不断更新加强的安全措施。逆向就是和安全人员之间的对抗。所以安全人员会不断的加高逆向的难度,让其大到正常人无法突破。你需要自己去分析去找到门路,对抗最新的安全措施你只能靠你自己,百度是搜不到答案的。

正确的路线学习Android逆向

别的不说了 先来个经典路线图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OWnMeOy5-1610610217671)(https://www.huruwo.top/01.png)]

使用印象笔记搭建个人知识库

鉴于逆向开发的诸多难度 尤其是知识混杂的特点 构建一个属于自己知识库尤为重要。

我们以印象笔记为例,通过文章分类分组+内连接方式做到查缺补漏,最后搭成一个完整的逆向知识体系。就好比搭建一个自用的百度搜索。

1.建立知识分类

2.建立总目录_附带分类文章链接

3.编写新吸收的知识点文章 链接到总目录

4.在文章笔记中涉及到新的知识点直接引用链接 点击即可跳转

5.在引用的知识点上做横向的扩充,丰富知识库

6.遇到问题 利用搜索功能到达文章 得到相关解决方案

最后附图 包括整个知识的架构和跳转

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OWnMeOy5-1610610217671)(https://www.huruwo.top/01.png)]

总结

以上就是文章内容 如果帮助到你 请给个收藏或点赞。