首页
社区
课程
招聘
修复BladeAPIMonitor3.8.6.8中UnSpy Selected Function时若UnSpy的函数为正被高频调用的函数时,进程及被调试进程卡死的BUG
发表于: 2016-5-14 08:29 12494

修复BladeAPIMonitor3.8.6.8中UnSpy Selected Function时若UnSpy的函数为正被高频调用的函数时,进程及被调试进程卡死的BUG

2016-5-14 08:29
12494
BladeAPIMonitor是什么请参考http://bbs.pediy.com/showthread.php?t=142904
卡死的原因是 主(UI)线程中调用了EnterCriticalSection,而TreeView窗口又因为被hook的函数被高频调用,而一直收到添加该函数调用记录的消息,而导致这个临界代码段无法进入,无法进入就会一直等待,无法响应窗口消息,该临界代码段就不会被释放。进而造成了死锁。
所以我们需要将主线程调用EnterCriticalSection的地方改成MsgWaitForMultipleObjects,同时等待窗口消息和临界代码段的信号对象,主要就是这样子。还有就是UnSpy Selected Function时暂停被调试进程的运行有助于使BladeAPIMonitor的主线程的消息队列尽快为空,加快等待临界段完成,UnSpy Selected Function函数执行完成后再恢复被调试进程运行,所以这里还需要用到NtSuspendProcess,NtResumeProcess就是这样,完美修复了。
已破解的程序及修复补丁文件见附件。
源程序下载地址:
ad4K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3c8G2N6$3&6D9L8$3q4V1i4K6u0W2j5$3&6W2N6q4)9J5k6h3y4G2L8g2)9J5c8V1u0D9j5h3c8W2i4K6u0V1b7g2m8u0i4K6u0V1e0h3!0F1K9i4c8G2M7W2)9J5c8U0x3H3x3o6m8Q4x3X3b7J5x3o6V1@1i4K6g2X3y4q4)9J5k6o6p5H3z5e0M7J5z5o6x3H3i4K6u0W2K9s2c8E0L8l9`.`.

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 149
活跃值: (1336)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2016-5-14 12:56
0
雪    币: 6510
活跃值: (4414)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
可惜需要安装才行。。绿色运行还不行。。。。
2016-5-17 20:45
0
雪    币: 5282
活跃值: (6099)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
4
是需要安装的,至于要绿色,你可以研究下。
2016-5-17 22:35
0
游客
登录 | 注册 方可回帖
返回