|
发表于 2010-1-14 12:15:45
|显示全部楼层
今天用2种方法教大家脱北斗主程序
方法一:ESP定律法
方法二:“巧”方法
大家应该知道北斗主程序是VC++写的
那么根据VC++特征
0042481F 55 push ebp
00424820 8BEC mov ebp,esp
00424822 6A FF push -1
00424824 68 C8674400 push nspack_1.004467C8
00424829 68 CC3C4200 push nspack_1.00423CCC
0042482E 64:A1 00000000 mov eax,dword ptr fs:[0]
00424834 50 push eax
00424835 64:8925 0000000>mov dword ptr fs:[0],esp
0042483C 83EC 58 sub esp,58
0042483F 53 push ebx
00424840 56 push esi
00424841 57 push edi
00424842 8965 E8 mov dword ptr ss:[ebp-18],esp
00424845 FF15 A0224400 call dword ptr ds:[4422A0] ; kernel32.GetVersion
0042484B 33D2 xor edx,edx
大家要注意到的就是GetVersion这个函数~~
那么我们在命令行下断点
at GetVersion
77E5D142 k> 64:A1 18000000 mov eax,dword ptr fs:[18] //暂停在这里
77E5D148 8B48 30 mov ecx,dword ptr ds:[eax+30]
77E5D14B 8B81 B0000000 mov eax,dword ptr ds:[ecx+B0]
77E5D151 0FB791 AC000000 movzx edx,word ptr ds:[ecx+AC]
77E5D158 83F0 FE xor eax,FFFFFFFE
77E5D15B C1E0 0E shl eax,0E
77E5D15E 0BC2 or eax,edx
77E5D160 C1E0 08 shl eax,8
77E5D163 0B81 A8000000 or eax,dword ptr ds:[ecx+A8]
77E5D169 C1E0 08 shl eax,8
77E5D16C 0B81 A4000000 or eax,dword ptr ds:[ecx+A4]
77E5D172 C3 retn //在段尾F2下断,Shift+F9运行中断下来!F8单步!
0042484B 33D2 xor edx,edx //返回到这里了,拉上去看看^-^
0042484D 8AD4 mov dl,ah
---------------------------------------------------------------------------------
喜欢玩马的朋友经常用北斗在加壳 |
|