BinSentry 自研二进制哨兵调试引擎接口规范

微软技术分享
优质创作者: 编程框架技术领域
领域专家: 操作系统技术领域
2026-09-24 20:28:57

BinSentry 二进制哨兵,由 LYSHARK 独立自研,是一款运行于 Windows 平台的二进制动态调试引擎。该调试引擎从零手写开发,C++ 代码 2 万余行,实现 200 + 调试方法;原生采用 CMD 命令行 HTTP 服务器架构,专为 AI Agent 打造。配合配套 AI 智能体,能够对二进制文件、木马等恶意样本进行深层次分析,是二进制样本研究的实用工具。

哨兵可以部署到任意的虚拟机沙盒之中,并可以搭载目前流行的jev等大模型产品,AI驱动速度有质的提升,是Windows平台下AI动态调试的优质项目。

使用说明

无会话

#接口params(JSON)期望
1SystemInfo{}ok=true, 返回系统信息
2ProcessList{}ok=true, 进程列表
3EnumErrorCodes{}ok=true, 错误码表
4EnumExceptions{}ok=true, 异常码表
5EnumWindows{"pid":4}ok=true, 窗口枚举完成
6IsProcessElevated{}ok=true, 返回是否提权
7ClearLog{}ok=true, 日志已清空
8SaveLog{"path":"E:\LyDebugger 2.3\x86\Release\_full_log.txt"}ok=true, 日志已保存
9Logs{}ok=true, 日志查询
10Help{}ok=true
11GetJIT{}ok=true, JIT配置
12SetJIT{"path":"C:\LyDebugger\x86\LyDebugger.exe -- -p %ld -e %ld"}ok=true
13GetCommandLine{}ok=true
14SetCommandLine{"args":"--test-arg"}ok=true, 下次启动生效
15SetBPXOptions{"option":"FASTRESUME","enable":1}ok=true, 位掩码
16SetExceptionBPX{"code":"0xC0000005"}ok=true, 异常断点已设
17DelExceptionBPX{"code":"0xC0000005"}ok=true, 已删除
18GetExceptionBPXList{}ok=true, 列表
19SetDllBreakPoint{"dll":"test.dll"}ok=true
20DelDllBreakPoint{"dll":"test.dll"}ok=true
21GetDllBreakPoints{}ok=true
22SetVar{"name":"testvar","value":"0x1234"}ok=true
23DelVar{"name":"testvar"}ok=true
24GetVars{}ok=true, 数量
25AddArgument{"start":"0x009015C0","end":"0x00901600","name":"func1"}ok=true
26DelArgument{"start":"0x009015C0"}ok=true
27GetArguments{}ok=true
28GetComments{}ok=true
29GetLabels{}ok=true
30GetBookMarks{}ok=true
31Functions{}ok=true
32ShowBreakPoint{}ok=true, 软断点数量
33ShowHbreakPoint{}ok=true, 硬断点数量
34ShowMemBreakPoint{}ok=true, 内存断点数量
35ShowApiBreakPoint{}ok=true, API断点数量
36LoadDatabase{"path":"E:\LyDebugger 2.3\x86\Release\_dbg.dat"}ok=true
37SaveDatabase{"path":"E:\LyDebugger 2.3\x86\Release\_dbg.dat"}ok=true

启动会话

#接口params(JSON)期望
1Debug{"path":"E:\LyDebugger 2.3\x86\Win32Project1.exe","args":"","cwd":"E:\LyDebugger 2.3\x86\Release"}ok=true, 返回pid/tid
2SetDebug"Logs"ok=true (params传命令字符串)
3RunToUserCode{}ok=true, 设OEP断点运行到用户代码
4Register{}EIP==0x009015BB

停止态-基础

#接口params(JSON)期望
1ProcessInfo{}ok=true
2Threads{}ok=true, 取第一个threadId作TID
3ThreadInfo{"tid":<Threads返回的threadId>}ok=true
4GetActiveThread{}ok=true
5SetActiveThread{"tid":<Threads返回的threadId>}ok=true
6Register{}ok=true
7SetRegister{"reg":"eax","value":"0x12345678"}ok=true, 再设回0
8GetPageRights{"address":"0x009015BB"}ok=true
9SetPageRights{"address":"0x009015BB","protect":"RWX"}ok=true, 改后还原protect=0x20
10Modules{}ok=true
11ModuleInfo{"module":"Win32Project1.exe"}ok=true
12Sections{"module":"Win32Project1.exe"}ok=true
13PEInfo{"path":"E:\LyDebugger 2.3\x86\Win32Project1.exe"}ok=true, ImageBase=0x400000 OEP=0x15BB
14RichHeader{"module":"Win32Project1.exe"}ok=true
15TLSCallbacks{"module":"Win32Project1.exe"}ok=true (无TLS返回error字段)
16RelocationList{"module":"Win32Project1.exe"}ok=true
17DebugDirectory{"module":"Win32Project1.exe"}ok=true
18ImportList{"module":"Win32Project1.exe"}ok=true
19ExportList{"module":"kernel32.dll"}ok=true
20GetImportAddress{"module":"Win32Project1.exe","name":"MessageBoxA"}ok=true
21GetExportAddress{"module":"kernel32.dll","name":"LoadLibraryA"}ok=true
22AddrToModule{"address":"0x009015BB"}ok=true
23GetSectionData{"module":"Win32Project1.exe","name":".text"}ok=true
24GetSectionInfo{"module":"Win32Project1.exe","name":".text"}ok=true
25Symbol{"expr":"Win32Project1.exe+0x15BB"}ok=true
26GetSymbolInfo{"address":"0x009015BB"}ok=true
27GetFunctionSize{"address":"0x009015BB"}ok=true
28Heaps{}ok=true
29Handles{"max":20}ok=true
30SEHList{}ok=true
31MemoryInfo{"address":"0x009015BB"}ok=true
32Regions{}ok=true
33Memory{"address":"0x009015BB","size":16}ok=true
34ReadMemoryValue{"address":"0x009015BB","size":4}ok=true
35WriteMemory{"address":"0x009015BB","hex":"CC"}ok=true, 再写回E8
36GetString{"address":"0x00901000","max":64,"type":"ascii"}ok=true, JSON可解析
37GetOpcodeSize{"address":"0x009015BB"}ok=true
38DisassembleAt{"address":"0x009015BB","count":5}ok=true
39Dissasembler{"address":"0x009015BB","count":5}ok=true
40GetBranchTarget{"address":"0x009015BB"}ok=true
41Assemble{"instr":"mov eax, 1","cip":"0x009015C0"}ok=true
42AssembleAt{"address":"0x00901050","instr":"nop"}ok=true
43MatchPattern{"address":"0x009015BB","pattern":"E8","size":64}ok=true
44SearchMemory{"pattern":"E8","start":"0x00901000","size":0x1000}ok=true
45SearchAllMemory{"pattern":"E8","max":5}ok=true
46SearchStrings{"address":"0x00901000","size":0x400}ok=true
47FindRef{"address":"0x009015BB","max":5}ok=true
48xrefs{"address":"0x009015BB","max":5}ok=true
49HashMemory{"address":"0x009015BB","size":16,"algo":"md5"}ok=true
50CallStack{"max":16}ok=true
51Stack{"count":8}ok=true
52StackPush{"value":"0x11223344"}ok=true
53StackPop{}ok=true
54StackPeek{"offset":0}ok=true
55SetFlag{"flag":"ZF","value":0}ok=true
56Eval{"expr":"eip+4"}ok=true
57AllocateMemory{"size":0x1000}ok=true, 记下address作MEM
58SetMemory{"address":MEM,"hex":"9090"}ok=true (在分配区写, 勿写代码区)
59FillMemory{"address":MEM,"size":8,"value":"0x90"}ok=true
60Memcpy{"src":"0x009015BB","dst":"0x"+(MEM+0x100),"size":5}ok=true
61FreeMemory{"address":MEM}ok=true
62VaToFileOffset{"address":"0x009015BB"}ok=true
63FileOffsetToVa{"offset":"0x9BB"}ok=true
64minidump{"path":"E:\LyDebugger 2.3\x86\Release\_full.dmp"}ok=true
65mnemonicbrief{"address":"0x009015BB"}ok=true
66LastException{}ok=true
67GetThreadLastError{"tid":<Threads返回的threadId>}ok=true
68GetThreadPriority{"tid":<Threads返回的threadId>}ok=true
69SetThreadPriority{"tid":<Threads返回的threadId>,"priority":"NORMAL"}ok=true
70SetThreadName{"tid":<Threads返回的threadId>,"name":"main-thread"}ok=true
71StartTraceRecord{}ok=true
72GetTraceRecord{"count":5}ok=true
73StopTraceRecord{}ok=true
74JmpHistory{}ok=true
75PatchMemory{"address":"0x009015BB","hex":"CC"}ok=true
76Patches{}ok=true
77RevertPatch{"address":"0x009015BB"}ok=true
78DeletePatch{"address":"0x009015BB"}ok=true
79ShowDebugger{}ok=true
80HideDebugger{}ok=true
81gpa{"dll":"kernel32.dll","api":"LoadLibraryA"}ok=true

断点

#接口params(JSON)期望
1SetBreakPoint{"address":"0x009015BB"}ok=true
2GetBreakpointInfo{"address":"0x009015BB"}ok=true
3GetBreakpointType{"address":"0x009015BB"}ok=true
4SetBreakpointName{"address":"0x009015BB","name":"OEP"}ok=true
5SetBreakpointSingleshoot{"address":"0x009015BB","enable":0}ok=true
6SetBreakpointFastResume{"address":"0x009015BB","enable":0}ok=true
7SetBreakpointSilent{"address":"0x009015BB","enable":0}ok=true
8SetBreakpointLog{"address":"0x009015BB","text":"hit OEP"}ok=true
9SetBreakpointLogFile{"address":"0x009015BB","file":"E:\LyDebugger 2.3\x86\Release\_bp.log"}ok=true
10SetBreakpointHitCount{"address":"0x009015BB","count":3}ok=true
11GetBreakpointHitCount{"address":"0x009015BB"}ok=true
12ResetBreakpointHitCount{"address":"0x009015BB"}ok=true
13SetCondBreakPoint{"address":"0x009015BB","cond":"1","thread":TID}ok=true
14DelCondBreakPoint{"address":"0x009015BB"}ok=true
15SetHbreakPoint{"address":"0x009015C0","len":"1","flag":"e"}ok=true (勿与软断点同址)
16DelHbreakPoint{"address":"0x009015C0"}ok=true
17SetMemBreakPoint{"address":"0x009015C0","flag":"e"}ok=true
18DelMemBreakPoint{"address":"0x009015C0"}ok=true
19SetApiBreakPoint{"dll":"kernel32.dll","api":"ExitProcess"}ok=true
20DelApiBreakPoint{"dll":"kernel32.dll","api":"ExitProcess"}ok=true
21SetPageMemory{"address":"0x00901000","protect":"RWX"}ok=true
22DisableBreakpoint{"address":"0x009015BB"}ok=true
23EnableBreakpoint{"address":"0x009015BB"}ok=true
24BreakpointCommand{"address":"0x009015BB","command":""}ok=true
25DelBreakPoint{"address":"0x009015BB"}ok=true, 清场后进P4

执行控制

#接口params(JSON)期望
1Run{}ok=true, 发送后等停止(Status.stopped)
2StepIn{}ok=true, 等停止
3StepOver{}ok=true, 等停止
4StepOut{}ok=true, 等停止
5EStepOver{}ok=true, 等停止
6EStepInto{}ok=true, 等停止(注意是EStepInto非EStepIn)
7EStepOut{}ok=true, 等停止
8Skip{"count":1}ok=true, 保持停止
9InstrUndo{}ok=true, EIP回退一条
10ExecuteCommand"StepOver"ok=true (params传字符串子命令)
11StepUser{}ok=true (用户代码处返回"无需运行")
12RunToUserCode{}ok=true
13TraceInto{"count":3}ok=true, 等停止
14TraceOver{"count":3}ok=true, 等停止
15TraceLine{"address":"0x009015BB"}ok=true, 等停止
16ERun{}ok=true, 等停止
17SERun{}ok=true, 等停止
18DebugContinue{"status":0}ok=true, 等停止
19RunTo{"address":"0x009015BB"}ok=true, 临时断点命中移除

运行态

#接口params(JSON)期望
1SetBreakPoint{"address":"0x009015BB"}ok=true
2Run{}ok=true, 等停止(OEP断点命中)
3PauseAllThreads{}ok=true
4ResumeAllThreads{}ok=true
5ThreadPause{"tid":次线程threadId}ok=true (用非活动线程)
6ThreadResume{"tid":次线程threadId}ok=true
7DelBreakPoint{"address":"0x009015BB"}ok=true
8Run{}ok=true, 目标自由运行
9Pause{}ok=true, 等停止
10SetBreakPoint{"address":"0x009015BB"}ok=true
11AnimateInto{"count":3}ok=true, 1.5s后
12AnimateStop{}ok=true, 等停止
13AnimateOver{"count":3}ok=true, 1.5s后
14AnimateStop{}ok=true, 等停止
15Run{}ok=true, 等停止
16StepSystem{}ok=true (最后测, 会停系统代码)

会话管理

#接口params(JSON)期望
1DumpProcess{"path":"E:\LyDebugger 2.3\x86\Release\_dump.bin","base":"0x00900000","size":0x2000}ok=true
2LoadConfig{"module":"Win32Project1.exe"}ok=true
3SaveDatabase{"path":"E:\LyDebugger 2.3\x86\Release\_dbg2.dat"}ok=true
4LoadDatabase{"path":"E:\LyDebugger 2.3\x86\Release\_dbg2.dat"}ok=true
5Restart{}ok=true, 等2.5s
6Stop{}ok=true, 会话终止
7Debug{"path":"E:\LyDebugger 2.3\x86\Win32Project1.exe","cwd":"E:\LyDebugger 2.3\x86\Release"}ok=true, 重启会话等2.5s
8Detach{}ok=true, 分离会话
...全文
96 回复 打赏 收藏 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文介绍了“Java+大数据+AI架构师实战营”这一系统性人才培养方案,旨在帮助具备Java基础的开发者在26周内完成向融合Java、大数据与人工智能技术的复合型架构师跃迁。课程围绕五大核心模块展开:架构基本功(微服务演进、分布式锁与ID设计)、数据引擎(亿级数据存储与Flink CDC实时同步)、网关与可观测性(Gateway源码改造、限流与日志采样)、AI融入架构(推荐系统、大模型应用开发)以及架构思维培养。通过“小绿书”项目贯穿始终,强调整合三域技术的系统设计能力而非孤立技能堆叠。; 适合人群:具备1-5年Java开发经验,希望突破技术瓶颈、拓展大数据与AI领域能力的中高级研发人员;适合有志于成长为全栈架构师的技术从业者。; 使用场景及目标:①掌握高并发、分布式系统下的架构设计方法;②理解海量数据的存储分层与实时计算架构;③学会将AI能力如大模型、RAG、向量检索等深度集成到业务系统中;④构建完整的系统可观测性与网关控制能力;⑤形成跨技术域的系统性架构思维。; 阅读建议:此资源以实战项目驱动学习,强调动手实践与架构思维并重。建议学习者结合课程代码与实际调试,深入理解每一环节的技术选型与设计权衡,尤其关注真实生产环境中难以复现的复杂约束,从而建立可迁移的架构“手感”。

8,410

社区成员

发帖
与我相关
我的任务
社区描述
微软技术社区为中国的开发者们提供一个技术干货传播平台,传递微软全球的技术和产品最新动态,分享各大技术方向的学习资源,同时也涵盖针对不同行业和场景的实践案例,希望可以全方位地帮助你获取更多知识和技能。
windowsmicrosoft 企业社区
社区管理员
  • 微软技术分享
  • 郑子铭
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

微软技术社区为中国的开发者们提供一个技术干货传播平台,传递微软全球的技术和产品最新动态,分享各大技术方向的学习资源,同时也涵盖针对不同行业和场景的实践案例,希望可以全方位地帮助你获取更多知识和技能。

予力众生,成就不凡!微软致力于用技术改变世界,助力企业实现数字化转型。

试试用AI创作助手写篇文章吧