frida-gadget注入微信

frida-gadget注入微信

使用frida-server调试微信后被封号,说是使用非法客户端或外挂,猜测微信hook了ptrace,能够知道被调试了。如果使用frida-gadget注入,应该不容易被检测到。

有以下几种方式:

  1. 重打包,修改dex文件,注入加载frida-gadget.so的代码。
  2. 使用其他工具加载so,比如Xposed。
  3. 修改微信自身的so文件。

这里选择第三种方法,重打包太麻烦,使用Xposed的话,特征太明显,太容易被检测。其他注入攻击还是会利用ptrace,也有可能封号。

最开始修改的libSqliteLint-lib.so,远程调试没问题,但是无法直接加载执行js文件,一直卡到“微信停止响应”。后来换成libaudio_common.so就正常了。猜测libSqliteLint-lib.so加载的时机太早,Java环境还没初始化成功?
修改so文件使用了lief,代码:

1
2
3
4
5
import lief

libnative = lief.parse('lib/armeabi-v7a/libaudio_common.so')
libnative.add_library("libmiui_sec.so")
libnative.write("/tmp/libaudio_common.so")

libmiui_sec.so实际上就是frida-gadget.so,只是换了个不容易被检测到的名字。

远程调试配置文件:

1
2
3
4
5
6
7
8
{
"interaction": {
"type": "listen",
"address": "0.0.0.0",
"port": 27555,
"on_load": "resume"
}
}

启动时自动执行JS:

1
2
3
4
5
6
{
"interaction": {
"type": "script",
"path": "/data/local/tmp/wechat.js"
}
}

最终实现了frida-gadget版本的防撤回、抢红包、转账自动确认的微信辅助,用小号测试段时间,不封号再上大号。