docs: 补充mem_scanner和web_setup SOP;优化代码风格和上下文管理
This commit is contained in:
@@ -30,4 +30,21 @@ python ../memory/mem_scanner.py <PID> "pattern" --llm
|
||||
|
||||
## 3. 注意事项
|
||||
- **权限**: 并非强制要求管理员权限,但需具备对目标进程的 `PROCESS_QUERY_INFORMATION` 和 `PROCESS_VM_READ` 权限。
|
||||
- **效率**: 搜索大块内存时,尽量提供更唯一的特征码以减少误报。
|
||||
- **效率**: 搜索大块内存时,尽量提供更唯一的特征码以减少误报。
|
||||
|
||||
## 4. 典型场景:CE式差集扫描定位动态字段(已验证)
|
||||
用于定位微信等自绘UI中「当前会话标题」等随操作变化的内存字段。
|
||||
|
||||
**方法(类似Cheat Engine找游戏数值):**
|
||||
1. 找到主窗口PID(Weixin.exe有多个进程,用win32gui.GetWindowThreadProcessId取有窗口的那个)
|
||||
2. 切到会话A → `scan_memory(pid, "人名A", mode="string")` → 得地址集S_A
|
||||
3. 切到会话B → `scan_memory(pid, "人名B", mode="string")` → 得地址集S_B
|
||||
4. 差集:S_A独有地址(A时有、B时无)= 候选地址
|
||||
5. 切回A → 用ReadProcessMemory逐个读候选地址,确认内容变回"人名A"的即为目标
|
||||
6. 再切第3、4个人交叉验证
|
||||
|
||||
**坑点:**
|
||||
- 搜索切换会污染结果(搜索框缓存也含人名),最终验证应用列表点击而非搜索
|
||||
- 地址是绝对虚拟地址,进程重启后失效,需重新校准(约10秒)
|
||||
- ReadProcessMemory读UTF-8,用`raw.split(b'\x00')[0].decode('utf-8')`提取干净文本
|
||||
- 微信主进程名为Weixin.exe(非WeChat.exe)
|
||||
@@ -19,6 +19,37 @@ browser = "chrome" if shutil.which("chrome") else "msedge" # Edge内置必存
|
||||
- Edge: `start "" "https://microsoftedge.microsoft.com/addons/detail/tampermonkey/iikmkjmpaadaobahmlepeloendndfphd"`
|
||||
2. 提示用户点击"安装"并确认。
|
||||
|
||||
## 阶段 1.5:开启「允许运行用户脚本」
|
||||
**前置**:TM 已安装,但 Chrome 可能默认未开启此权限。
|
||||
需打开 TM 的扩展详情页,手动开启相关开关。
|
||||
|
||||
### 自动打开详情页
|
||||
1. 从文件系统读取 TM 扩展 ID:
|
||||
```python
|
||||
import os, json, glob
|
||||
ext_dir = os.path.expandvars(r'%LOCALAPPDATA%\Google\Chrome\User Data\Default\Extensions')
|
||||
for eid in os.listdir(ext_dir):
|
||||
for ver in glob.glob(os.path.join(ext_dir, eid, '*')):
|
||||
mf = os.path.join(ver, 'manifest.json')
|
||||
if os.path.isfile(mf):
|
||||
with open(mf, encoding='utf-8') as f:
|
||||
m = json.load(f)
|
||||
if 'tampermonkey' in m.get('name','').lower() or 'tampermonkey' in m.get('description','').lower():
|
||||
tm_id = eid; break
|
||||
```
|
||||
2. 导航到 `chrome://extensions/?id={tm_id}`:
|
||||
- ⚠️ `chrome://` 协议无法通过命令行参数或 JS(`window.open`) 打开
|
||||
- ✅ 用 ljqCtrl(需先打开一个 Chrome 窗口并置顶)或剪贴板+地址栏方案:
|
||||
```python
|
||||
# 剪贴板方案:写入URL → Ctrl+L → Ctrl+V → Enter
|
||||
import win32clipboard
|
||||
win32clipboard.OpenClipboard(); win32clipboard.EmptyClipboard()
|
||||
win32clipboard.SetClipboardText(f'chrome://extensions/?id={tm_id}')
|
||||
win32clipboard.CloseClipboard()
|
||||
# 然后用 ljqCtrl 或 SendKeys 发送 Ctrl+L, Ctrl+V, Enter
|
||||
```
|
||||
3. 提示用户在详情页中开启「允许运行用户脚本」开关。
|
||||
|
||||
## 阶段二:安装 ljq_web_driver.user.js
|
||||
**脚本路径**: `../assets/ljq_web_driver.user.js`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user