-
-
[原创]WinDbg 动态内存补丁脚本示例
-
发表于:
2010-2-1 14:15
6245
-
我的MSN 升到 2009后,一直有问题,时断时连。根本原因是公司防火墙屏蔽了7001端口,而MSN当无法收到echo.edge.messenger.live.com就认为网络有问题,会中断现有的连接(H
TTP代理),重新连接。
查了一下,在文件PresenceIM.dll中修改如下两处:
跳转点一、
.text:5F140800 83 7E 7C 0A cmp dword ptr [esi+7Ch], 0Ah
.text:5F140804 75 12 jnz short loc_5F140818 --> nop掉
.text:5F140806 53 push ebx ; lParam
.text:5F140807 53 push ebx ; wParam
.text:5F140808 68 00 05 00 00 push 500h ; Msg
.text:5F14080D FF 76 04 push dword ptr [esi+4] ; hWnd
.text:5F140810 FF 15 9C 13 10 5F call ds:PostMessageW
跳转点二、
.text:5F1407E5 74 19 jz short loc_5F140800 --> jmp
.text:5F1407E7 38 9E 88 00 00 00 cmp [esi+88h], bl
.text:5F1407ED C7 45 FC 0D 03 00 81 mov [ebp+var_4], 8100030Dh
.text:5F1407F4 75 0A jnz short loc_5F140800
但很明显,我的如上处理不够好,如果直接在文件里修改的话,有时候MSN启动的时候还是连不上。不想花太多时间了,就用WinDbg在MSN跑起来以后,动态在内存里改一下。
两个文件,一个是启动WinDbg的批处理文件patchmsn.bat,内容只有一行:
"C:\Program Files\Debugging Tools for Windows\windbg.exe" -pn msnmsgr.exe -c "$$>< E:\Program\WinDBGScript\MSN.txt"
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!