将一个程序拖拽进OD中,这种方式是通过 CreateProcess() 建立联系的。
程序正在运行中通过OD附加程序,这种方式是通过 DebugActiveProcess() 建立联系的。
DebugActiveProcess执行流程
<1> kernel32! DbaUiConnectToDbg()
- ntdll! DbgUiConnectToDbg()
- ntdll! ZwCreateDebugObject()
- ntoskrnl! NtCreateDebugObject()
<2> kerel32! DbgUiDebugActiveProcess(被调试进程句柄)
- ntdll! DbgUiDebugActiveProcess(被调试进程句柄)
- ntdll! DebugActiveProcess(被调试进程句柄调试器进程TEB+0xF24)
- ntdll! DebugActiveProcess(HANDLE ProcessHandle, HANDLE DebugObjectHandle)
打开ntdll