You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pymem注入进程后Python解释器如何访问并操作目标进程?

注入目标进程的Python解释器权限说明与操作方案

注入到目标进程的Python解释器运行在目标进程的专属地址空间内,天然继承目标进程的全部访问权限,不需要额外做感知、获取权限的操作。你当前测试中感觉到两者独立,是因为你编写的shellcode仅执行了文件写入操作,没有调用和目标进程(记事本)相关的接口,没有操作进程内存或窗口资源。

实现向记事本写入文本的方案

你可以通过注入的Python解释器调用Win32 API操作记事本窗口的编辑控件,即可完成内容写入,替换你现有代码中的shellcode部分即可,修改后完整可运行的示例如下:

from pymem import Pymem
import os
import subprocess
import time

# 启动记事本进程
notepad_process = subprocess.Popen(['notepad.exe'])
# 等待记事本启动完成,避免后续找窗口失败
time.sleep(1)

# 附加pymem到记事本进程
pm = Pymem('notepad.exe')
# 注入Python解释器
pm.inject_python_interpreter()

# 写入记事本的payload
shellcode = """
import ctypes
from ctypes import wintypes

user32 = ctypes.WinDLL('user32', use_last_error=True)
user32.FindWindowW.argtypes = [wintypes.LPCWSTR, wintypes.LPCWSTR]
user32.FindWindowExW.argtypes = [wintypes.HWND, wintypes.HWND, wintypes.LPCWSTR, wintypes.LPCWSTR]
user32.SendMessageW.argtypes = [wintypes.HWND, wintypes.UINT, wintypes.WPARAM, wintypes.LPCWSTR]

WM_SETTEXT = 0x000C
# 查找记事本主窗口
hwnd_notepad = user32.FindWindowW("Notepad", None)
# 查找记事本的编辑框子控件
hwnd_edit = user32.FindWindowExW(hwnd_notepad, None, "Edit", None)
# 向编辑框发送文本内容
if hwnd_edit:
    user32.SendMessageW(hwnd_edit, WM_SETTEXT, 0, "pymem注入成功,这是注入的Python解释器写入的内容")
"""

# 执行payload
pm.inject_python_shellcode(shellcode)

# 注释掉kill代码即可看到记事本里的写入效果
# notepad_process.kill()

注意事项

  • 如果你需要操作目标进程的内存数据,直接在注入的shellcode中用ctypes读写当前进程内存地址即可,不需要额外调用远程读写接口,因为注入的Python本身就运行在目标进程的地址空间中
  • 如果存在多个记事本进程,你可以通过进程ID过滤窗口,避免找错目标窗口
  • 注入操作需要当前运行脚本的账号具备本地管理员权限,否则会出现注入失败的情况

内容的提问来源于stack exchange,提问作者zooid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 04:15:01