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

微软技术分享 微软技术分享 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

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, 分离会话
...全文

相关推荐

通信行业基于MongoDB的安全合规与性能优化:5G时序数据处理、可查询加密及窗口函数应用

内容概要:本文围绕MongoDB在通信行业的深度应用,系统讲解了可查询加密、时间序列集合、窗口函数与性能诊断四大核心技术。通过详实的代码案例,展示了如何利用可查询加密实现敏感数据合规存储与查询,使用时序集合高效处理5G网络KPI等高频写入场景,借助窗口函数进行经营指标的趋势分析,并结合explain()与查询分析器完成性能调优。文章还涵盖分片一致性检查、索引优化等运维实践,全面覆盖通信系统对安全、性能与扩展性的严苛要求。; 适合人群:具备一定数据库基础,从事通信行业研发、架构或运维工作1-3年的技术人员,尤其是参与5G网络监控、客户数据管理或大数据平台建设的相关人员。; 使用场景及目标:① 实现用户手机号、身份证等敏感信息的加密存储与等值查询,满足安全合规要求;② 构建高吞吐、低延迟的5G基站KPI时序数据存储与分析系统;③ 在数据库层直接完成滑动平均、累计求和等经营分析,减少应用层计算负担;④ 诊断慢查询、验证索引有效性,保障系统高性能运行。; 阅读建议:此资源强调理论与实战结合,建议读者在本地或测试环境部署MongoDB 7.0+版本,动手复现文中代码,重点关注schemaMap配置、时序集合参数选择与窗口函数语法细节,并结合explain执行计划理解底层优化机制,从而真正掌握通信级数据架构的设计精髓。

数智顾问

国央企创新负责人如何借助平台实现技术成果的高价值转化与资源精准配置?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

产业园区运营负责人如何在平台建设中科学配置创新资源,提升园区内技术对接效率?.docx

产业园区运营负责人如何在平台建设中科学配置创新资源,提升园区内技术对接效率?

BIZKEEN

产业园区运营负责人如何提升园区内技术供需匹配的精准度?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

高校技术转移办公室人员如何提升科技成果推介的效率与质量?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN
评论
收藏 已收藏
分享
返回顶部
微软技术分享
微软技术分享 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
微软技术社区 8,542 成员 37,311 内容