最近有些忙, 很久没写笔记了, 之前看大佬介绍的工具, 挺好使, 记个笔记…
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