-
-
修复BladeAPIMonitor3.8.6.8中UnSpy Selected Function时若UnSpy的函数为正被高频调用的函数时,进程及被调试进程卡死的BUG
-
发表于:
2016-5-14 08:29
12495
-
修复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就是这样,完美修复了。
已破解的程序及修复补丁文件见附件。
源程序下载地址:
8adK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3c8G2N6$3&6D9L8$3q4V1i4K6u0W2j5$3&6W2N6q4)9J5k6h3y4G2L8g2)9J5c8V1u0D9j5h3c8W2i4K6u0V1b7g2m8u0i4K6u0V1e0h3!0F1K9i4c8G2M7W2)9J5c8U0x3H3x3o6m8Q4x3X3b7J5x3o6V1@1i4K6g2X3y4q4)9J5k6o6p5H3z5e0M7J5z5o6x3H3i4K6u0W2K9s2c8E0L8l9`.`.
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课