刚在网上下了个东东来玩,关键跳很容易找到,不过跳转一改程序就运行出错,程序下载在这:
GameServer.rar
无壳还带有调试信息,GameServer.exe前面的一段代码应该是后天人为的加上去的,负责加载GameServer.dll,然后GameServer.dll会弹出一个输入启动KEY的对话框,KEY对了才继续运行,关键跳很容易找到:
0CE44845 call dword ptr [<&USER32.DialogBoxParamA>] ; 弹出输入启动KEY的对话框
0CE4484B mov eax, dword ptr [CE8DBA4]
0CE44850 cmp eax, ebx
0CE44852 mov edi, eax
0CE44854 je 0CE4491B
0CE4485A push 104 ; /BufSize = 104 (260.)
0CE4485F lea ecx, dword ptr [esp+105B8] ; |
0CE44866 push ecx ; |PathBuffer
0CE44867 push esi ; |hModule
0CE44868 call dword ptr [<&KERNEL32.GetModuleFileNameA>] ; \GetModuleFileNameA
0CE4486E push edi ; /<%u> => 0
0CE4486F lea edx, dword ptr [esp+105A8] ; |
0CE44876 push 0CE7171C ; |%u
0CE4487B push edx ; |s
0CE4487C call dword ptr [<&USER32.wsprintfA>] ; \wsprintfA
0CE44882 add esp, 0C
0CE44885 mov dword ptr [esp+18], 0CE715BC
0CE4488D mov dword ptr [esp+105A0], ebx
0CE44894 mov byte ptr [esp+1C], bl
0CE44898 lea eax, dword ptr [esp+105A4]
0CE4489F push eax ; /Arg1
0CE448A0 lea esi, dword ptr [esp+105B8] ; |
0CE448A7 lea ebx, dword ptr [esp+1C] ; |
0CE448AB mov byte ptr [esp+108C8], 1 ; |
0CE448B3 call 0CE43460 ; \GameSe_1.0CE43460
0CE448B8 test eax, eax
[COLOR="Red"]0CE448BA jnz short 0CE4491F <---------改了这个跳转就运行出错[/COLOR]
0CE448BC push 0CE71720 ; 机器码:
0CE448C1 lea ecx, dword ptr [esp+106BC]
0CE448C8 push ecx
0CE448C9 call ebp
0CE448CB lea eax, dword ptr [esp+106B8]
0CE448D2 lea edx, dword ptr [eax+1]
0CE448D5 /mov cl, byte ptr [eax]
0CE448D7 |add eax, 1
0CE448DA |test cl, cl
0CE448DC \jnz short 0CE448D5
0CE448DE sub eax, edx
0CE448E0 lea edx, dword ptr [esp+eax+106B8]
0CE448E7 push edx
0CE448E8 lea ecx, dword ptr [esp+1C]
0CE448EC call 0CE429C0
0CE448F1 push 0CE704C4
0CE448F6 lea edx, dword ptr [esp+106BC]
0CE448FD mov ecx, 0CE8DC60
0CE44902 call 0CE3FAE0
0CE44907 push 30 ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
0CE44909 push 0CE7172C ; |启动失败
0CE4490E push 0CE71738 ; |注册文件或启动码错误,请检测启动码或重新注册 !
0CE44913 push 0 ; |hOwner = NULL
0CE44915 call dword ptr [<&USER32.MessageBoxA>] ; \MessageBoxA
0CE4491B xor eax, eax
0CE4491D jmp short 0CE44930
[COLOR="Red"]0CE4491F lea ebx, dword ptr [esp+1A0][/COLOR]
0CE44926 call 0CE3D7E0
0CE4492B mov eax, 1
0CE44930 mov ecx, dword ptr [esp+108BC]
0CE44937 mov dword ptr fs:[0], ecx
0CE4493E pop ecx
0CE4493F pop edi
0CE44940 pop esi
0CE44941 pop ebp
0CE44942 pop ebx
0CE44943 mov ecx, dword ptr [esp+108A4]
0CE4494A xor ecx, esp
0CE4494C call 0CE52DF3
0CE44951 add esp, 108B4
0CE44957 retn
改了0CE448BA处的跳转程序最后会运行到一个全0的地址
00E4EE78 0000 add byte ptr [eax], al
然后自然是运行不下去了,有兴趣的帮我看下哪出问题了
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课