
BinSentry 二进制哨兵,由 LYSHARK 独立自研,是一款运行于 Windows 平台的二进制动态调试引擎。该调试引擎从零手写开发,C++ 代码 2 万余行,实现 200 + 调试方法;原生采用 CMD 命令行 HTTP 服务器架构,专为 AI Agent 打造。配合配套 AI 智能体,能够对二进制文件、木马等恶意样本进行深层次分析,是二进制样本研究的实用工具。
哨兵可以部署到任意的虚拟机沙盒之中,并可以搭载目前流行的jev等大模型产品,AI驱动速度有质的提升,是Windows平台下AI动态调试的优质项目。
哨兵运行后会在后台,并默认侦听6891端口,且可以设置开机自启动。


接口 | params(JSON) | 期望 | |
|---|---|---|---|
1 |
|
| ok=true, 返回系统信息 |
2 |
|
| ok=true, 进程列表 |
3 |
|
| ok=true, 错误码表 |
4 |
|
| ok=true, 异常码表 |
5 |
|
| ok=true, 窗口枚举完成 |
6 |
|
| ok=true, 返回是否提权 |
7 |
|
| ok=true, 日志已清空 |
8 |
|
| ok=true, 日志已保存 |
9 |
|
| ok=true, 日志查询 |
10 |
|
| ok=true |
11 |
|
| ok=true, JIT配置 |
12 |
|
| ok=true |
13 |
|
| ok=true |
14 |
|
| ok=true, 下次启动生效 |
15 |
|
| ok=true, 位掩码 |
16 |
|
| ok=true, 异常断点已设 |
17 |
|
| ok=true, 已删除 |
18 |
|
| ok=true, 列表 |
19 |
|
| ok=true |
20 |
|
| ok=true |
21 |
|
| ok=true |
22 |
|
| ok=true |
23 |
|
| ok=true |
24 |
|
| ok=true, 数量 |
25 |
|
| ok=true |
26 |
|
| ok=true |
27 |
|
| ok=true |
28 |
|
| ok=true |
29 |
|
| ok=true |
30 |
|
| ok=true |
31 |
|
| ok=true |
32 |
|
| ok=true, 软断点数量 |
33 |
|
| ok=true, 硬断点数量 |
34 |
|
| ok=true, 内存断点数量 |
35 |
|
| ok=true, API断点数量 |
36 |
|
| ok=true |
37 |
|
| ok=true |
接口 | params(JSON) | 期望 | |
|---|---|---|---|
1 |
|
| ok=true, 返回pid/tid |
2 |
|
| ok=true (params传命令字符串) |
3 |
|
| ok=true, 设OEP断点运行到用户代码 |
4 |
|
| EIP==0x009015BB |
接口 | params(JSON) | 期望 | |
|---|---|---|---|
1 |
|
| ok=true |
2 |
|
| ok=true, 取第一个threadId作TID |
3 |
|
| ok=true |
4 |
|
| ok=true |
5 |
|
| ok=true |
6 |
|
| ok=true |
7 |
|
| ok=true, 再设回0 |
8 |
|
| ok=true |
9 |
|
| ok=true, 改后还原protect=0x20 |
10 |
|
| ok=true |
11 |
|
| ok=true |
12 |
|
| ok=true |
13 |
|
| ok=true, ImageBase=0x400000 OEP=0x15BB |
14 |
|
| ok=true |
15 |
|
| ok=true (无TLS返回error字段) |
16 |
|
| ok=true |
17 |
|
| ok=true |
18 |
|
| ok=true |
19 |
|
| ok=true |
20 |
|
| ok=true |
21 |
|
| ok=true |
22 |
|
| ok=true |
23 |
|
| ok=true |
24 |
|
| ok=true |
25 |
|
| ok=true |
26 |
|
| ok=true |
27 |
|
| ok=true |
28 |
|
| ok=true |
29 |
|
| ok=true |
30 |
|
| ok=true |
31 |
|
| ok=true |
32 |
|
| ok=true |
33 |
|
| ok=true |
34 |
|
| ok=true |
35 |
|
| ok=true, 再写回E8 |
36 |
|
| ok=true, JSON可解析 |
37 |
|
| ok=true |
38 |
|
| ok=true |
39 |
|
| ok=true |
40 |
|
| ok=true |
41 |
|
| ok=true |
42 |
|
| ok=true |
43 |
|
| ok=true |
44 |
|
| ok=true |
45 |
|
| ok=true |
46 |
|
| ok=true |
47 |
|
| ok=true |
48 |
|
| ok=true |
49 |
|
| ok=true |
50 |
|
| ok=true |
51 |
|
| ok=true |
52 |
|
| ok=true |
53 |
|
| ok=true |
54 |
|
| ok=true |
55 |
|
| ok=true |
56 |
|
| ok=true |
57 |
|
| ok=true, 记下address作MEM |
58 |
|
| ok=true (在分配区写, 勿写代码区) |
59 |
|
| ok=true |
60 |
|
| ok=true |
61 |
|
| ok=true |
62 |
|
| ok=true |
63 |
|
| ok=true |
64 |
|
| ok=true |
65 |
|
| ok=true |
66 |
|
| ok=true |
67 |
|
| ok=true |
68 |
|
| ok=true |
69 |
|
| ok=true |
70 |
|
| ok=true |
71 |
|
| ok=true |
72 |
|
| ok=true |
73 |
|
| ok=true |
74 |
|
| ok=true |
75 |
|
| ok=true |
76 |
|
| ok=true |
77 |
|
| ok=true |
78 |
|
| ok=true |
79 |
|
| ok=true |
80 |
|
| ok=true |
81 |
|
| ok=true |
接口 | params(JSON) | 期望 | |
|---|---|---|---|
1 |
|
| ok=true |
2 |
|
| ok=true |
3 |
|
| ok=true |
4 |
|
| ok=true |
5 |
|
| ok=true |
6 |
|
| ok=true |
7 |
|
| ok=true |
8 |
|
| ok=true |
9 |
|
| ok=true |
10 |
|
| ok=true |
11 |
|
| ok=true |
12 |
|
| ok=true |
13 |
|
| ok=true |
14 |
|
| ok=true |
15 |
|
| ok=true (勿与软断点同址) |
16 |
|
| ok=true |
17 |
|
| ok=true |
18 |
|
| ok=true |
19 |
|
| ok=true |
20 |
|
| ok=true |
21 |
|
| ok=true |
22 |
|
| ok=true |
23 |
|
| ok=true |
24 |
|
| ok=true |
25 |
|
| ok=true, 清场后进P4 |
接口 | params(JSON) | 期望 | |
|---|---|---|---|
1 |
|
| ok=true, 发送后等停止(Status.stopped) |
2 |
|
| ok=true, 等停止 |
3 |
|
| ok=true, 等停止 |
4 |
|
| ok=true, 等停止 |
5 |
|
| ok=true, 等停止 |
6 |
|
| ok=true, 等停止(注意是EStepInto非EStepIn) |
7 |
|
| ok=true, 等停止 |
8 |
|
| ok=true, 保持停止 |
9 |
|
| ok=true, EIP回退一条 |
10 |
|
| ok=true (params传字符串子命令) |
11 |
|
| ok=true (用户代码处返回"无需运行") |
12 |
|
| ok=true |
13 |
|
| ok=true, 等停止 |
14 |
|
| ok=true, 等停止 |
15 |
|
| ok=true, 等停止 |
16 |
|
| ok=true, 等停止 |
17 |
|
| ok=true, 等停止 |
18 |
|
| ok=true, 等停止 |
19 |
|
| ok=true, 临时断点命中移除 |
接口 | params(JSON) | 期望 | |
|---|---|---|---|
1 |
|
| ok=true |
2 |
|
| ok=true, 等停止(OEP断点命中) |
3 |
|
| ok=true |
4 |
|
| ok=true |
5 |
|
| ok=true (用非活动线程) |
6 |
|
| ok=true |
7 |
|
| ok=true |
8 |
|
| ok=true, 目标自由运行 |
9 |
|
| ok=true, 等停止 |
10 |
|
| ok=true |
11 |
|
| ok=true, 1.5s后 |
12 |
|
| ok=true, 等停止 |
13 |
|
| ok=true, 1.5s后 |
14 |
|
| ok=true, 等停止 |
15 |
|
| ok=true, 等停止 |
16 |
|
| ok=true (最后测, 会停系统代码) |
接口 | params(JSON) | 期望 | |
|---|---|---|---|
1 |
|
| ok=true |
2 |
|
| ok=true |
3 |
|
| ok=true |
4 |
|
| ok=true |
5 |
|
| ok=true, 等2.5s |
6 |
|
| ok=true, 会话终止 |
7 |
|
| ok=true, 重启会话等2.5s |
8 |
|
| ok=true, 分离会话 |
{
"status": "success",
"result": {
"sessionActive": false,
"mode": "None",
"pid": 0,
"tid": 0,
"stopped": false,
"firstRun": true,
"softBreakpoints": 0,
"memoryBreakpoints": 0,
"hardwareBreakpoints": 0,
"apiBreakpoints": 0,
"labels": 0,
"comments": 0,
"logCount": 0,
"watches": 0,
"bookmarks": 0,
"variables": 0,
"traceActive": false,
"traceIntoActive": false,
"traceResult": "",
"engine": "TitanEngine",
"interfaces": [
{
"interface": "Debug",
"usage": "启动调试会话: params.path = 进程路径"
},
{
"interface": "Attach",
"usage": "附加进程: params.pid = 进程ID"
},
{
"interface": "Detach",
"usage": "分离调试会话"
},
{
"interface": "Stop",
"usage": "终止被调试进程"
},
{
"interface": "Status",
"usage": "查询调试器状态(含接口列表)"
},
{
"interface": "WaitStop",
"usage": "等待调试器停止: params.timeout = 超时秒数(默认60)"
},
{
"interface": "Run",
"usage": "继续运行程序"
},
{
"interface": "StepIn",
"usage": "单步步入(TitanEngine)"
},
{
"interface": "StepOver",
"usage": "单步步过(TitanEngine)"
},
{
"interface": "StepOut",
"usage": "单步步出(TitanEngine)"
},
{
"interface": "SetBreakPoint",
"usage": "设置软件断点: address, thread(可选), temp(可选)"
},
{
"interface": "DelBreakPoint",
"usage": "删除软件断点: address"
},
{
"interface": "ShowBreakPoint",
"usage": "显示软件断点列表"
},
{
"interface": "SetMemBreakPoint",
"usage": "设置内存断点: address, flag(r/w/e)"
},
{
"interface": "DelMemBreakPoint",
"usage": "删除内存断点: address"
},
{
"interface": "ShowMemBreakPoint",
"usage": "显示内存断点列表"
},
{
"interface": "SetHbreakPoint",
"usage": "设置硬件断点: address, len(1/2/4), flag(r/w/e)"
},
{
"interface": "DelHbreakPoint",
"usage": "删除硬件断点: dr(可选, 默认全部)"
},
{
"interface": "ShowHbreakPoint",
"usage": "显示硬件断点列表"
},
{
"interface": "SetApiBreakPoint",
"usage": "设置API断点: dll, api(可选--end为函数返回处)"
},
{
"interface": "DelApiBreakPoint",
"usage": "删除API断点: dll, api(可选--end)"
},
{
"interface": "ShowApiBreakPoint",
"usage": "显示API断点列表"
},
{
"interface": "SearchMemory",
"usage": "搜索内存: pattern(hex, ?=通配), start(可选), size(可选)"
},
{
"interface": "PatchMemory",
"usage": "内存补丁: address, hex(字节串), nop(可选)"
},
{
"interface": "DumpProcess",
"usage": "转储进程(脱壳): path, entry(可选)"
},
{
"interface": "HideDebugger",
"usage": "隐藏调试器(CheckRemoteDebuggerPresent等)"
},
{
"interface": "ShowDebugger",
"usage": "恢复调试器可见"
},
{
"interface": "ThreadPause",
"usage": "暂停线程: tid"
},
{
"interface": "ThreadResume",
"usage": "恢复线程: tid"
},
{
"interface": "PauseAllThreads",
"usage": "暂停所有线程"
},
{
"interface": "ResumeAllThreads",
"usage": "恢复所有线程"
},
{
"interface": "PEInfo",
"usage": "PE文件信息: path"
},
{
"interface": "Register",
"usage": "显示寄存器"
},
{
"interface": "SetRegister",
"usage": "修改寄存器: reg(eax/ebx/...), value"
},
{
"interface": "Stack",
"usage": "显示栈: count(可选)"
},
{
"interface": "Memory",
"usage": "显示内存: address, size(可选)"
},
{
"interface": "SetMemory",
"usage": "修改内存: address, value"
},
{
"interface": "Dissasembler",
"usage": "反汇编: address(可选, 默认EIP), size(可选)"
},
{
"interface": "Modules",
"usage": "显示模块列表"
},
{
"interface": "Threads",
"usage": "显示线程列表"
},
{
"interface": "SetDebug",
"usage": "执行调试命令字符串: params = \"命令行\" 或 {command: \"命令行\"}"
},
{
"interface": "ProcessList",
"usage": "进程列表: filter(可选, 名称模糊过滤)"
},
{
"interface": "Regions",
"usage": "内存区域列表(VirtualQueryEx)"
},
{
"interface": "CallStack",
"usage": "调用栈: count(可选, 默认32, StackWalk64+符号)"
},
{
"interface": "SearchStrings",
"usage": "搜索进程字符串: max(可选, 默认100, ASCII+Unicode)"
},
{
"interface": "FillMemory",
"usage": "内存填充: address, size, value (TitanEngine FillEx)"
},
{
"interface": "SetCondBreakPoint",
"usage": "设置条件断点: address, cond(表达式, 如 \"eax == 0x5\"), thread(可选)"
},
{
"interface": "DelCondBreakPoint",
"usage": "清除断点条件: address (转为普通断点)"
},
{
"interface": "SetLabel",
"usage": "设置标签: address, name"
},
{
"interface": "DelLabel",
"usage": "删除标签: address"
},
{
"interface": "GetLabels",
"usage": "显示标签列表"
},
{
"interface": "SetComment",
"usage": "设置注释: address, text"
},
{
"interface": "DelComment",
"usage": "删除注释: address"
},
{
"interface": "GetComments",
"usage": "显示注释列表"
},
{
"interface": "Logs",
"usage": "查询调试日志: count(可选, 默认50)"
},
{
"interface": "Eval",
"usage": "表达式求值: expr(寄存器/0x十六进制/十进制/运算, 需停止态)"
},
{
"interface": "SetFlag",
"usage": "设置标志位: flag(CF PF AF ZF SF TF IF DF OF), value(0/1)"
},
{
"interface": "GetBranchTarget",
"usage": "分支指令目标地址: address (TitanEngine GetJumpDestinationEx)"
},
{
"interface": "GetArguments",
"usage": "参数标记列表"
},
{
"interface": "AddArgument",
"usage": "添加参数标记: start, end(可选), name(可选)"
},
{
"interface": "DelArgument",
"usage": "删除参数标记: start"
},
{
"interface": "RevertPatch",
"usage": "还原补丁: address(恢复原字节并移除记录)"
},
{
"interface": "DeletePatch",
"usage": "删除补丁记录: address(不写内存)"
},
{
"interface": "ReadMemoryValue",
"usage": "读数值: address, size(1/2/4/8)"
},
{
"interface": "GetThreadPriority",
"usage": "读线程优先级: tid"
},
{
"interface": "SystemInfo",
"usage": "系统信息(架构/页大小/CPU/内存/OS版本)"
},
{
"interface": "GetSectionInfo",
"usage": "指定节详情: module, name"
},
{
"interface": "GetBreakpointInfo",
"usage": "指定地址断点详情: address (软/内存/硬件)"
},
{
"interface": "InjectDll",
"usage": "远程注入DLL: path (LoadLibraryA+CreateRemoteThread)"
},
{
"interface": "HashMemory",
"usage": "内存哈希: address, size, algo(可选 md5/sha1/crc32)"
},
{
"interface": "AddrToModule",
"usage": "地址归属模块: address (模块名+基址+RVA)"
},
{
"interface": "RunTo",
"usage": "运行到目标地址: address (临时断点, 命中自动移除)"
},
{
"interface": "SetExceptionIgnore",
"usage": "设置异常忽略: code, ignore(0/1; 断点/单步不可忽略)"
},
{
"interface": "GetExceptionSettings",
"usage": "异常忽略列表"
},
{
"interface": "StartTraceRecord",
"usage": "开始执行足迹记录(每次停止记录EIP, 上限4096)"
},
{
"interface": "StopTraceRecord",
"usage": "停止执行足迹记录"
},
{
"interface": "GetTraceRecord",
"usage": "执行足迹列表"
},
{
"interface": "GetImportAddress",
"usage": "导入函数IAT地址: module, name (或 #序号)"
},
{
"interface": "GetSectionData",
"usage": "节内容转储: module, name (hex, 限4KB)"
},
{
"interface": "TraceOver",
"usage": "步过跟踪: count(步数,可选), condition(表达式,可选); call 自动跳过"
},
{
"interface": "LoadLibrary",
"usage": "目标进程远程加载DLL: path (返回 moduleHandle)"
},
{
"interface": "FreeLibrary",
"usage": "目标进程远程卸载DLL: handle (LoadLibrary 返回值)"
},
{
"interface": "gpa",
"usage": "远程API地址解析: dll, api 或 expr(模块:函数)"
},
{
"interface": "VaToFileOffset",
"usage": "虚拟地址->文件偏移: address"
},
{
"interface": "FileOffsetToVa",
"usage": "文件偏移->虚拟地址: offset, module(可选,默认主模块)"
},
{
"interface": "GetPageRights",
"usage": "页权限查询: address (返回 rights 如 RX/RWX)"
},
{
"interface": "SetPageRights",
"usage": "页权限修改: address, protect(hex或RWX串)"
},
{
"interface": "minidump",
"usage": "生成目标进程转储: path (.dmp, 含全内存)"
},
{
"interface": "xrefs",
"usage": "代码引用查找: address, max(可选)"
},
{
"interface": "mnemonicbrief",
"usage": "指令助记符简介: address(可选,默认EIP)"
},
{
"interface": "EnumWindows",
"usage": "枚举目标进程窗口: pid(可选,默认会话进程)"
},
{
"interface": "IsProcessElevated",
"usage": "进程提权检查: pid(可选,默认本进程)"
},
{
"interface": "ClearLog",
"usage": "清空调试日志缓冲区"
},
{
"interface": "SaveLog",
"usage": "保存日志到文件: path"
},
{
"interface": "EnumErrorCodes",
"usage": "常见Win32错误码表: code(可选过滤)"
},
{
"interface": "EnumExceptions",
"usage": "常见异常码表: code(可选过滤)"
},
{
"interface": "GetFunctionSize",
"usage": "函数边界: address (函数表优先, 反汇编扫描兜底)"
},
{
"interface": "BreakpointCommand",
"usage": "断点命令: address, command (命中时自动入队执行; 空清除)"
},
{
"interface": "JmpHistory",
"usage": "跳转历史(恢复运行前记录分支指令)"
},
{
"interface": "GetSymbolInfo",
"usage": "符号详情: address (dbghelp: 名称/模块/偏移/行号)"
},
{
"interface": "TCPConnections",
"usage": "目标进程 TCP 连接列表"
},
{
"interface": "StackPush",
"usage": "栈压入: value (ESP-4 写入)"
},
{
"interface": "StackPop",
"usage": "栈弹出(读栈顶+ESP+4)"
},
{
"interface": "StackPeek",
"usage": "栈窥视: offset (ESP+offset*4)"
},
{
"interface": "SetThreadName",
"usage": "线程命名: tid, name (SetThreadDescription)"
},
{
"interface": "Restart",
"usage": "重启目标进程(分离旧会话并重新创建)"
},
{
"interface": "SetJIT",
"usage": "设置系统JIT调试器: path (HKLM AeDebug, 需管理员)"
},
{
"interface": "GetJIT",
"usage": "查询当前JIT调试器"
},
{
"interface": "TraceLine",
"usage": "单步跟踪到目标地址: address, timeout(可选, 秒)"
},
{
"interface": "Handles",
"usage": "句柄列表: max(可选, NtQuerySystemInformation+对象名)"
},
{
"interface": "FindRef",
"usage": "查找引用: address(目标地址), max(可选, 反汇编扫描代码区)"
},
{
"interface": "SearchAllMemory",
"usage": "全内存搜索: pattern(hex, ?=通配), max(可选)"
},
{
"interface": "ExportList",
"usage": "模块导出表: module(模块名)"
},
{
"interface": "SetWatch",
"usage": "添加/更新监视: name, expr(表达式, 含 $变量)"
},
{
"interface": "DelWatch",
"usage": "删除监视: id 或 name"
},
{
"interface": "GetWatches",
"usage": "查询监视(实时求值, 需停止态)"
},
{
"interface": "SetVar",
"usage": "设置用户变量: name, value (表达式 $name 引用)"
},
{
"interface": "DelVar",
"usage": "删除用户变量: name"
},
{
"interface": "GetVars",
"usage": "查询用户变量列表"
},
{
"interface": "SetBookMark",
"usage": "添加书签: address"
},
{
"interface": "DelBookMark",
"usage": "删除书签: address"
},
{
"interface": "GetBookMarks",
"usage": "查询书签列表"
},
{
"interface": "Assemble",
"usage": "汇编指令为字节码(XEDParse): instr, cip(可选)"
},
{
"interface": "AssembleAt",
"usage": "汇编并写入目标进程: address, instr, fillnop(可选)"
},
{
"interface": "EnableBreakpoint",
"usage": "启用软断点: address"
},
{
"interface": "DisableBreakpoint",
"usage": "禁用软断点: address"
},
{
"interface": "SetThreadPriority",
"usage": "设置线程优先级: tid, priority(数值或名称)"
},
{
"interface": "Memcpy",
"usage": "进程内内存复制: src, dst, size"
},
{
"interface": "AllocateMemory",
"usage": "目标进程分配内存: size, protect(可选)"
},
{
"interface": "FreeMemory",
"usage": "释放目标进程内存: address"
},
{
"interface": "Symbol",
"usage": "符号解析(模块名+偏移 或 表达式): expr"
},
{
"interface": "MemoryInfo",
"usage": "地址内存信息(区域/保护/模块归属): address"
},
{
"interface": "IsValidPointer",
"usage": "地址是否可读: address"
},
{
"interface": "LastException",
"usage": "最近一次异常信息"
},
{
"interface": "Pause",
"usage": "暂停运行中的程序(DebugBreakProcess)"
},
{
"interface": "CreateRemoteThread",
"usage": "目标进程创建远程线程: start 或 hex(shellcode), param(可选)"
},
{
"interface": "TerminateThread",
"usage": "结束线程: tid"
},
{
"interface": "GetThreadLastError",
"usage": "读取线程 TEB.LastErrorValue: tid"
},
{
"interface": "WriteMemory",
"usage": "按 hex 字节串写内存: address, hex"
},
{
"interface": "GetString",
"usage": "读取内存字符串: address, max(可选), type(ascii/unicode)"
},
{
"interface": "GetOpcodeSize",
"usage": "指令长度: address (TitanEngine LengthDisassembleEx)"
},
{
"interface": "Functions",
"usage": "函数标记列表"
},
{
"interface": "AddFunction",
"usage": "添加函数标记: start, end(可选), name(可选)"
},
{
"interface": "DelFunction",
"usage": "删除函数标记: start"
},
{
"interface": "ProcessInfo",
"usage": "进程详细信息: pid(可选, 默认会话进程)"
},
{
"interface": "GetExportAddress",
"usage": "模块导出函数地址: module, name 或 ordinal"
},
{
"interface": "Help",
"usage": "显示帮助"
}
]
},
"timestamp": 42916062
}