首页
社区
课程
招聘
[求助]想hook ce的DebugActiveProcess,老是说未附加成功咋回事
发表于: 2019-10-20 18:23 3381

[求助]想hook ce的DebugActiveProcess,老是说未附加成功咋回事

2019-10-20 18:23
3381
如题,hook ce的DebugActiveProcess,不让他执行这个函数,伪造附加成功的一个样子,但是老是弹出一个框说附加时间过长,未附加成功。
是不是写的不够完善,麻烦哪位帮我看下
代码大体如下(是个dll,注入ce,hook用的detour)

DWORD _tid[10000];
int tcount = 0;
DWORD _pid ;

BOOL
APIENTRY
_DebugActiveProcess(
_In_ DWORD dwProcessId
)
{
getthread(dwProcessId);  //遍历欲附加进程的线程存在 _tid中,并设置tcount线程数

_pid = dwProcessId;       //把pid保存起来
return TRUE;
}


int firstdbg = 2;

BOOL
APIENTRY
_WaitForDebugEvent(
_Out_ LPDEBUG_EVENT lpDebugEvent,
_In_ DWORD dwMilliseconds
)
{
if (firstdbg==2)        //第一次wait,必然伪造成 CREATE_PROCESS_DEBUG_EVENT
{
firstdbg = 1;
wchar_t name[200];
ULONG base=getmo(_pid, name); //获取主模块的路径(name),返回为模块在内存中地址
memset(&lpDebugEvent->u.CreateProcessInfo, 0, sizeof(lpDebugEvent->u.CreateProcessInfo));
lpDebugEvent->dwDebugEventCode = CREATE_PROCESS_DEBUG_EVENT;
lpDebugEvent->dwProcessId = _pid;
lpDebugEvent->dwThreadId = _tid[0];//设置成主线程
lpDebugEvent->u.CreateProcessInfo.hFile =CreateFile(name, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);
lpDebugEvent->u.CreateProcessInfo.hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, lpDebugEvent->dwProcessId);
lpDebugEvent->u.CreateProcessInfo.lpBaseOfImage = (void*)base;
HANDLE t = OpenThread(THREAD_ALL_ACCESS, 0, lpDebugEvent->dwThreadId);
lpDebugEvent->u.CreateProcessInfo.lpThreadLocalBase = (void*)GetThreadStartAddress(t);//获取主线程起始地址
lpDebugEvent->u.CreateProcessInfo.hThread = t;
lpDebugEvent->u.CreateProcessInfo.fUnicode = 1;
SuspendThread(t);//伪造附加线程暂停的现象
return TRUE;
}

return FALSE;
}


bool _stdcall  dbgcontiu(
_In_ DWORD dwProcessId,
_In_ DWORD dwThreadId,
_In_ DWORD dwContinueStatus
)
{
if (dwContinueStatus == DBG_CONTINUE)
{
if (firstdbg == 1)
{
firstdbg = 0;
HANDLE t = OpenThread(THREAD_ALL_ACCESS, 0, dwThreadId);
ResumeThread(t);   //继续线程
CloseHandle(t);
return TRUE;
}
}

return TRUE;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2019-10-20 18:25 被shenchiyua编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 6124
活跃值: (4661)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
2
你可以看看ce的源码啊,什么时候会弹出那个框,把没处理的地方处理一下。
2019-10-20 19:03
0
雪    币: 62
活跃值: (971)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
一看就是异常处理里没收到首次断点消息。DebugActiveProcess执行后一直在等待呗。
2019-10-21 15:30
0
游客
登录 | 注册 方可回帖
返回
//