Frida-python on windows问题排查
昨天脚本跑了二十遍以后就会内存读取错误而崩溃 今天继续研究了一下这个问题
首先精简脚本发现 - import frida
- for i in range(20):
- frida.attach('notepad.exe')
复制代码
也会报错,说明跟注入的js脚本无关,是frida-python的问题 找了一下发现frida-python竟然没有文档,开发者似乎试图让使用者自行阅读源码来理解使用方法……真任性OTZ 感觉问题出在server上,对attach的session数量有限制而未及时释放和重用内存导致溢出 通过ipython发现frida模块下有shutdown方法,运行以后就报Device Manager closed异常 观察进程管理发现attach以后会自己起一个windows server:
而shutdown和kill这个server都会使得无法再attach 那么不能解决这个server内部的问题就只能每10-20次尝试以后就重启一个server来attach了 找了一下也没发现启动server的方法,似乎是import时初始化来的
于是最后只想到一个曲线救国的方法:多进程调用脚本 py(a)->py(b)->frida py(a)负责主流程控制,发送和接收数据,开启多个进程/逐次启动py(b) py(b)来import frida,并进行注入等工作
这样每个py(b)都会起一个server,从而避免在一个server中进行大量的尝试 虽然这样毫无疑问会显著降低效率,但是无法解决server溢出的问题也没有办法了…… 这个起server的指令是在闭源的pyd中进行,没有办法改参数啥的怕是没救了 C. 明日计划 python web
|