逆向仙剑5,准备直接脱壳,有很多反调试,自己手动弄一遍估计要累死,总是一不留神就让程序跑起来了。
后来直接附加调试,把激活页面跳过了,但是点游戏的时候,却退出了,程序跟壳之间有交互,
在跳过激活的最后一处有一次验证,这个验证CALL进入到壳的代码,是壳把验证的结果之前就保存好了,
然后通过壳的的代码得出验证结果,查看结果,显示该显示的内容。
壳的CALL
03C43F4C 0266D8E0 Pal5.0266D8E0
03C43F50 0266DB20 Pal5.0266DB20
03C43F54 0266FB90 Pal5.0266FB90
03C43F58 0266E0D0 Pal5.0266E0D0
03C43F5C 0266E3D0 Pal5.0266E3D0
03C43F60 0266E690 Pal5.0266E690
03C43F64 0266E7F0 Pal5.0266E7F0
03C43F68 0266EB00 Pal5.0266EB00
03C43F6C 0266ED70 Pal5.0266ED70
03C43F70 0266F090 Pal5.0266F090
03C43F74 0266F310 Pal5.0266F310
03C43F78 0266F510 Pal5.0266F510
03C43F7C 0266F630 Pal5.0266F630
03C43F80 0266D680 Pal5.0266D680
03C43F84 00600000 Pal5.00600000
03C43F88 00000008
03C43F8C 0000008C
03C43F90 0266D570 Pal5.0266D570
03C43F94 0266D4B0 Pal5.0266D4B0
03C43F98 0266D2C0 Pal5.0266D2C0
03C43F9C 0266D3A0 Pal5.0266D3A0
03C43FA0 0266D020 Pal5.0266D020
03C43FA4 0266CCA0 Pal5.0266CCA0
03C43FA8 0266CC00 Pal5.0266CC00
03C43FAC 0266C980 Pal5.0266C980
03C43FB0 0266C6A0 Pal5.0266C6A0
03C43FB4 0266C600 Pal5.0266C600
03C43FB8 0266C3A0 Pal5.0266C3A0
03C43FBC 0266C2C0 Pal5.0266C2C0
03C43FC0 0266BFE0 Pal5.0266BFE0
03C43FC4 0266BBD0 Pal5.0266BBD0
03C43FC8 0266FFA0 Pal5.0266FFA0
03C43FCC 0266B9B0 Pal5.0266B9B0
03C43FD0 0266B6D0 Pal5.0266B6D0
03C43FD4 0266B400 Pal5.0266B400
如何才能让游戏正常启动,猜测启动游戏的代码在壳里面,猜测启动游戏的代码没加密,但是在启动的时候执行了壳的代码,让最后达不到预期效果。
以下是启动游戏代码
06AF1EB0 8B4424 04 mov eax,dword ptr ss:[esp+0x4]
06AF1EB4 8B48 20 mov ecx,dword ptr ds:[eax+0x20]
06AF1EB7 51 push ecx
06AF1EB8 FF15 3874B206 call dword ptr ds:[<&USER32.GetParent>] ; user32.GetParent
06AF1EBE 50 push eax
06AF1EBF E8 38F80000 call paul.06B016FC
06AF1EC4 8378 78 03 cmp dword ptr ds:[eax+0x78],0x3
06AF1EC8 75 07 jnz short paul.06AF1ED1
06AF1ECA C740 78 0000000>mov dword ptr ds:[eax+0x78],0x0
06AF1ED1 8B10 mov edx,dword ptr ds:[eax]
06AF1ED3 8BC8 mov ecx,eax
06AF1ED5 8B82 50010000 mov eax,dword ptr ds:[edx+0x150]
06AF1EDB FFE0 jmp eax