首页
社区
课程
招聘
[原创]FridaLocalManager 本地持久化群控管理工具
发表于: 2023-8-24 11:06 9474

[原创]FridaLocalManager 本地持久化群控管理工具

2023-8-24 11:06
9474

图片描述

FridaLocalManager是我开发的一个本地持久化、可以动态扩展的框架。在实际的开发过程,经常会遇到frida-server中断,RPC调用时间久了APP又出现闪退、卡顿等异常问题,需要人为的手动干预,非常影响业务的发展。如果半夜出现了问题,即使加入了监控报警,我们也不能起来跑到公司去弄吧。当然frida持久化的工具很多,寒冰大佬的FridaManager也是一个很好的解决方案。

1.支持frida-server开机、宕机自动启动
2.支持APP中断、卡顿、退出自动重启
3.支持手机群控管理,管理100+台手机轻轻松松

将monitor_frida_server.sh移动到手机/data/local/tmp/目录下。代码比较简洁,短小而精悍,里面的frida 启动方式、端口、命名都可以自由发挥,考虑到每个人的习惯都不一样,就不制作成magisk的模块,一旦定型后面改起来也是很麻烦的,完全的可扩展,自由发挥。

将magisk.sh移动到移动到 /data/adb/post-fs-data.d 重启手机后,可完成对frida server 监控 可以用 netstat -nlp | grep 6666 来检查启动状态。

device_list 在代码中我是固定的,这里看每个人的需求,自由扩展。比如我又100台设备,可以写在redis里面,从redis里面获取,也可以单独建立一个文件读取。剩下的都是不影响的,主打的就是可扩展。

图片描述

好了,就到这里吧,想要体验的可以gitub中下载,后面会开发出有界面版本,直接在页面上点点就可以操作,还可以监控到每台设备当前的运行状态、请求次数等
后续更新会放在github:
FridaLocalManager

#!/system/bin/sh
 
echo "frida-server 监控脚本"
 
while [ 1 -gt 0 ]; do
  port=$(netstat -nlt | grep 6666 | wc -l)
  if [ $port -ne 1 ]; then
    echo "frida-server 断开连接,正常在启动中...."
    $(cd /data/local/tmp && ./fs1280 -l 0.0.0.0:6666)
  else
    echo "frida-server 正在运行...."
  fi
  sleep 1s
done
#!/system/bin/sh
 
echo "frida-server 监控脚本"
 
while [ 1 -gt 0 ]; do
  port=$(netstat -nlt | grep 6666 | wc -l)
  if [ $port -ne 1 ]; then
    echo "frida-server 断开连接,正常在启动中...."
    $(cd /data/local/tmp && ./fs1280 -l 0.0.0.0:6666)
  else
    echo "frida-server 正在运行...."
  fi
  sleep 1s
done
while True:
    print("开始执行...........................................................")
    # 设备列表 此处可以设置成动态获取,无线扩展
    device_list = ["0000", "192.168.137.63:6666;5000"]
    i = 1
    thread_pool = []
    for item in device_list:
        # 创建新线程
        thread_i = myThread("Thread-" + str(i), i, item)
 
        thread_pool.append(thread_i)
        i = i + 1
    # 开启新线程
    try:
        print("thread_pool 长度:", len(thread_pool))
        for th in thread_pool:
            th.start()
            tid = 1
            print("当前线程ID", tid, th)
        for th in thread_pool:
            th.join()
        print("退出主线程")
    except Exception as e:
        logging.exception(e)
        print('请求异常')
        break
    print("结束执行.....................................................")
while True:
    print("开始执行...........................................................")
    # 设备列表 此处可以设置成动态获取,无线扩展
    device_list = ["0000", "192.168.137.63:6666;5000"]
    i = 1
    thread_pool = []
    for item in device_list:
        # 创建新线程
        thread_i = myThread("Thread-" + str(i), i, item)
 
        thread_pool.append(thread_i)
        i = i + 1
    # 开启新线程
    try:
        print("thread_pool 长度:", len(thread_pool))
        for th in thread_pool:
            th.start()
            tid = 1
            print("当前线程ID", tid, th)
        for th in thread_pool:
            th.join()
        print("退出主线程")

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2023-8-24 11:08 被西贝巴巴编辑 ,原因: 修改图片尺寸
收藏
免费 5
支持
分享
最新回复 (6)
雪    币: 893
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
打卡
2023-8-24 11:36
0
雪    币: 3004
活跃值: (30866)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢分享
2023-8-24 14:14
1
雪    币: 1229
活跃值: (1760)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
yyds 6666
2023-8-24 17:43
0
雪    币: 230
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
大佬,看到你都做frida的群控工具了,想请教你一个问题。

请问有没有遇到接入手机多了以后,Frida就识别不到手机的问题,这个数量应该是10台以上。
比如我接入9台手机的时候,使用frida-ls-devices时,能正常获取到所有手机。

Id        Type    Name             OS
--------  ------  ---------------  ------------------
local     local   XTZJ-20211020RE  Windows 10.0.19041
ccebc4b0  usb     MI 6X            Android 9
20b758f6  usb     MI 6X            Android 9
437924e2  usb     MI 6X            Android 9
1e6b3cfe  usb     MI 6X            Android 9
557c4c0   usb     MI 6X            Android 9
b792138   usb     MI 6X            Android 9
1e86001f  usb     MI 6X            Android 9
19b3c646  usb     MI 6X            Android 9
2de6ead7  usb     MI 8 Lite        Android 9
barebone  remote  GDB Remote Stub
socket    remote  Local Socket

但再多接一台时,数据就变成
Id        Type    Name             OS
--------  ------  ---------------  ------------------
local     local   XTZJ-20211020RE  Windows 10.0.19041
barebone  remote  GDB Remote Stub
socket    remote  Local Socket

但是使用adb devices时是能够正常显示的。
2023-11-6 11:17
0
雪    币: 230
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
目前我在win10和centos 7上测都是一样,python3.11,frida 16.1.3
2023-11-6 11:19
0
雪    币: 6
活跃值: (100)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
2024-10-19 21:17
0
游客
登录 | 注册 方可回帖
返回
//