当前位置:网站首页>De debugging (set the main thread as hidden debugging to destroy the debugging Channel & debugger detection)
De debugging (set the main thread as hidden debugging to destroy the debugging Channel & debugger detection)
2022-07-05 03:33:00 【#A#】
Debugging is essentially the next int3( abnormal ), There's an exception , The debugger will receive an exception , Will give the opportunity to deal with , Find the debugger before processing , Find the debugger after processing , Find the debugger twice . Using the functions of the driver layer can hide the thread settings under debugging , The original meaning is that the process does not debug , But the consequence is when the thread itself is attached with a debugger , Originally, one int3 The breakpoint of , What happens is an exception , There will be exceptions here , The debugger doesn't handle
Because it is an undisclosed function , You need to load the export table first
void GameProtect::AntiDebug()
{
auto hNtdll = LoadLibrary(L"ntdll.dll");
if (hNtdll)
{
ZwSetInfomationThreadPtr ZwSetInfomationThread;
ZwSetInfomationThread = (ZwSetInfomationThreadPtr)GetProcAddress(hNtdll, "ZwSetInformationThread");
ZwSetInfomationThread((DWORD)GetCurrentThread(), 0x11, 0x0, 0x0);
}
}
test : next int3 Breakpoint direct GG
Because the next one int3 Breakpoints essentially produce an exception , Exception find the debugger and find that the debugger does not respond , Go back to the program to deal with , The program cannot handle , Find the debugger , The debugger crashes when it ignores it
Use these functions to be obscene , Otherwise, when reverse analysis, look at the string table directly GG, It's better to use the login to send the address directly
Debugger detection :
adopt BeingDebugged testing :
// testing PEB structure
BOOL debug = IsDebuggerPresent();
BOOL _debug;
CheckRemoteDebuggerPresent(GetCurrentProcess(), &_debug);
if (debug)AfxMessageBox(L"IsDebuggerPresent Debugger detected ");
if (_debug)AfxMessageBox(L"CheckRemoteDebuggerPresent Debugger detected ");
Compile operation use x32DBG additional :
It was detected .
General debugger such as OD Will dispose of this place It has plug-ins that can fix this place , In essence, it's going to be beingdebug Field processed
commonly BeingDebugged The detection of is of little use The assembly code is directly changed 0 perhaps HOOK This function can also pass
OD Plug in for :
Detect the debugger through kernel properties :
In principle application layer Access to kernel mode is not available , But Microsoft still left a hole .
utilize NtQueryInformationProcess pick up information :
NTSTATUS(NTAPI* NtQueryInformationProcess)(
HANDLE ProcessHandle,// Process handle
DWORD ProcessInformationClass,// Information types
PVOID ProcessInformation,// Information pointer
ULONG ProcessInformationLength,// Information pointer size
PULONG ReturnLength // Write buffer size
)
PROCESSINFOCLASS 0x7 DebugPort
PROCESSINFOCLASS 0x1E DebugObjectHandle
PROCESSINFOCLASS 0x1F DebugFlags
The third parameter is an enumeration type But with DWORD Also yes
BOOL GameProtect::CheckDebugByNT()
{
//
DWORD debug_port = 0;
NtQueryInfomationProcess(HProcess, 0x07, &debug_port, sizeof(debug_port), 0x0);
if (debug_port)return TRUE;
HANDLE debug_object = 0;
// testing DBGOBJECT
NtQueryInfomationProcess(HProcess, 0x1E, &debug_object, sizeof(debug_object), 0x0);
if (debug_object)return TRUE;
BOOL debug_flags = 1;
NtQueryInfomationProcess(HProcess, 0x1F, &debug_flags, sizeof(debug_flags), 0x0);
if (!debug_flags)return TRUE;
return FALSE;
}
边栏推荐
- Technology sharing swift defense programming
- qrcode:将文本生成二维码
- Bumblebee: build, deliver, and run ebpf programs smoothly like silk
- Use UDP to send a JPEG image, and UPD will convert it into the mat format of OpenCV after receiving it
- Azkaban actual combat
- 【做题打卡】集成每日5题分享(第三期)
- Solve the problem that sqlyog does not have a schema Designer
- The perfect car for successful people: BMW X7! Superior performance, excellent comfort and safety
- SQL performance optimization skills
- Single box check box
猜你喜欢
Share the newly released web application development framework based on blazor Technology
2. Common request methods
[105] Baidu brain map - Online mind mapping tool
Sqoop安装
Asemi rectifier bridge 2w10 parameters, 2w10 specifications, 2w10 characteristics
[learning notes] month end operation -gr/ir reorganization
[groovy] string (string splicing | multi line string)
1. Five layer network model
Leetcode42. connect rainwater
Azkaban overview
随机推荐
[2022 repair version] community scanning code into group activity code to drain the complete operation source code / connect the contract free payment interface / promote the normal binding of subordi
[system security] ten thousand words summary system virtualization container bottom layer principle experiment
2. Common request methods
The perfect car for successful people: BMW X7! Superior performance, excellent comfort and safety
Devtools的简单使用
Clean up PHP session files
【做题打卡】集成每日5题分享(第三期)
FBO and RBO disappeared in webgpu
Qrcode: generate QR code from text
Azkaban installation and deployment
Design and practice of kubernetes cluster and application monitoring scheme
Comparison of advantages and disadvantages between platform entry and independent deployment
[groovy] string (string type variable definition | character type variable definition)
[learning notes] month end operation -gr/ir reorganization
Azkaban actual combat
[groovy] groovy environment setup (download groovy | install groovy | configure groovy environment variables)
Yyds dry goods inventory intelligent fan based on CC2530 design
VM in-depth learning (XXV) -class file overview
Pat class a 1160 forever (class B 1104 forever)
Apache Web page security optimization