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
分类:
app逆向相关
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
2019-08-22 Android逆向破解:Android Killer使用
2019-08-22 鸭子类型和猴子补丁