AGENT SKILL

game-frida-trace

Use when asked to trace, intercept, hook, or monitor function calls in a live process using Frida dynamic instrumentation. Applies to game processes, anti-cheat DLLs, or any running Windows/Android process.

License 许可
MIT
最近更新
2026-11-02
Stars
★ 0
Forks
0

01 前言 Front Matter

name
game-frida-trace
description
Use when asked to trace, intercept, hook, or monitor function calls in a live process using Frida dynamic instrumentation. Applies to game processes, anti-cheat DLLs, or any running Windows/Android process.

03 SKILL.md 正文

Frida Dynamic Tracing

Overview

Live process instrumentation via Frida MCP. The pipeline is always: enumerate → attach → hook → collect.

Always enumerate devices first. Sessions fail silently if device_id is wrong.

Quick Reference

Step MCP tool Key params
List devices enumerate_devices —
Find process get_process_by_name name
List all processes list_processes device_id
Attach create_interactive_session pid, device_id
Simple hook create_simple_hook session_id, module, function
Custom script execute_in_session session_id, script
Spawn + attach spawn_process program, device_id
Kill kill_process pid, device_id

Workflow

1. Find the Target

enumerate_devices()                         # → pick device_id (usually "local")
get_process_by_name(name="game.exe")        # → pid
# or
list_processes(device_id="local")           # → browse all

2. Attach

create_interactive_session(pid=1234, device_id="local")
# → returns session_id — store this

3a. Simple Hook (named export — fastest path)

create_simple_hook(
    session_id="...",
    module="kernel32.dll",
    function="CreateFileW"
)
# Logs every call with args + return value automatically

3b. Custom Script (offset from RE tools)

// execute_in_session(session_id, script=<below>)
// Use RVA from Binary Ninja / Ghidra when no export name exists
const base = Process.getModuleByName("game.exe").base;
const target = base.add(0x1A2B0);   // RVA from Binary Ninja analysis

Interceptor.attach(target, {
    onEnter(args) {
        console.log("[CALL] arg0:", args[0].readUtf8String());
        console.log("[CALL] arg1:", args[1]);
    },
    onLeave(retval) {
        console.log("[RET]", retval.toInt32());
    }
});

Common Scenarios

Trace all exports of an anti-cheat DLL:

const mod = Process.getModuleByName("EasyAntiCheat.dll");
mod.enumerateExports().forEach(e => {
    try {
        Interceptor.attach(e.address, {
            onEnter() { console.log("[EAC]", e.name); }
        });
    } catch(_) {}   // some exports may be non-hookable
});

Enumerate loaded modules in target:

Process.enumerateModules().forEach(m =>
    console.log(m.name.padEnd(40), m.base, m.size.toString(16))
);

Read memory at known offset:

const base = Process.getModuleByName("game.exe").base;
const ptr  = base.add(0xDEAD0);
console.log("string:", ptr.readUtf8String());
console.log("int32: ", ptr.readS32());

Hook Windows API to detect anti-debug calls:

["IsDebuggerPresent","CheckRemoteDebuggerPresent","NtQueryInformationProcess"]
.forEach(api => {
    const addr = Module.getExportByName(null, api);
    if (addr) Interceptor.attach(addr, {
        onEnter() { console.log("[ANTI-DEBUG]", api); },
        onLeave(ret) { ret.replace(0); }   // spoof return — remove if just tracing
    });
});

Common Mistakes

Mistake Fix
Wrong device_id Always call enumerate_devices first
Script errors kill session Test incrementally in execute_in_session
Hooking stripped functions by name Use RVA from Binary Ninja instead
Attaching before process loads target DLL Use spawn_process then attach, or wait
Hooking inlined functions Inlined code has no hookable address — find the caller instead

04 同仓库更多 Skills

Prekzursil
Prekzursil/agent-skills-toolchain

clarify-requirements

Resolve genuine pre-execution ambiguity by scanning repo context, generating 1-6 grounded options, and asking 1-3 focused questions via AskUserQuestion. NOT for mid-task use (injection risk); NOT when the goal is already unambiguous; use to disambiguate vague prompts before any file edits.

★ 0
Prekzursil
Prekzursil/agent-skills-toolchain

openmm-md

Run FREE, open-source, Windows-native GPU molecular dynamics via the openmm-md MCP (OpenMM + CUDA on the local NVIDIA GPU). Use for protein / protein-ligand MD when you want a free stack or are on Windows without a Schrodinger license. Covers the full workflow (prepare, solvate, minimize, equilibrate, production, analyze, mmgbsa) AND an honest decision guide vs Schrodinger Desmond, including how to run Desmond legitimately on Linux or a cloud GPU with a real license. This is a deliberately LESSER free alternative and does NOT replace the schrodinger MCP tools. Do NOT use it to pick a free tool when a validated FEP+, WaterMap, IFD-MD, or Prime MM-GBSA result is actually required.

Skill与智能体开发
★ 0
Prekzursil
Prekzursil/agent-skills-toolchain

visual-review

Take screenshots of web pages and UI using Playwright for visual review and iteration

演示文稿测试与质量
★ 0
Prekzursil
Prekzursil/agent-skills-toolchain

status

Diagnostic status report — shows metaswarm installation state, project setup, and potential issues

★ 0
Prekzursil
Prekzursil/agent-skills-toolchain

start

Use when starting work on any task, when the user mentions metaswarm, or when the user wants to begin tracked development work

Skill与智能体开发
★ 0
Prekzursil
Prekzursil/agent-skills-toolchain

setup

Interactive project setup — detects your project, configures metaswarm, writes project-local files

★ 0