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. 03-flask-视图函数基础

    代码 from flask import Flask, request, url_for, jsonify, redirect # 创建Flask对象 app = Flask(__name__) @a ...

  2. 细品 Spring Boot+Thymeleaf,还有这么多好玩的细节!

    @ 目录 1. Thymeleaf 简介 2. 整合 Spring Boot 2.1 基本用法 2.2 手动渲染 3. Thymeleaf 细节 3.1 标准表达式语法 3.1.1 简单表达式 3.1 ...

  3. FFmpeg 初级使用

    ffmpeg来处理多种媒体文件,对帧进行操作的时候非常的复杂,下面介绍下使用FFmpeg对视频文件的操作. 1,安装 windows安装ffmpeg: 下载ffmpeg文件解压文件到c盘配置环境变量C ...

  4. 【命令】pstree命令

    这个命令简单没有什么说的,语法格式: pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-Z] [-A|-G|-U] [pid|user] pstree ...

  5. Code-Review-Maven编译(第三方jar包引用)

    Code-Review-SpringBoot-Maven编译(第三方jar包引用) 在使用maven编译项目时,有时候咱们可能会使用一些第三方的jar包依赖库,比如第三方支付类的接入,大多出于安全考虑 ...

  6. 将后端返回的数据在jsp中拼接成table列表

    //先下载jquery js文件 放入项目中 jsp文件内容 <%@ page language="java" pageEncoding="UTF-8"% ...

  7. [leetcode]66Plus One

    /** * Given a non-negative integer represented as a non-empty array of digits, plus one to the integ ...

  8. 使用代码管理工具(git)管理代码的常用指令合集

    create a new repository on the command line echo "# test" >> README.md git init git ...

  9. TodoMVC Example知识点总结

    案例来自于vue.js的官方示例:https://cn.vuejs.org/v2/examples/todomvc.html,我在案例学习过程中,试着对其中的一些知识点进行记录: 一.浏览器数据存储, ...

  10. python-scrapy爬取某招聘网站信息(一)

    首先准备python3+scrapy+mysql+pycharm... 这次我们选择爬取智联招聘网站的企业招聘信息,首先我们有针对的查看网站的html源码,发现其使用的是js异步加载的方式,直接从服务 ...