首页
社区
课程
招聘
[原创]AppInspect : 一个纯手机端实现的无代码的hook框架
发表于: 2021-8-20 17:43 12492

[原创]AppInspect : 一个纯手机端实现的无代码的hook框架

2021-8-20 17:43
12492

由于疫情捂在家里,写了一个纯App端的Hook框架(暂且这么称呼,没有太多黑科技,大佬轻拍)。

AppInspect的特点是PC端无需安装任何软件,通过浏览器访问手机,对选中的目标App内部模块进行浏览和hook。

主要还是想探索一下Rust+Flutter 写一些底层一点的应用,具体应用场景和需求还不是特别明确,想听听专业人士的意见。

下载地址:
https://github.com/wuhx/AppInspect

包括两个部分:
Riru模块(app-inspect-v0.0.1.zip)用于hook进App内部,启动server与App通信。
App客户端(AppInspect-0.0.1.apk )用于提供hook配置界面,配置完成可退出。

1 手机端:

2 浏览器访问:
可通过App名称,pkg名称,地址等进行App搜索,点右边的甲虫按钮进行调试。

3 点调试后,会进入对应App的内部module列表(加载的so,dex等),这里可根据模块名称,地址进行搜索

也支持输入地址,显示该地址属于的模块。

点击模块右侧的下载按钮,可以从内存dump出模块内容,下载到电脑。

4 点击选中的模块后,进入symbol列表。同样支持实时搜索。对于c++的函数名会自动demangle。

5 点击要hook的函数后,进入一个简陋配置界面,

主要是配置参数序号和类型
类型只实现了c的char* 和jni的jstring,其他类型待增加,主要验证可行性,

如:open函数的原型是:
int open(const char *pathname, int flags)
对应参数0的类型是chars
参数1的类型是value

点击右上角保存按钮,后重启目标App,即可生效。

理论上这里可做更多的事,比如利用Android源码或java侧的jni函数signature自动获取函数参数列表类型。

目前hook后到操作是以json格式打印到logcat,后面考虑更合适的操作。比如webhook或写sqlite数据库。

加载成功后的logcat日志

 
 
 
 
 
 
 
 
 
 
 
 
 
Riru-AppInspect-SRV: libre_server::cache::pb_message_cache: PbMessageCache find 2 hooks
Riru-AppInspect-SRV: add_hook_to_list: HookFunctionInfo { pkg_name: "com.tencent.mm", module_name: Some("libc.so"), function_name: "open", args: [(0, chars), (1, value)] }
Riru-AppInspect-SRV: add_hook_to_list: HookFunctionInfo { pkg_name: "com.tencent.mm", module_name: Some("libwcdb.so"), function_name: "sqlite3_open_v2", args: [(0, chars)] }
 
 
//com.tencent.mm启动时找到两个hook:
//libc.so的open
//libwcdb.so的sqlite3_open_v2
 
Riru-AppInspect-SRV: libre_server::hook: HookInfo: do_hook fail, fail to find ptr for: HookFunctionInfo { pkg_name: "com.tencent.mm", module_name: Some("libwcdb.so"), function_name: "sqlite3_open_v2", args: [(0, chars)] }
 
//sqlite3_open_v2 hook失败(此时libwcdb.so还没加载)
 
 
Riru-AppInspect-SRV: hook_jvm_native_load: load /data/app/~~doK-kt6wrU2os9ZOgHddTA==/com.tencent.mm-gxYlcjouxWARtuBs7QGSPA==/lib/arm64/libwcdb.so
Riru-AppInspect-SRV: do_hook: NativePointer(0x7b672d02dc) HookFunctionInfo { pkg_name: "com.tencent.mm", module_name: Some("libwcdb.so"), function_name: "sqlite3_open_v2", args: [(0, chars)] }
//libwcdb.so加载后,sqlite3_open_v2 hook成功
 
//hook输出打印
Riru-AppInspect-SRV: libre_server::hook::hook_function_info: {
Riru-AppInspect-SRV:   "pkg_name": "com.tencent.mm",
Riru-AppInspect-SRV:   "module_name": "libc.so",
Riru-AppInspect-SRV:   "function_name": "open",
Riru-AppInspect-SRV:   "args": [
Riru-AppInspect-SRV:     {
Riru-AppInspect-SRV:       "name": "arg0",
Riru-AppInspect-SRV:       "value": "/data/user/0/com.tencent.mm/shared_prefs/service_launch_way.xml"
Riru-AppInspect-SRV:     },
Riru-AppInspect-SRV:     {
Riru-AppInspect-SRV:       "name": "arg1",
Riru-AppInspect-SRV:       "value": "0"
Riru-AppInspect-SRV:     }
Riru-AppInspect-SRV:   ]
Riru-AppInspect-SRV: }
 
 
Riru-AppInspect-SRV: libre_server::hook::hook_function_info: {
Riru-AppInspect-SRV:   "pkg_name": "com.tencent.mm",
Riru-AppInspect-SRV:   "module_name": "libwcdb.so",
Riru-AppInspect-SRV:   "function_name": "sqlite3_open_v2",
Riru-AppInspect-SRV:   "args": [
Riru-AppInspect-SRV:     {
Riru-AppInspect-SRV:       "name": "arg0",
Riru-AppInspect-SRV:       "value": "/data/user/0/com.tencent.mm/MicroMsg/c5944ec3938fc59659b516b6f26d17c0/TextStatus.db"
Riru-AppInspect-SRV:     }
Riru-AppInspect-SRV:   ]
Riru-AppInspect-SRV: }
Riru-AppInspect-SRV: libre_server::cache::pb_message_cache: PbMessageCache find 2 hooks
Riru-AppInspect-SRV: add_hook_to_list: HookFunctionInfo { pkg_name: "com.tencent.mm", module_name: Some("libc.so"), function_name: "open", args: [(0, chars), (1, value)] }
Riru-AppInspect-SRV: add_hook_to_list: HookFunctionInfo { pkg_name: "com.tencent.mm", module_name: Some("libwcdb.so"), function_name: "sqlite3_open_v2", args: [(0, chars)] }
 
 
//com.tencent.mm启动时找到两个hook:
//libc.so的open
//libwcdb.so的sqlite3_open_v2
 
Riru-AppInspect-SRV: libre_server::hook: HookInfo: do_hook fail, fail to find ptr for: HookFunctionInfo { pkg_name: "com.tencent.mm", module_name: Some("libwcdb.so"), function_name: "sqlite3_open_v2", args: [(0, chars)] }

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2021-8-20 17:47 被whx编辑 ,原因:
收藏
免费 6
支持
分享
最新回复 (13)
雪    币: 12
活跃值: (1145)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2

代码好像不全

最后于 2021-8-20 18:41 被twsxtd编辑 ,原因: 无
2021-8-20 18:40
0
雪    币: 188
活跃值: (529)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whx
3
twsxtd 代码好像不全

是的,开源的是Riru模块,Rust和Flutter部分是和其他项目共用的,还没想好怎么弄。另外目前这个App的完成度还很低,现在放出来主要是想听听各位大佬的意见,我逆向做的比较少,可能get不到需求和痛点

最后于 2021-8-20 21:07 被whx编辑 ,原因:
2021-8-20 19:34
0
雪    币: 864
活跃值: (5124)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
希望增加,在内存中搜索字符串的功能,这个是逆向获取关键信息的重要功能,如果能直接对字符串进行定位,找到实体类,那就很棒了!
2021-8-21 15:59
0
雪    币: 188
活跃值: (529)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whx
5
suuuuu 希望增加,在内存中搜索字符串的功能,这个是逆向获取关键信息的重要功能,如果能直接对字符串进行定位,找到实体类,那就很棒了!

C++还是Java的实体类?

目前只实现了native层的功能,ART层正在考虑中,
想走Frida的实现方式,但貌似native层强制打开调试,用jdwp协议操作会更直接

最后于 2021-8-21 23:26 被whx编辑 ,原因:
2021-8-21 20:34
0
雪    币: 4399
活跃值: (3988)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
D-t
6
推荐的地址一直访问不进去是什么情况
2021-8-22 20:32
0
雪    币: 188
活跃值: (529)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whx
7
D-t 推荐的地址一直访问不进去是什么情况
不清楚,我这边下午访问帖子一直有问题,看雪被ddos了吗?
2021-8-22 20:41
0
雪    币: 4399
活跃值: (3988)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
D-t
8
whx 不清楚,我这边下午访问帖子一直有问题,看雪被ddos了吗?
我是说软件推荐的远程地址 进不去
2021-8-22 20:47
0
雪    币: 188
活跃值: (529)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whx
9
D-t 我是说软件推荐的远程地址 进不去
确认一下手机端10020端口打开了没? pc要和手机在同一个局域网
另外第一次打开需要初始化会有一段时间白屏,可以看一下浏览器的调试窗口
2021-8-22 22:31
0
雪    币: 4399
活跃值: (3988)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
D-t
10
whx 确认一下手机端10020端口打开了没? pc要和手机在同一个局域网 另外第一次打开需要初始化会有一段时间白屏,可以看一下浏览器的调试窗口
怎么去看啊
2021-8-22 22:42
0
雪    币: 864
活跃值: (5124)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
地址进去了,点击虫子按钮没有任何反应,我是魅族x8,android 版本8.1.0
2021-9-1 15:43
0
雪    币: 188
活跃值: (529)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whx
12
suuuuu 地址进去了,点击虫子按钮没有任何反应,我是魅族x8,android 版本8.1.0
logcat有什么报错? 另外App需要配合Magisk模块使用
2021-9-5 22:14
0
雪    币: 116
活跃值: (1012)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
suuuuu 希望增加,在内存中搜索字符串的功能,这个是逆向获取关键信息的重要功能,如果能直接对字符串进行定位,找到实体类,那就很棒了!
GG修改器或许可以
2023-12-4 18:02
0
游客
登录 | 注册 方可回帖
返回
//