objection的基础使用
0x1 介绍&安装Objection
objection是基于frida的命令行hook工具, 可以让你不写代码, 敲几句命令就可以对java函数的高颗粒度hook, 还支持RPC调用
目前只支持Java层的hook, 但是objection有提供插件接口, 可以自己写frida脚本去定义接口
比如葫芦娃大佬的脱壳插件, 实名推荐: FRIDA-DEXDump
官方仓库: objection
- 安装前置条件
1
|
1. python版本 > 3.4
|
- 安装命令
pip3 install objection
安装完成后, 直接输入objection
, 就可以看到食用方法了
1
|
Usage: objection [OPTIONS] COMMAND [ARGS]...
|
0x2 简单使用一下
- 使用前几个使用tips
1
|
1. 空格键: 忘记命令直接输入空格键, 会有提示与补全
|
-
启动Frida-server并转发端口
-
附加需要调试的app, 进入交互界面
1
|
objection -g [packageName] explore
|
- 可以使用该env命令枚举与所讨论的应用程序相关的其他有趣目录:
env
1
|
com.opera.mini.native on (samsung: 6.0.1) [usb] # env
|
- 我们可以使用以下file download命令从远程文件系统中下载文件:
file download [file] [outfile]
1
|
com.opera.mini.native on (samsung: 6.0.1) [usb] # file download fhash.dat fhash.dat
|
-
可以列出app具有的所有avtivity:
android hooking list activities
1
2
3
4
5
6
7
8
9
10
11
12
com.opera.mini.native on (samsung: 6.0.1) [usb] # android hooking list activities
com.facebook.ads.AudienceNetworkActivity
com.google.android.gms.ads.AdActivity
com.google.android.gms.auth.api.signin.internal.SignInHubActivity
com.google.android.gms.common.api.GoogleApiActivity
com.opera.android.AssistActivity
com.opera.android.MiniActivity
com.opera.android.ads.AdmobIntentInterceptor
com.opera.mini.android.Browser
Found 8 classes -
启动指定avtivity:
android intent launch_activity [class_activity]
1
2
3
com.opera.mini.native on (samsung: 6.0.1) [usb] # android intent launch_activity com.facebook.ads.AudienceNetworkActivity
Launching Activity: com.facebook.ads.AudienceNetworkActivity... -
RPC 调用命令:
curl -s "http://127.0.0.1:8888/rpc/invoke/androidHookingListActivities"
1
2
3
4
5
6
7
8
9
10
11
12
$ curl -s "http://127.0.0.1:8888/rpc/invoke/androidHookingListActivities"
["com.reddit.frontpage.StartActivity","com.reddit.frontpage.IntroductionActivity", ... snip ...]
- RPC调用执行脚本:`url -X POST -H "Content-Type: text/javascript" http://127.0.0.1:8888/script/runonce -d "@script.js"`
$ cat script.js
{
send(Frida.version);
}
[{"payload":"12.8.0","type":"send"}]
0x3 API介绍
以下只是写了一部分指令和功能, 详细的功能需要合理运用
空格
和help
呦
-
Memory 指令
1
2
3
4memory list modules //枚举当前进程模块
memory list exports [lib_name] //查看指定模块的导出函数
memory list exports libart.so --json /root/libart.json //将结果保存到json文件中
memory search --string --offsets-only //搜索内存 -
android heap
1
|
//堆内存中搜索指定类的实例, 可以获取该类的实例id
|
- root
1
|
//尝试关闭app的root检测
|
-
ui
1
2
3
4
5//截图
android ui screenshot [image.png]
//设置FLAG_SECURE权限
android ui FLAG_SECURE false -
内存漫游
1
|
//列出内存中所有的类
|
- hook 方式
1
|
/*
|
- Spawn方式Hook
1
|
objection -g packageName explore --startup-command '[obejection_command]'
|
- activity和service操作
1
|
//枚举activity
|
- 任务管理器
1
|
//查看任务列表
|
-
关闭app的ssl校验
1
android sslpinning disable
-
监控系统剪贴板
1
|
//获取Android剪贴板服务上的句柄并每5秒轮询一次用于数据。 如果发现新数据,与之前的调查不同,则该数据将被转储到屏幕上。
|
- 执行命令行
1
|
help android shell_exec [command]
|
- 插件编写 : objection pluging