Frida读取Windows进程内存遇ProcessNotRespondingError求助
解决Frida附加Windows进程时的ProcessNotRespondingError问题
问题描述
我需要读取PID为10308、名为hello.exe的进程内存,使用Python 3.10结合Frida实现的代码如下:
import frida def read_process_memory(process_name): session = frida.attach(process_name) # 错误发生在此处 memory_map = session.enumerate_ranges("r--") memory = b"" for memory_range in memory_map: memory_chunk = session.read_bytes(memory_range.base_address, memory_range.size) memory += memory_chunk session.detach() return memory memory = read_process_memory("hello.exe") print(memory)
执行时在session = frida.attach(process_name)语句抛出错误:
frida.ProcessNotRespondingError: process with pid 10308 either refused to load frida-agent, or terminated during injection
测试进程是通过Windows 11文件资源管理器启动的C++可执行文件,源码如下:
#include <iostream> #include <chrono> #include <thread> #include <string> int main() { std::string myString = "SECRET"; std::cout << "Starting..." << std::endl; std::this_thread::sleep_for(std::chrono::seconds(60)); std::cout << "END" << std::endl; return 0; }
解决方案
以管理员身份运行脚本
Windows环境下,Frida注入进程需要足够权限。右键点击Python终端或IDE,选择「以管理员身份运行」后再执行代码。使用PID而非进程名附加
同名进程可能导致附加目标错误,直接指定PID更精准。修改代码如下:import frida def read_process_memory(pid): session = frida.attach(pid) memory_map = session.enumerate_ranges("r--") memory = b"" for memory_range in memory_map: memory_chunk = session.read_bytes(memory_range.base_address, memory_range.size) memory += memory_chunk session.detach() return memory memory = read_process_memory(10308) print(memory)确保Frida与进程架构匹配
检查hello.exe是32位还是64位,安装对应架构的Frida包:- 64位进程:
pip install frida-tools --platform win_amd64 - 32位进程:
pip install frida-tools --platform win32
同时确认Frida服务端(frida-server)架构与进程一致,本地进程一般自动适配,但手动验证可避免问题。
- 64位进程:
临时关闭杀毒软件/Windows Defender
部分安全软件会拦截Frida的注入行为,导致agent无法加载。临时关闭实时保护后再尝试附加。更新Frida到最新版本
旧版本Frida可能存在兼容性问题,执行以下命令更新:pip install --upgrade frida frida-tools
内容的提问来源于stack exchange,提问作者JohnPeters
相关产品推荐
相关产品推荐

