作者论坛账号:正己
由吾爱破解论坛移动安全区版主 正己录制的吾爱破解安卓逆向 0基础 新手小白 视频教程《安卓逆向这档事》正式上线啦,如果你想学习安卓逆向,这是一个不错的机会呦!
前情提要:吾爱破解安卓逆向入门教程《安卓逆向这档事》十三、是时候学习一下Frida一把梭了(上)
1.配置objection环境
2.了解objection常用Api
3.了解frida_java_trace工具分析控制流混淆
1.教程Demo(更新)
2.jadx-gui
3.VS Code
4.IDLE
objection是基于frida的命令行hook集合工具, 可以让你不写代码, 敲几句命令就可以对java函数的高颗粒度hook, 还支持RPC调用。可以实现诸如内存搜索、类和模块搜索、方法hook打印参数返回值调用栈等常用功能,是一个非常方便的,逆向必备、内存漫游神器。
项目地址
已不更新,要和frida的版本匹配
复制代码 隐藏代码python使用的版本建议大于3.8,不然可能会报错,或者你调低frida以及objection的版本
pip install objection==1.11.0
pip install frida-tools==9.2.4
frida 14.2.18
1.help命令注释
复制代码 隐藏代码objection --help(help命令)
Checking for a newer version of objection...
Usage: objection [OPTIONS] COMMAND [ARGS]..._ _ _ _
___| |_|_|___ ___| |_|_|___ ___
| . | . | | -_| _| _| | . | |
|___|___| |___|___|_| |_|___|_|_|
|___|(object)inject(ion)Runtime Mobile Exploration
by: @leonjza from @sensepost默认情况下,通信将通过USB进行,除非提供了`--network`选项。
选项:
-N, --network 使用网络连接而不是USB连接。
-h, --host TEXT [默认: 127.0.0.1]
-p, --port INTEGER [默认: 27042]
-ah, --api-host TEXT [默认: 127.0.0.1]
-ap, --api-port INTEGER [默认: 8888]
-g, --gadget TEXT 要连接的Frida Gadget/进程的名称。[默认: Gadget]
-S, --serial TEXT 要连接的设备序列号。
-d, --debug 启用带有详细输出的调试模式。(在堆栈跟踪中包括代{过}{滤}理源图)
--help 显示此消息并退出。命令:
api 以无头模式启动objection API服务器。
device-type 获取关于已连接设备的信息。
explore 启动objection探索REPL。
patchapk 使用frida-gadget.so补丁一个APK。
patchipa 使用FridaGadget dylib补丁一个IPA。
run 运行单个objection命令。
signapk 使用objection密钥对APK进行Zipalign和签名。
version 打印当前版本并退出。
2.注入命令
复制代码 隐藏代码objection -g 包名 explore
- help:不知道当前命令的效果是什么,在当前命令前加help比如:help env,回车之后会出现当前命令的解释信息
- 按空格:不知道输入什么就按空格,会有提示出来
- jobs:可以进行多项hook
- 日志:objection的日志文件生成在 C:\Users\Administrator\.objection
启动前就hook
复制代码 隐藏代码objection -g 进程名 explore --startup-command "android hooking watch class 路径.类名"
memory list modules -查看内存中加载的库
复制代码 隐藏代码memory list modules
Save the output by adding `--json modules.json` to this command
Name Base Size Path
---------------------------------------------------------------- ------------ ------------------- ------------------------------------------------------------------------------
app_process64 0x57867c9000 40960 (40.0 KiB) /system/bin/app_process64
linker64 0x72e326a000 229376 (224.0 KiB) /system/bin/linker64
libandroid_runtime.so 0x72e164e000 2113536 (2.0 MiB) /system/lib64/libandroid_runtime.so
libbase.so 0x72dfa67000 81920 (80.0 KiB) /system/lib64/libbase.so
libbinder.so 0x72dec1c000 643072 (628.0 KiB) /system/lib64/libbinder.so
libcutils.so 0x72de269000 86016 (84.0 KiB) /system/lib64/libcutils.so
libhidlbase.so 0x72df4cc000 692224 (676.0 KiB) /system/lib64/libhidlbase.so
liblog.so 0x72e0be1000 98304 (96.0 KiB) /system/lib64/liblog
memory list exports so名称 - 查看库的导出函数
复制代码 隐藏代码memory list exports liblog.so
Save the output by adding `--json exports.json` to this command
Type Name Address
-------- ------------------------------------ ------------
function android_log_write_int32 0x72e0be77c8
function android_log_write_list_begin 0x72e0be76f0
function __android_log_bswrite 0x72e0be9bd8
function __android_log_security 0x72e0bf2144
function __android_log_bwrite 0x72e0be9a18
function android_log_reset 0x72e0be75ec
function android_log_write_string8 0x72e0be7a38
function android_logger_list_free 0x72e0be8c04
function __android_log_print 0x72e0be9728
function __android_logger_property_get_bool 0x72e0bf2248
function android_logger_get_id 0x72e0be8270
function android_logger_set_prune_list 0x72e0be8948
android hooking list activities -查看内存中加载的activity /android hooking list services -查看内存中加载的services
android intent launch_activity 类名 -启动activity
或service
(可以用于一些没有验证的activity,在一些简单的ctf中有时候可以出奇效)
关闭ssl校验 android sslpinning disable
关闭root检测 android root disable
内存搜刮类实例
复制代码 隐藏代码android heap search instances 类名(命令)
Class instance enumeration complete for com.zj.wuaipojie.Demo
Hashcode Class toString()
--------- --------------------- -----------------------------
215120583 com.zj.wuaipojie.Demo com.zj.wuaipojie.Demo@cd27ac7
调用实例的方法
复制代码 隐藏代码android heap execute <handle> getPublicInt(实例的hashcode+方法名)
如果是带参数的方法,则需要进入编辑器环境
android heap evaluate <handle>
console.log(clazz.a("吾爱破解"));
按住esc+enter触发
android hooking list classes -列出内存中所有的类(结果比静态分析的更准确)
复制代码 隐藏代码android hooking list classes
tw.idv.palatis.xappdebug.MainApplication
tw.idv.palatis.xappdebug.xposed.HookMain
tw.idv.palatis.xappdebug.xposed.HookMain$a
tw.idv.palatis.xappdebug.xposed.HookMain$b
tw.idv.palatis.xappdebug.xposed.HookMain$c
tw.idv.palatis.xappdebug.xposed.HookMain$d
tw.idv.palatis.xappdebug.xposed.HookSelf
u
v
void
w
xposed.dummy.XResourcesSuperClass
xposed.dummy.XTypedArraySuperClassFound 10798 classes
android hooking search classes 关键类名 -在内存中所有已加载的类中搜索包含特定关键词的类
复制代码 隐藏代码android hooking search classes wuaipojie
Note that Java classes are only loaded when they are used, so if the expected class has not been found, it might not have been loaded yet.
com.zj.wuaipojie.Demo
com.zj.wuaipojie.Demo$Animal
com.zj.wuaipojie.Demo$Companion
com.zj.wuaipojie.Demo$InnerClass
com.zj.wuaipojie.Demo$test$1
com.zj.wuaipojie.MainApplication
com.zj.wuaipojie.databinding.ActivityMainBinding
...Found 38 classes
android hooking search methods 关键方法名 -在内存中所有已加载的类的方法中搜索包含特定关键词的方法(一般不建议使用,特别耗时,还可能崩溃)
android hooking list class_methods 类名 -内存漫游类中的所有方法
复制代码 隐藏代码android hooking list class_methods com.zj.wuaipojie.ui.ChallengeSixth
private static final void com.zj.wuaipojie.ui.ChallengeSixth.onCreate$lambda-0(com.zj.wuaipojie.ui.ChallengeSixth,android.view.View)
private static final void com.zj.wuaipojie.ui.ChallengeSixth.onCreate$lambda-1(com.zj.wuaipojie.ui.ChallengeSixth,android.view.View)
private static final void com.zj.wuaipojie.ui.ChallengeSixth.onCreate$lambda-2(com.zj.wuaipojie.ui.ChallengeSixth,android.view.View)
private static final void com.zj.wuaipojie.ui.ChallengeSixth.onCreate$lambda-3(com.zj.wuaipojie.ui.ChallengeSixth,android.view.View)
protected void com.zj.wuaipojie.ui.ChallengeSixth.onCreate(android.os.Bundle)
public final java.lang.String com.zj.wuaipojie.ui.ChallengeSixth.hexToString(java.lang.String)
public final java.lang.String com.zj.wuaipojie.ui.ChallengeSixth.unicodeToString(java.lang.String)
public final void com.zj.wuaipojie.ui.ChallengeSixth.toastPrint(java.lang.String)
public static void com.zj.wuaipojie.ui.ChallengeSixth.$r8$lambda$1lrkrgiCEFWXZDHzLRibYURG1h8(com.zj.wuaipojie.ui.ChallengeSixth,android.view.View)
public static void com.zj.wuaipojie.ui.ChallengeSixth.$r8$lambda$IUqwMqbTKaOGiTaeOmvy_GjNBso(com.zj.wuaipojie.ui.ChallengeSixth,android.view.View)
public static void com.zj.wuaipojie.ui.ChallengeSixth.$r8$lambda$Kc_cRYZjjhjsTl6GYNHbgD-i6sE(com.zj.wuaipojie.ui.ChallengeSixth,android.view.View)
public static void com.zj.wuaipojie.ui.ChallengeSixth.$r8$lambda$PDKm2AfziZQo6Lv1HEFkJWkUsoE(com.zj.wuaipojie.ui.ChallengeSixth,android.view.View)Found 12 method(s)
hook类的所有方法
复制代码 隐藏代码android hooking watch class 类名
hook方法的参数、返回值和调用栈
复制代码 隐藏代码android hooking watch class_method 类名.方法名 --dump-args --dump-return --dump-backtrace
hook 类的构造方法
复制代码 隐藏代码android hooking watch class_method 类名.$init
hook 方法的所有重载
复制代码 隐藏代码android hooking watch class_method 类名.方法名
样本展示:
项目地址:
BlackObfuscator
ZenTracer
项目地址
缺点:无法打印调用栈,无法hook
构造函数
复制代码 隐藏代码因为以长久不更新,故新版frida不兼容,下面是我跑起来的版本
python==3.8.8
firda==14.2.18
frida-tools==9.2.4
还需要安装pyqt5的库
复制代码 隐藏代码//使用说明
1.运行server端
2.点击action
3.点击Match Regex设置过滤标签
4.输入包名(或者方法名等可以过滤的标签),点击add
5.点击action的start
6.点击应用触发相应的逻辑
7.可左上角fils-Export JSON来导出日志分析
r0tracer
项目地址
兼容最新版本
复制代码 隐藏代码
//A. 简易trace单个lei
//traceClass("com.zj.wuaipojie2023_1.MainActivity")
//B. 黑白名单trace多个函数,第一个参数是白名单(包含关键字),第二个参数是黑名单(不包含的关键字)
hook("com.zj.wuaipojie2023_1", "$");
//hook("ViewController","UI")
//C. 报某个类找不到时,将某个类名填写到第三个参数,比如找不到com.roysue.check类。(前两个参数依旧是黑白名单)
// hook("com.roysue.check"," ","com.roysue.check");
//D. 新增hookALL() 打开这个模式的情况下,会hook属于app自己的所有业务类,小型app可用 ,中大型app几乎会崩溃,经不起
// hookALL()//日志输出
frida -U -f 【2023春节】解题领红包之四 -l r0tracer.js -o Log.txt
待更新
百度云:
《安卓逆向这档事》二、初识APK文件结构、双开、汉化、基础修改
《安卓逆向这档事》三、初识smail,vip终结者
《安卓逆向这档事》四、恭喜你获得广告&弹窗静默卡
《安卓逆向这档事》五、1000-7=?&动态调试&Log插桩
《安卓逆向这档事》六、校验的N次方-签名校验对抗、PM代{过}{滤}理、IO重定向
《安卓逆向这档事》七、Sorry,会Hook真的可以为所欲为-Xposed快速上手(上)模块编写,常用Api
《安卓逆向这档事》八、Sorry,会Hook真的可以为所欲为-xposed快速上手(下)快速hook
《安卓逆向这档事》十三、是时候学习一下Frida一把梭了(上)
实用FRIDA进阶:内存漫游、hook anywhere、抓包
https://www.anquanke.com/post/id/197657
点击左下角阅读原文,进入 B站 在线观看视频教程,欢迎一键三连转发~
-官方论坛
www.52pojie.cn
--推荐给朋友
公众微信号:吾爱破解论坛
或搜微信号:pojie_52