什么是Android逆向?如何学习安卓逆向?Android逆向自学笔记入门到实战

1,691 阅读4分钟

前言

“安卓逆向”不是一个新名词,它伴随着安卓开发而生,但是一直以来,仅限于技术圈内流行,对于非技术圈人士,往往把“APP破解”和“安卓逆向”划等号。这是写给非技术圈人士看的,在于普及安卓逆向的概念及其应用场景。

安卓逆向是什么?

目前百度知道都没有收录安卓逆向这个词条,大部分能搜索到的资料都是技术人员写的偏技术类的文章,往往充斥着代码和各类工具集合,非技术人员一看就比较懵逼。

简单地来说,安卓逆向是对已经打包好的APP进行反编译、源码分析了解APP实现逻辑的一门技术。我们可以把安卓安装时用到的APK文件看作一个加密后的压缩包,逆向就是要最大程序地还原出APK打包之前的源码。

逆向需要用到解密、反编译、解压缩等技术,想要100%还原APK的源码几乎是不可能的,所以在实际进行逆向分析的时候,一般都是根据想实现的目的,分析出APK的部分源码和实现逻辑,然后对这一部分源码进行修改后与原始的APK打包在一起,这样就获得了一个实现自己特定目的的APP。

安卓逆向到底能做什么?

APP自动化执行程序脚本

比如有这么一个场景:某APP在某天某一时刻将推广一个领代金券的活动,只要登录账号,进入领取页面即可领取一张面额100元的无门槛代金券。很显然,这是一个可以撸羊毛的活动,如果我收集了100个账号,在那天利用某些手段确保每个账号抢到一张代金券,那我就能抢到100*100=10000元的代金券,再利用网络把这些券打7折卖出去,就能赚个7000块,是不是很爽?!通过安卓逆向分析,我就能把登录、领券的动作做成一个自动化执行的插件,我先把所有账号和密码保存起来备用,到了领券的开放时间,立即自动登录、领券,一个账号领券完,自动切换登录另一个账号,一气呵成就把所有账号的券都领到手。这就是安卓逆向的用途之一,可以自动化批量执行APP的一系列动作。类似地,如果想实现批量登录账号、点赞、评论,同样也是可以的。

修改APP的功能

不知道大家有没有遇到过,有些APP经常提示要更新,有些必须强制更新才能使用,可我就是不想更新,这时候也可以用逆向技术来实现修改APP的某些功能。通过逆向分析,找到触发更新的代码,然后把它屏蔽掉,这样打开APP后就再也不会提示更新了。

安卓逆向学习路线

以下是笔者自学笔记,以破解某目标apk的方式进行学习,中间辅以原理性知识,方便面试需求。

Android逆向入门流程

  • 获取目标apk
  • 确定逆向目标
  • 拖动目标文件到集成工具
  • 加固
  • 集成工具分析
  • 减少混淆干扰
  • 定位目标
  • 分析业务逻辑
  • 确定逆向方法
  • 使用apktool进行反编译
  • 得到.smali
  • 源码调试
  • 回编译app
  • 签名

Android逆向工程必备工具

  • SMALI/BAKSMALI
  • ANDBUG
  • ANDROGUARD
  • APKTOOL
  • AFE
  • BYPASS SIGNATURE AND PERMISSION CHECKS FORIPCS
  • ANDROID OPENDEBUG
  • DARE
  • DEX2JAR
  • ENJARIFY
  • DEDEXER
  • FINO
  • INDROID
  • INTENT SNIFFER
  • INTROSPY
  • JAD
  • JD-GUI
  • CFR
  • KRAKATAU
  • PROCYON
  • FERNFLOWER
  • REDEXER
  • SIMPLIFY安卓反混淆工具
  • BYTECODE VIEWER

Android 加固和多渠道打包自动化实践

  • 背景
  • 前期技术调研
  • 我们实际需求
  • 加固打包流程图
  • 完整的代码实现
  • 一些坑
  • 集成VasDolly
  • VasDolly的原理介绍:
  • 最后vasdolly完整代码

只需配置360账号的加固+渠道的gradle插件

  • Android-pack-plugin
  • 使用步骤(可参考sample)
  • TODO

手把手教你逆向分析Android程序

  • 反编译
  • Android 的签名保护机制到底是什么?
  • Android系统如何获取签名
  • 关于如何注入?

资料领取

以上完整pdf资料全部免费分享,有需要的朋友可以点击这里直达免费获取方式

最后

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

  • 无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来毫不费力,其实费了很大力,这四个字就是我的建议!!!!!!!!!
  • 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。