2021年正确的Android逆向开发学习之路
2021年正确的Android逆向开发学习之路
说明
文章首发于HURUWO的博客小站,本平台做同步备份发布。如有浏览或访问异常或者相关疑问可前往原博客下评论浏览。
原文链接 2021年正确的Android逆向开发学习之路直接点击即可前往访问。
前言
在做从正向的程序开发转到逆向开发的两年里,深切体会到两种开发的不同。尤其是学习道路这一块走了很多的弯路,当然我现在也不是厉害的逆向。所以所有的看法仅代表个人意见,如有不同看法请在评论区打出来。
正向开发为什么容易学习
以普通的Android开发为例,一位新手想要学习正常的Android开发,那么他非常容易获得:
- 谷歌官方提供的入门教程
 - 谷歌官方提供的免费好用的IDE AndroidStudio
 - 各种入门 进阶的 尤其是中文的 书籍 比如 第一行代码 Android艺术开发探索 等等
 - 庞大的开发人员和活跃的社区 各大编程论坛比如CSDN 都有 Android的一席之地
 - 丰富的解决方案 遇到的问题可以在搜索引擎上随意搜索出答案 也可以去论坛社区提问
 - 好用的开发语言包括java Kotlin 或者是 js 都是相比逆向 的汇编 ARM 来说更容易学习的
7.持续的官方优化 及时的文档更新 虽然谷歌一直在更新Android版本,使得开发者不得不学习新的版本开发知识。但好在官方给出详尽的资料文档以及相关的开源代码示例,使得重新学习非常简单。 
逆向开发为什么难以学习
和正向开发相比,逆向开发的学习难点在于:
- 没有任何官方的逆向资料,谷歌不会教你怎么逆向,做安全加密的官方更不会教你怎么逆向。所以所以的逆向都是一些个人或者小组织的内部学习。
2 .一言难尽的逆向工具,把编译好的代码反过来解析是件非常麻烦的事情。java层有免费的jadx apktool等工具 总体来说勉强可用。即使是付费的软件比如JEB等工具,还原代码起来也是差强人意。至于so层的,除了IDA(付费)没有其他的 ollydbg 的话,估计没啥人用吧。 - 逆向工具并不能帮你完成所有事情,你需要很大的力气才能看懂工具反过来的代码。所以需要类似 frida xposed 等hook 工具分析 运行时的状态。所以需要额外的学习更多的知识。
 - 逆向开发同样的要了解非常多的正向开发知识,而且未必比正向开发来的少。没有正向开发的知识支撑,你或许难以入手。
 - 混杂的技术栈。逆向过程你或许需要学习包括且不限于 android开发 JNI开发 通信协议 hook 汇编 arm指令 python js lua(逆向分析游戏) c/c++ liunx 等知识,了解的越多做起事情越容易。
 - 少量且隐秘的从事人员,封闭的且极少更新的社区。比如看雪论坛,即使时热门的Android板块也是几天才有一条回复,半个月来一篇新帖。你想提问或许难以得到回应。
 - 无法搜索到的解决方案。如果问题是常见的如软件安装 或者 框架问题,或许很快有答案。但是具体到某个APP或者某个某行代码报错,你可能翻遍整个互联网也没有答案。这时候一个可靠的引路人极其重要。
 - 不断更新加强的安全措施。逆向就是和安全人员之间的对抗。所以安全人员会不断的加高逆向的难度,让其大到正常人无法突破。你需要自己去分析去找到门路,对抗最新的安全措施你只能靠你自己,百度是搜不到答案的。
 
正确的路线学习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逆向开发学习之路的更多相关文章
- Android开发学习之路--Activity之初体验
		
环境也搭建好了,android系统也基本了解了,那么接下来就可以开始学习android开发了,相信这么学下去肯定可以把android开发学习好的,再加上时而再温故下linux下的知识,看看androi ...
 - Android开发学习之路-RecyclerView滑动删除和拖动排序
		
Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...
 - Android应用开发学习之表格视图
		
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 本文我们来学习一个使用表格视图的程序,下图是该程序的运行效果: 该程序主Activity文件内容如下: packag ...
 - Android开发学习之路--基于vitamio的视频播放器(二)
		
终于把该忙的事情都忙得差不多了,接下来又可以开始good good study,day day up了.在Android开发学习之路–基于vitamio的视频播放器(一)中,主要讲了播放器的界面的 ...
 - Android开发学习之路--Android Studio cmake编译ffmpeg
		
最新的android studio2.2引入了cmake可以很好地实现ndk的编写.这里使用最新的方式,对于以前的android下的ndk编译什么的可以参考之前的文章:Android开发学习之路– ...
 - Android开发学习之路--网络编程之xml、json
		
一般网络数据通过http来get,post,那么其中的数据不可能杂乱无章,比如我要post一段数据,肯定是要有一定的格式,协议的.常用的就是xml和json了.在此先要搭建个简单的服务器吧,首先呢下载 ...
 - Android开发学习之路--Android系统架构初探
		
环境搭建好了,最简单的app也运行过了,那么app到底是怎么运行在手机上的,手机又到底怎么能运行这些应用,一堆的电子元器件最后可以运行这么美妙的界面,在此还是需要好好研究研究.这里从芯片及硬件模块-& ...
 - Android开发学习之路--MAC下Android Studio开发环境搭建
		
自从毕业开始到现在还没有系统地学习android应用的开发,之前一直都是做些底层的驱动,以及linux上的c开发.虽然写过几个简单的app,也对android4.0.3的源代码做过部分的分析,也算入门 ...
 - Android开发学习之路-自定义ListView(继承BaseAdapter)
		
大三学生一个,喜欢编程,喜欢谷歌,喜欢Android,所以选择的方向自然是Android应用开发,开博第一篇,希望以后会有更多的进步. 最近在做一个记账App的时候,需要一个Activity来显示每个 ...
 
随机推荐
- python(iJmeter-master)接口测试程序部署实践
			
记录学习性能测试过程遇到的问题 环境 安装环境如下: Windows 10 1803 VMWare Workstation 15 Pro Centos Linux release 7.9.2009(c ...
 - 前端使用canvas生成盲水印的加密解密
			
为了保障信息安全,防止重大信息泄露,并且能够锁定泄露用户,需要对页面展示的图片加入当前用户信息的盲水印,即最终图片外观看起来和原图一样,但是经过解码以后可以识别出水印信息,并且在截图后仍能进行较好的识 ...
 - 用 Roslyn 做个 JIT 的 AOP
			
0. 前言 上接:AOP有几种实现方式 接下来说说怎么做AOP的demo,先用csharp 说下动态编织和静态编织,有时间再说点java的对应内容. 第一篇先说Roslyn 怎么做个JIT的AOP d ...
 - Java基础数据类型详解
			
在Java中的数据类型一共有8种,大致分为整型(4个)浮点型(2个)布尔(1)字符(1个) 分类 类型 默认值 占用字节 范围 整型 byte 0 1 = 8 bit -2^7 - 2^7 short ...
 - 线段树入门详解,洛谷P3372 【模板】线段树 1
			
关于线段树: 本随笔参考例题 P3372 [模板]线段树 1 所谓线段树就是把一串数组拆分成一个一个线段形成的一棵树. 比如说像这样的一个数组1,2,3,4,5: 1 ~ 5 / ...
 - Java项目连接数据库Mysql报错create connection SQLException
			
今天编写了一个Java项目,对数据库Mysql的表进行增删改查,然后遇到了这个问题 严重: create connection SQLException, url: jdbc:mysql://loca ...
 - (已解决)'ng' 不是内部或外部命令,也不是可运行的程序或批处理文件
			
前言: 之前在安装Angular环境的时候有个问题,就是通过命令成功安装了angular cli脚手架工具,但是在终端(win+r cmd)中输入ng version一直提示的是'ng' 不是内部或外 ...
 - MySQL的修仙者之旅,不来看看你的修为如何吗?
			
目录 因为我个人比较喜欢看修仙类的小说,所以本文的主体部分借用修仙者的修为等级,将学习旅程划分成:练气.筑基.结丹.元婴.化神.飞升六个段位,你可以看下你大概在哪个段位上哦! 本文目录: 我为什么要写 ...
 - MVC中Bundle的使用
			
BundleConfig配置 (1)StyleBundle中的参数,即为cshtml中需要调用的虚拟路径名称. (2)Include包含路径,可以包含一个或多个css或js文件.即包含一组文件. pu ...
 - Semaphore信号量深度解析
			
1. 使用指南 package com.multthread; import java.util.concurrent.ExecutorService; import java.util.concur ...