看到有楼主在论坛上对抗键盘钩子,感觉对新手来说有点难以理解,所以发了一下按照正常思路的对抗步骤,步骤如下:
打开2011 用OD附加 ,用XueTr.exe找到WH_KEYBOARD_LL 的句柄
然后用CE搜索这个句柄的指针。在OD中找到这个指针,然后下硬件写短点
会断到两处,第一处清零的,第二处才是真正赋值的:
(实际上可以直接找WH_DEBUG的,没有必要找上面这个)
CPU Disasm
Address Hex dump Command Comments
00F50774 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00F50777 FF50 3C CALL DWORD PTR DS:[EAX+3C] ; 钩子函数?
00F5077A 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
00F5077D 8941 14 MOV DWORD PTR DS:[ECX+14],EAX 断到这里
00F50780 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
00F50783 8379 14 00 CMP DWORD PTR DS:[ECX+14],0
00F50787 74 47 JE SHORT 00F507D0
00F50789 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
00F5078C FF52 34 CALL DWORD PTR DS:[EDX+34]
00F5078F 50 PUSH EAX
00F50790 6A 00 PUSH 0
00F50792 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00F50795 8B48 60 MOV ECX,DWORD PTR DS:[EAX+60]
00F50798 51 PUSH ECX
00F50799 6A 09 PUSH 9
00F5079B 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
00F5079E FF52 3C CALL DWORD PTR DS:[EDX+3C]
00F507A1 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
00F507A4 8941 10 MOV DWORD PTR DS:[ECX+10],EAX ; (下WH_DEBUG直接断到这里!)
只需要把
00F50787 74 47 JE SHORT 00F507D0
修改为
00F50787 EB 47 JMP SHORT 00F507D0
对00F50787的内存下硬件访问断点
断到
017C10C1 33F0 XOR ESI,EAX
017C10C3 41 INC ECX
017C10C4 8BC6 MOV EAX,ESI
017C10C6 23C2 AND EAX,EDX
017C10C8 33C3 XOR EAX,EBX
017C10CA 0FB659 01 MOVZX EBX,BYTE PTR DS:[ECX+1]
017C10CE 8B0485 BC917C MOV EAX,DWORD PTR DS:[EAX*4+17C91BC]
一个解密算法,不需要分析
往上找,找到这个解密头部
017C1000 55 PUSH EBP
017C1001 8BEC MOV EBP,ESP
017C1003 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+0C]
017C1006 85C9 TEST ECX,ECX
017C1008 75 04 JNE SHORT 017C100E
把这个 017C1008 75 04 JNE SHORT 017C100E
nop 掉
发下仍然会恢复
恢复位置代码
77C16FA3 F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS
单步走出来,返回到
017C7234 57 PUSH EDI
017C7235 FFB6 B8000000 PUSH DWORD PTR DS:[ESI+0B8]
017C723B 83C0 68 ADD EAX,68
017C723E 50 PUSH EAX
017C723F E8 5C0F0000 CALL <JMP.memcpy> ; Jump to msvcrt.memcpy
017C7244 83C4 0C ADD ESP,0C
NOP 掉这个memcpy 如下
CPU Disasm
Address Hex dump Command Comments
017C722D /. 59 POP ECX
017C722E |. 8B86 B4000000 MOV EAX,DWORD PTR DS:[ESI+0B4]
017C7234 90 NOP
017C7235 90 NOP
017C7236 90 NOP
017C7237 90 NOP
017C7238 90 NOP
017C7239 90 NOP
017C723A 90 NOP
017C723B 90 NOP
017C723C 90 NOP
017C723D 90 NOP
017C723E 90 NOP
017C723F 90 NOP
017C7240 90 NOP
017C7241 90 NOP
017C7242 90 NOP
017C7243 90 NOP
017C7244 90 NOP
017C7245 90 NOP
017C7246 90 NOP
017C7247 |. 5F POP EDI
017C7248 |. 5E POP ESI
017C7249 |. 5B POP EBX
017C724A \. C3 RETN
注意,这个时候 00F50787 74 47 JE SHORT 00F507D0已经被恢复了,然后你在改一下
OK这样子就把钩子挂掉了 已经能记录了,乱码的我就不分析了
仅作技术研究,禁止做坏事!!!!!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课