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

说明

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

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

前言

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

正向开发为什么容易学习

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

  1. 谷歌官方提供的入门教程
  2. 谷歌官方提供的免费好用的IDE AndroidStudio
  3. 各种入门 进阶的 尤其是中文的 书籍 比如 第一行代码 Android艺术开发探索 等等
  4. 庞大的开发人员和活跃的社区 各大编程论坛比如CSDN 都有 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)]

总结

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

2021年正确的Android逆向开发学习之路的更多相关文章

  1. Android开发学习之路--Activity之初体验

    环境也搭建好了,android系统也基本了解了,那么接下来就可以开始学习android开发了,相信这么学下去肯定可以把android开发学习好的,再加上时而再温故下linux下的知识,看看androi ...

  2. Android开发学习之路-RecyclerView滑动删除和拖动排序

    Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...

  3. Android应用开发学习之表格视图

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 本文我们来学习一个使用表格视图的程序,下图是该程序的运行效果: 该程序主Activity文件内容如下: packag ...

  4. Android开发学习之路--基于vitamio的视频播放器(二)

      终于把该忙的事情都忙得差不多了,接下来又可以开始good good study,day day up了.在Android开发学习之路–基于vitamio的视频播放器(一)中,主要讲了播放器的界面的 ...

  5. Android开发学习之路--Android Studio cmake编译ffmpeg

      最新的android studio2.2引入了cmake可以很好地实现ndk的编写.这里使用最新的方式,对于以前的android下的ndk编译什么的可以参考之前的文章:Android开发学习之路– ...

  6. Android开发学习之路--网络编程之xml、json

    一般网络数据通过http来get,post,那么其中的数据不可能杂乱无章,比如我要post一段数据,肯定是要有一定的格式,协议的.常用的就是xml和json了.在此先要搭建个简单的服务器吧,首先呢下载 ...

  7. Android开发学习之路--Android系统架构初探

    环境搭建好了,最简单的app也运行过了,那么app到底是怎么运行在手机上的,手机又到底怎么能运行这些应用,一堆的电子元器件最后可以运行这么美妙的界面,在此还是需要好好研究研究.这里从芯片及硬件模块-& ...

  8. Android开发学习之路--MAC下Android Studio开发环境搭建

    自从毕业开始到现在还没有系统地学习android应用的开发,之前一直都是做些底层的驱动,以及linux上的c开发.虽然写过几个简单的app,也对android4.0.3的源代码做过部分的分析,也算入门 ...

  9. Android开发学习之路-自定义ListView(继承BaseAdapter)

    大三学生一个,喜欢编程,喜欢谷歌,喜欢Android,所以选择的方向自然是Android应用开发,开博第一篇,希望以后会有更多的进步. 最近在做一个记账App的时候,需要一个Activity来显示每个 ...

随机推荐

  1. RocketMQ(六):nameserver队列存储定位解析

    在rocketmq中,nameserver充当了一个配置管理者的角色,看起来好似不太重要.然而它是一个不或缺的角色,没有了它的存在,各个broker就是一盘散沙,各自为战. 所以,实际上,在rocke ...

  2. 容器编排系统之K8s资源标签、标签选择器、资源注解

    前文我们聊到了使用k8s资源配置清单定义资源的相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14132890.html:今天我们来聊下资源标签,标签选 ...

  3. Spark-1-调优基本原则

    1基本概念和原则 每一台host上面可以并行N个worker,每一个worker下面可以并行M个executor,task们会被分配到executor上面去执行.Stage指的是一组并行运行的task ...

  4. js--数组的filter()过滤方法的使用

    前言 你还在通过for循环遍历数组吗?你还在遍历之后一项一项的通过if判断过滤你需要的数据吗?你还在写着一大堆代码实现一个简单的过滤数据功能吗?那么,今天他来了.他就是这里要介绍的es6中数组filt ...

  5. Golang--函数签名相同

    Golang--函数签名相同 条件 必须函数的函数名,参数和返回值(类型,个数,顺序)都相同. 验证 例子: 定义函数类型,让相同签名的函数自动实现某个接口. Negtive: package int ...

  6. python 字符串拼接 + 与 join 的区别

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 python在进行字符串的拼接时,一般有两种方法,一种是使用+直接相加,另一种是使用join a = ...

  7. CentOS7下常用安装服务软件源码编译安装方式的介绍

    简介:介绍源码编译安装软件包的管理 源码安装优点:编译安装过程,可以设定参数,指定安装目录,按照需求进行安装,指定安装的版本,灵活性比较大. 源码安装的缺点:需要对依赖包一个一个的进行安装,不敢随便升 ...

  8. 自定义 demo 集合

    各种写着玩的自定义控件demo 有时网上看到一些比较有意思的开源项目,有时间的话就会自己也撸一个出来,但是一般只关注实现样式.动画等,不会太去细致完整地完成,俗称占个坑~ 持续更新中... githu ...

  9. spring mvc 集成quartz

    首先quartz配置文件 # Default Properties file for use by StdSchedulerFactory # to create a Quartz Scheduler ...

  10. 微信网页授权多次回调code请求

    最近在做微信网页授权的时候遇到一个问题如果直接从后台把微信授权的url参数什么的拼装好,然后直接redirect 这个url 会导致时不时的多次请求回调的url .网上说是因为网络原因,如果10s没有 ...