模块 sdbg
require "sdbg"
公开 API
| API | 实现 | 说明 |
|---|---|---|
sdbg.version | sdbg_version | 返回 sdbg 反调试库版本串 |
sdbg.pid | sdbg_pid | 返回当前进程 PID |
sdbg.is_debugger | sdbg_is_debugger | 检测是否有调试器附加(Windows:IsDebuggerPresent + NtQueryInformationProcess;POSIX:/proc/self/status 的 TracerPid) |
sdbg.protect | sdbg_protect | 启用反调试策略(Windows:设置 ProcessDebugFlags 禁止被调试;POSIX:忽略 SIGTRAP 断点信号) |
sdbg.is_run | sdbg_is_run | 探测单实例:sdbg.is_run([name]),若已有一个同名实例在运行则返回 true(基于互斥锁/lockfile) |
sdbg.guard | sdbg_guard | 包装函数做周期性反调试检查:sdbg.guard(fn, interval?),每次调用 fn 前检测调试器,被附加则抛错 |
示例
local sdbg = require "sdbg"
print(sdbg.pid()) -- 当前进程 PID
if sdbg.is_debugger() then
print("调试器已附加!")
end
sdbg.protect()
if sdbg.is_run("myapp") then
print("已有一个实例在运行")
return
end
local safe_work = sdbg.guard(function(n) return n * 2 end, 1)
print(safe_work(21)) -- 42
← 返回模块索引