安卓逆向入门备忘
Marce1

看了两天的安卓逆向相关的,感觉只能打一点点mobile的题目,还没触及到安卓逆向有意思的部分。现在用模拟器,没去折腾真机,先写一写这两天找到的资料

$$$:重要的必学内容或者笔者觉得同类文章/题目/资源中最好的一类,学习相关内容的第一选择

$$:较为重要的知识/环境配置,推荐一看

$:相关知识的补充/第二手资料,也有比较有趣的乐子,比较有时间可以看看

?:感觉有一定价值,还没细看,先放在这里

以下内容可能会有一定局限性,仅作参考。但会随着笔者的学习不断改进、更新。

环境配置

$$环境是跟着吾爱上的正已配的,jdx-gui,雷电模拟器,magisk,frida,adb,开发者助手之类的。这也是一个系列课,叫做《安卓逆向这档事》,b站上也有视频教程。

https://www.52pojie.cn/thread-1695141-1-1.html

$$还有很多逆向常见工具和软件,可以在吾爱的爱盘上找

https://down.52pojie.cn/Tools/

?或者github上也有人总结打包逆向工具,只不过也有点年头了……

https://github.com/WuFengXue/android-reverse

?其他一些:

r0ysue/r0capture: 安卓应用层抓包通杀脚本

$$$adb

Android ADB原理及常用命令 - 测试开发小记 - 博客园

$$apktool

【Android】使用Apktool反编译Apk文件 - R-Bear - 博客园

入门资料

$$$首先你要学安卓逆向你得看得懂Java,上菜鸟学一下基础语法,至少要看懂

https://www.runoob.com/java/java-tutorial.html

$$$然后就是安卓逆向本身,这两天看得最多的,也是我觉得观感最好的就是看雪上的这一篇:

https://bbs.kanxue.com/thread-285906.htm

可以了解入门级别的安卓逆向都在干什么,配合对应的题目做,感觉跟着做完就可以随便出签到了

$$或者上buu/攻防世界上搜mobile题目

攻防世界

关于安卓应用知识本身,一般是跟着教程什么不会搜什么/问AI

$安卓逆向-APK结构到四大组件的分析 - FreeBuf网络安全行业门户

吾爱上有两篇,写的很二,可以当乐子看

$【原木文章】Android改造者之路-01.初识Apk体质的形成 - 吾爱破解 - 52pojie.cn

$【原木文章】Android改造者之路-02.初探smali功法 - 吾爱破解 - 52pojie.cn

有一个菜鸟上系统性而且特别详细的,感觉适合对概念有感性认知之后回头来深究。就像你不能要别人二进制入门就抱着csapp啃,学了一些打法之后再回头来看,会觉得原来如此:

$$https://www.runoob.com/w3cnote/android-tutorial-intro.html

只不过这个好像是18年的,也有点年头了。

$$$https://github.com/r0ysue/AndroidSecurityStudy

r0ysue师傅的仓库,做完上面的入门就能很平滑的看这里的进阶,是这两天网上我找到的最好的进阶理论总结。这个r0ysue师傅还有知识星球和其他很好的安卓逆向资料,感觉是这个方向的大手子。

可以把这个下面对应的题目刷了,也可以按题目类型自行学习

$$$r0ysue/MobileCTF: 体系化、实战化、step by step、目标清晰且具体的一个打怪升级、成长路径规划图

这个作者个人学习逆向相关所遇到的一些技术知识点和路径

$https://github.com/AlienwareHe/awesome-reverse

其他一些:

$https://bbs.kanxue.com/thread-279407.htm

?[原创]安卓逆向基础知识之安卓开发与逆向基础-Android安全-看雪-安全社区|安全招聘|kanxue.com

http://maddiestone.github.io/AndroidAppRE

frida

官方文档Welcome | Frida • A world-class dynamic instrumentation toolkit

frida api的使用(如何写hook脚本)

配置adb和frida的时候要注意电脑主机的frida和模拟器/安卓机里的frida-server版本务必相同。不建议使用太高的版本,我和另一个师傅在模拟器上使用frida16执行frida-server的时候都遇到了强制软重启的问题。

frida的主要脚本语言是js,相关apiJavaScript API | Frida • A world-class dynamic instrumentation toolkit

为了提高开发效率,可以熟练方法调用之后尝试使用tsoleavr/frida-agent-example: Example Frida agent written in TypeScript

image-20250427174107670

资料:

$$https://github.com/r0ysue/AndroidSecurityStudy中的 frida-api部分

$$FRIDA-API使用篇:Java、Interceptor、NativePointer 腾讯云开发者社区-腾讯云](https://cloud.tencent.com/developer/article/1758879)

?[原创]Hook入门与抓包-Android安全-看雪-安全社区|安全招聘|kanxue.com

练手靶场:

$$$https://github.com/DERE-ad2001/Frida-Labs环境配置和做法讲解都十分详细,而且对于hook的各个情况的处理总结的比较全面,英文也比较易读(我一个四级低空飘过的无障碍读),是学习写frida脚本的不二之选

通过Frida-Labs入门Frida | Closure Frida-Labs的题解,虽然说labs里就附有很详尽的solution。这里面可能有一些思路可以给你提供其他思路,还有一些环境不一致的解决方案

$$$https://github.com/r0ysue/MobileCTF/tree/main/AndroidHook中的SixLock,做完了上面的Frida-Labs可以做下这个检验学习成果

unidbg

$$$龙哥unidbg基础入门_unidbg入门-CSDN博客

$$ 《安卓逆向这档事》第二十三课、黑盒魔法之Unidbg - 吾爱破解 - 52pojie.cn

##备忘

全局指定调试

1
2
3
4
adb shell //adb进入命令行模式
su //切换至超级用户
magisk resetprop ro.debuggable 1 //设置debuggable
stop;start; //一定要通过该方式重启

debug模式启动

1
adb shell am start -D -n com.zj.wuaipojie/.ui.MainActivity

flag{bc72f242a6af385}

更改可调试

1
android:debuggable="true"

生成签名

1
keytool -genkey -alias new.keystore -keyalg RSA -validity 20000 -keystore new.keystore

反编译、回编

1
2
apktool d target.apk
apktool b target

签名

1
jarsigner -verbose -keystore new.keystore -signedjar target.apk target0_signed.apk new.keystore

frida-dexdump

1
frida-dexdump -U -f com.sina.oasis -d -o ./
  1. -U
    连接到 USB 设备(USB-connected device)。若有多个设备连接,需用此参数指定目标设备。若使用模拟器,可改用 **-R**(Remote)连接本地模拟器。

  2. -f com.sina.oasis
    指定要提取 DEX 文件的应用包名(Package Name)。

    • com.sina.oasis 是微博国际版的包名,不同应用包名不同(如微信为 com.tencent.mm)。
  3. -d
    启用 深度提取模式(Deep DEX extraction)。

    • 不仅提取主 DEX 文件,还会递归扫描内存中的所有 DEX(包括动态加载的 DEX、从内存中解密的 DEX 等)。适用于对抗代码加固(如 360 加固、梆梆加固)。
  4. -o ./
    指定输出目录(Output directory)。

    • ./ 表示当前目录,提取的 DEX 文件将保存到执行命令的文件夹中。
由 Hexo 驱动 & 主题 Keep
总字数 47.9k 访客数 访问量