简单地来说,安卓逆向是对已经打包好的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 加固和多渠道打包自动化实践
-
背景
-
前期技术调研
结语
网上高级工程师面试相关文章鱼龙混杂,要么一堆内容,要么内容质量太浅, 鉴于此我整理了上述安卓开发高级工程师面试题以及答案。希望帮助大家顺利进阶为高级工程师。
目前我就职于某大厂安卓高级工程师职位,在当下大环境下也想为安卓工程师出一份力,通过我的技术经验整理了面试经常问的题,答案部分是一篇文章或者几篇文章,都是我认真看过并且觉得不错才整理出来。
大家知道高级工程师不会像刚入门那样被问的问题一句话两句话就能表述清楚,所以我通过过滤好文章来帮助大家理解。
现在都说互联网寒冬,其实只要自身技术能力够强,咱们就不怕!我这边专门针对Android开发工程师整理了一套【Android进阶学习视频】、【全套Android面试秘籍】、【Android知识点PDF】。
外链图片转存中…(img-NfKoKGti-1643889138266)]
现在都说互联网寒冬,其实只要自身技术能力够强,咱们就不怕!我这边专门针对Android开发工程师整理了一套【Android进阶学习视频】、【全套Android面试秘籍】、【Android知识点PDF】。