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, 分离会话
...全文
69 回复 打赏 收藏 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文围绕“基于氨储能技术的电转氨耦合风–光–火综合能源系统双层优化调度”展开研究,提出了一种融合风电、光伏等可再生能源与传统火电,并通过电转氨(Power-to-Ammonia, P2A)技术实现能量储存与转换的综合能源系统优化模型。该模型采用双层优化调度架构,上层以系统运行经济性与能源利用效率为目标进行优化决策,下层处理电转氨设备及氨储能系统的动态响应与运行约束,旨在提升高比例可再生能源接入背景下系统的灵活性、稳定性与新能源消纳能力。研究通过Matlab编程实现了该双层优化模型,并基于典型算例验证了其在降低系统运行成本、增强调节能力以及促进清洁能源高效利用方面的有效性。; 适合人群:具备电力系统、能源系统或优化调度相关基础知识,从事新能源、综合能源系统、储能技术或优化算法研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究电转氨(Power-to-Ammonia, P2A)技术在综合能源系统中的应用潜力;②探索基于双层优化框架的风–光–火–氨多能互补系统的协同调度策略;③掌握利用Matlab实现复杂能源系统优化调度建模与求解的方法。; 阅读建议:此资源以Matlab代码实现为核心,不仅提供了完整的优化模型,还展示了详细的算法流程。读者在学习时应结合双层优化理论,仔细研读代码逻辑,重点关注目标函数的构建、约束条件的处理以及上下层信息交互机制,并尝试复现和修改算例以加深理解。
打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 Java JDK 1.8.0被视为Java开发工具套件中的一个关键版本,其中整合了Java语言的核心库、编译器、运行时环境、调试工具以及其他必需的组件,为开发与执行Java应用程序奠定了基础。该版本的JDK诞生于2018年,具体为1.8.0_171的更新版本,其核心在于对先前版本的修正与优化。Java JDK是Java Development Kit的缩写,它属于Java平台标准版(Java SE)的范畴,主要用于构建和部署Java应用程序。该套件提供了编译、调试、性能分析等一系列工具,使开发者能够编写、打包、测试以及运行Java程序。Java JDK 1.8.0引入了诸多创新特性,具体包括: 1. ** Lambda表达式**:这被公认为Java 8最突出的特性之一,它引入了一种全新的语法结构,使得函数式编程更为精炼。Lambda表达式能够将匿名函数作为方法参数传递,从而简化了多线程编程中的回调函数和事件处理。 2. ** 方法引用和构造器引用**:它们与Lambda表达式紧密关联,提供了一种更为直观的方式来引用既存的方法或构造器,有效减少了代码的冗余。 3. ** Stream API**:这是一个全新的集合操作接口,它支持序列化操作,例如过滤、映射和规约,特别适用于大规模数据处理,显著提升了代码的可读性与执行效率。 4. ** 接口默认方法**:Java 8赋予了接口定义默认方法的能力,通过提供默认实现,无需强制子类去重写该方法,从而增强了接口的适应性。 5. ** Date和Time API的改进**:Java 8推出了全新的java.time包,用以替代已过时的ja...

8,157

社区成员

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

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

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

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