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来显示每个 ...
随机推荐
- Anno 让微服务、混合编程更简单(Net love Java)
在社区或者QQ群我们经常看到有人争辩编程语言的好坏,只要一提起这个话题常常就能引来很多人参与,往往最后就变成了一群人几个小时的骂战.今天我们要说的是如何让Java和.Net(甚至更多语言)相结合.充分 ...
- SpringBoot + SpringSecurity + Mybatis-Plus + JWT + Redis 实现分布式系统认证和授权(刷新Token和Token黑名单)
1. 前提 本文在基于SpringBoot整合SpringSecurity实现JWT的前提中添加刷新Token以及添加Token黑名单.在浏览之前,请查看博客: SpringBoot + Sp ...
- 2. 使用Shell能做什么
批处理 在批处理的过程中,能够实现脚步自动化,比GUI自动化速度高效 日常工作场景 服务端测试 移动端测试 持续集成与自动化部署,这是最最场景的场景,可以说离开了shell,持续集成和自动化部署也会遇 ...
- hive中的虚拟列
hive为用户提供了三个虚拟列:用户可以通过这三个虚拟列确定记录是来自哪个文件以及这条记录的具体位置信息 INPUT__FILE__NAME 返回记录所在的具体hdfs文件全路径 hive> s ...
- 工具-效率工具-XMIND8破解(99.1.3)
@ 目录 1.下载 2.修改hosts文件 3.修改配置文件 4.填入序列号 5.破解完成 关于作者 1.下载 1.点击进入官方网站下载 2.下载破解包 网址:点击进入网盘地址 密码:domd 2.修 ...
- Python实现全自动购买火车票!抢票回家过年咯
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理这个是实现结果,因为一天只能取消三次,所以最后一步点击确认被我注释了1.首先实现使用selenium登 ...
- C#使用时间戳
前言 参考博客 C#获取和转换时间戳: https://blog.csdn.net/weixin_39885282/article/details/79462443 获取时间戳: https://ww ...
- [.NET] - 在Create一个RSA密钥的是要注意的长度问题
有时候我们需要自己手动的创建RSA密钥,但是在密钥创建之后,在使用的时候会有类似密钥长度不正确的错误信息被抛出,那可能就是在创建一个RSA密钥的时候,对于的elements长度没设置正确,所以的ele ...
- AspectJ之@DeclareParents注解为对象添加新方法
众所周知,AspectJ可以通过@Before,@After,@Around等注解对连接点进行增强,今天我们来玩一个新注解@DeclareParents.对目标对象增强一个新方法. 场景引入: 现在我 ...
- 本地TOMCAT启动打包项目(WAR)
首先打个包,右击项目-->Export... 选择WEB-->WAR file-->Next 选个放置地址,勾选红框处-->finish 找到自己的tomcat目录 ...