-
-
修复BladeAPIMonitor3.8.6.8中UnSpy Selected Function时若UnSpy的函数为正被高频调用的函数时,进程及被调试进程卡死的BUG
-
发表于:
2016-5-14 08:29
12261
-
修复BladeAPIMonitor3.8.6.8中UnSpy Selected Function时若UnSpy的函数为正被高频调用的函数时,进程及被调试进程卡死的BUG
BladeAPIMonitor是什么请参考http://bbs.pediy.com/showthread.php?t=142904
卡死的原因是 主(UI)线程中调用了EnterCriticalSection,而TreeView窗口又因为被hook的函数被高频调用,而一直收到添加该函数调用记录的消息,而导致这个临界代码段无法进入,无法进入就会一直等待,无法响应窗口消息,该临界代码段就不会被释放。进而造成了死锁。
所以我们需要将主线程调用EnterCriticalSection的地方改成MsgWaitForMultipleObjects,同时等待窗口消息和临界代码段的信号对象,主要就是这样子。还有就是UnSpy Selected Function时暂停被调试进程的运行有助于使BladeAPIMonitor的主线程的消息队列尽快为空,加快等待临界段完成,UnSpy Selected Function函数执行完成后再恢复被调试进程运行,所以这里还需要用到NtSuspendProcess,NtResumeProcess就是这样,完美修复了。
已破解的程序及修复补丁文件见附件。
源程序下载地址:
http://download.cnet.com/Blade-API-Monitor/3000-2094_4-10972830.html
[课程]FART 脱壳王!加量不加价!FART作者讲授!