能力值:
(RANK:350 )
|
-
-
2 楼
你确认60AD34E0是MFC42.DLL?
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
经过看雪老大的指点,复查了一下,发现确实是mfc42.dll,不过这个DLL位于QQ的安装目录,也是MS的dll,文件版本号是6.00.8665.0。
后来又看了一下system32下面的mfc42.dll,这个的文件版本是6.02.4131.0,加载的地方是
73D31000。
关于QQ安装目录下的mfc42.dll,上面贴出的汇编代码是ATTACH到QQ再复制出来的,下面的是用OD的loaddll.exe加载的结果
60AD34E0 . 52 push edx
60AD34E1 . 68 4C20B560 push 60B5204C
60AD34E6 .^ E9 5F3AFCFF jmp 60A96F4A
60AD34EB $^ FF25 4C20B560 jmp dword ptr [60B5204C] ; Mfc42.60AD34DF
60AD34F1 . 51 push ecx
60AD34F2 . 52 push edx
60AD34F3 . 68 8020B560 push 60B52080
60AD34F8 .^ E9 4D3AFCFF jmp 60A96F4A
60AD34FD $^ FF25 8020B560 jmp dword ptr [60B52080] ; 跳回头?
60AD3503 . 51 push ecx
60AD3504 . 52 push edx
60AD3505 . 68 9C20B560 push 60B5209C
60AD350A .^ E9 2235FBFF jmp 60A86A31
60AD350F $^ FF25 9C20B560 jmp dword ptr [60B5209C] ; Mfc42.60AD3503
60AD3515 . 51 push ecx
60AD3516 . 52 push edx
现在并不指向sendto函数,但是QQ加载的时候为什么会指向sendto函数呢?
无论是QQ安装目录下的mfc42.dll还是system32下面的,用Dependency Walker查看,都不依赖与ws2_32.dll或者wsock32.dll。唉,还是没弄明白,看雪老大和各位高手再指点指点
|
能力值:
(RANK:350 )
|
-
-
4 楼
60A85B35 > FF75 F0 push dword ptr [ebp-10] ; /ProcNameOrOrdinal
60A85B38 . |57 push edi ; |hModule
60A85B39 . |FF15 D4B2B160 call dword ptr [<&KERNEL32.GetProcAddress>] ; \GetProcAddress
60A85B3F . |8BD8 mov ebx, eax
60A85B41 . |85DB test ebx, ebx
60A85B43 . |0F84 C6DD0400 je 60AD390F
60A85B49 > |8B45 0C mov eax, dword ptr [ebp+C]
60A85B4C . |8918 mov dword ptr [eax], ebx //填充IAT
60A85B4E > |A1 B822B560 mov eax, dword ptr [60B522B8]
60A85B53 . |85C0 test eax, eax
60A85B55 . |0F85 F8DD0400 jnz 60AD3953
60A85B5B > |8BC3 mov eax, ebx
60A85B5D > |5F pop edi
60A85B5E . |5E pop esi
60A85B5F . |5B pop ebx
60A85B60 . |C9 leave
60A85B61 . |C2 0800 retn 8
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
好复杂啊,看来我太菜了
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
真是晕死自己脑筋太木了,没想到是动态加载、得到地址再填充。
回头想想也是合理,MFC库不可能依赖于某一版本的ws2_32.dll,它这样做的确是提供了兼容性了。
感谢看雪老大!
|
|
|