最近在弄传奇3的动态DLL文件的时候很恼火~~盛大的游戏的登陆之前会接受
一段代码,这段代码边解密边执行,中间不过是搜索KERNEL32的GetMoudleHandle、GetProcAddress、和LoadLibraryEx、SetUnhandleExceptionFilter(这个之后没怎么用到),找到这几个函数之后,进行动态加载。
如果在DLL加载进入游戏之后的话,调试会不起作用,可能觉得里面有ANTI的代码,但是确定没有调用DLL里面的函数。可能在DLLMAIN里面就已经执行了,跟了一下加载过程,得到一些流程。
LoadLibrary----->LoadLibraryEx-------->BasepLoadLibraryAsDateFile--------------->NtMapViewofSection
之后到达这里。
7C921193 55 push ebp
7C921194 8BEC mov ebp, esp
7C921196 56 push esi
7C921197 57 push edi
7C921198 53 push ebx
7C921199 8BF4 mov esi, esp
7C92119B FF75 14 push dword ptr [ebp+14]
7C92119E FF75 10 push dword ptr [ebp+10]
7C9211A1 FF75 0C push dword ptr [ebp+C]
7C9211A4 FF55 08 call dword ptr [ebp+8] ; 执行DLL MAIN
7C9211A7 8BE6 mov esp, esi
7C9211A9 5B pop ebx
7C9211AA 5F pop edi
7C9211AB 5E pop esi
7C9211AC 5D pop ebp
0x7C9211A4 进去就能跟到DLLMAIN了
本文解析了传奇游戏使用动态DLL文件的过程,详细介绍了从LoadLibrary到DLLMain的调用路径及反调试技巧,对于理解游戏客户端的安全机制具有一定参考价值。
4万+

被折叠的 条评论
为什么被折叠?



