前言
“安卓逆向”不是一个新名词,它伴随着安卓开发而生,但是一直以来,仅限于技术圈内流行,对于非技术圈人士,往往把“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
完整学习笔记pdf全部免费分享,需要的朋友只需一键三连(点赞+收藏+关注)后,点击这里直达免费获取方式
Android 加固和多渠道打包自动化实践
- 背景
- 前期技术调研
- 我们实际需求
- 加固打包流程图
- 完整的代码实现
- 一些坑
- 集成VasDolly
- VasDolly的原理介绍:
- 最后vasdolly完整代码
只需配置360账号的加固+渠道的gradle插件
- Android-pack-plugin
- 使用步骤(可参考sample)
- TODO
手把手教你逆向分析Android程序
- 反编译
- Android 的签名保护机制到底是什么?
- Android系统如何获取签名
- 关于如何注入?
资料领取
一键三连后进群Q 群 :924771892;联系管理免费领取 添加时请备注 ‘牛客+资料’
最后
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
- 无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,这四个字就是我的建议!!!!!!!!!
- 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。