/**************************************
/* 作者:半斤八兩
/* 博客:http://cnblogs.com/bjblcracked
/* 日期:2013-05-06 01:11
/**************************************
只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
受影响平台x86: xp win7 其它平台没测试
中枪控件: Edit ThunderRT6TextBox ThunderRT6FormDC Chrome_OmniboxView 等
我只重点拿notepad.exe 的 edit 控件做测试.
分析发现 comctl32.dll 这个模块造成的崩溃.
全部都是GDI操作的.
comctl32.dll
----------------------------------------------
771DE49A |. E8 DFD4FFFF call COMCTL32.771DB97E
771DE49F |. E9 C8030000 jmp COMCTL32.771DE86C
771DE4A4 |> F646 62 40 test byte ptr ds:[esi+62], 40 ; Case BD (EM_GETHANDLE) of switch 771DE460
771DE4A8 |. 56 push esi
771DE4A9 |. 74 0E je short COMCTL32.771DE4B9
771DE4AB |. E8 DE36FCFF call COMCTL32.771A1B8E
771DE4B0 |. 8B4E 0C mov ecx, dword ptr ds:[esi+C]
771DE4B3 |. C60408 00 mov byte ptr ds:[eax+ecx], 0
771DE4B7 |. EB 0D jmp short COMCTL32.771DE4C6
771DE4B9 |> E8 D036FCFF call COMCTL32.771A1B8E
771DE4BE |. 8B4E 0C mov ecx, dword ptr ds:[esi+C]
771DE4C1 |. 66:832448 00 and word ptr ds:[eax+ecx*2], 0 ; // error, eax=0 and ecx = 0 其中EAX是wparn
771DE4C6 |> 56 push esi
771DE4C7 |. E8 2F37FCFF call COMCTL32.771A1BFB
771DE4CC |. 8B06 mov eax, dword ptr ds:[esi]
771DE4CE |. E9 99030000 jmp COMCTL32.771DE86C
771DE4D3 |> 53 push ebx ; Case BB (EM_LINEINDEX) of switch 771DE460
771DE4D4 |. 56 push esi
771DE4D5 |. E8 0ECDFFFF call COMCTL32.771DB1E8
771DE4DA |. E9 8D030000 jmp COMCTL32.771DE86C
771DE4DF |> 53 push ebx ; Case C1 (EM_LINELENGTH) of switch 771DE460
------------------------------------------------------------------------------------
试了一天没有找到利用方法.不过感觉应该是可以利用的.
最近时间太忙了,等有时间再继续看看.
本来是分析360程序的,发现了系统的这个BUG.
起初一直以为是360程序的BUG.
用windbg调试,发现,是系统造成的.
再没有安装360的电脑上测试,一样中枪.
剩下的大家看代码吧.
上个DEMO图.
中招条件:
1. 程序有窗口.
2. 程序有使用 edit 一类的控件.(至于哪些控件中枪,得自测了.)
3. 即使程序有加载驱动,只要没有HOOK 消息,一样有效果.(如 XueTr Kernel Detective 360 Taskmgr 等.)
源码和BIN下载地址: