软件下载 地址 http://www.mynsw.net/NSWREC16.rar
这个程序注册后还是一直弹他的网站,这里我就不去掉他了,我又没打算用这个工具
程序查壳是 ASProtect 1.2x - 1.3x [Registered] -> Alexey Solodovnikov 这个壳网上有教程,这里我就不多说了
脱壳后载入OD到
00499AA4 > $ 55 push ebp
00499AA5 . 8BEC mov ebp,esp
00499AA7 . 83C4 F0 add esp,-0x10
00499AAA . 53 push ebx
00499AAB . B8 7C974900 mov eax,de_NSWSe.0049977C
00499AB0 . E8 9FD1F6FF call de_NSWSe.00406C54
00499AB5 . 8B1D 74BF4900 mov ebx,dword ptr ds:[0x49BF74] ; de_NSWSe.0049DC8C
00499ABB . 8B03 mov eax,dword ptr ds:[ebx]
00499ABD . E8 C2AAFCFF call de_NSWSe.00464584
00499AC2 . 8B03 mov eax,dword ptr ds:[ebx]
明显的 Borland Delphi 6.0 - 7.0 程序我们可以查看字符
分析一下,查看字符,什么???什么也没有查到,别吓我,我可以菜虫,连鸟都不算上, 我只有喂鸟的份
运行程序看看,提示重启
那就先看看程序的机器码和注册码保存到什么地方了吧
载入OD运行,输入假码,提示的时候暂停,点K 最下面的一个,然后下断,向下跟
00497737 |. E8 C4D3FAFF call de_NSWSe.00444B00 这个可以跳过
0049773C |. 837D FC 00 cmp [local.1],0x0 不懂汇编,说错了使劲砸我吧 ,这里应该是注册码为0的话就跳走吧
00497740 |. 74 38 je Xde_NSWSe.0049777A
00497742 |. 8D55 F8 lea edx,[local.2]
00497745 |. A1 A0ED4900 mov eax,dword ptr ds:[0x49EDA0]
0049774A |. 8B80 FC020000 mov eax,dword ptr ds:[eax+0x2FC]
00497750 |. E8 ABD3FAFF call de_NSWSe.00444B00
00497755 |. 8B55 F8 mov edx,[local.2]
00497758 |. A1 B0BD4900 mov eax,dword ptr ds:[0x49BDB0]
0049775D |. 8B00 mov eax,dword ptr ds:[eax]
0049775F |. E8 38FEFFFF call de_NSWSe.0049759C
00497764 |. B8 A8774900 mov eax,de_NSWSe.004977A8
00497769 |. E8 5E6EFAFF call de_NSWSe.0043E5CC 这就是提示的那重启的CALL
0049776E |. A1 94C04900 mov eax,dword ptr ds:[0x49C094]
00497773 |. 8B00 mov eax,dword ptr ds:[eax]
重新载入程序
在00497737 |. E8 C4D3FAFF call de_NSWSe.00444B00 下断 ,在下面可以看到有个RegmyNSW 的文件,我打开后发现是放注册码和机器码的。找到就好
用插件查不到字符,哎,要不就得费事下文件读取断点。我这里就不弄那么麻烦了。我用OD的自带的功能,查看所有参考文件字串 ,发现有两处RegmyNSW 所以在两个地方都下断,重新载入运行
00489976 . B9 E09C4800 mov ecx,de_NSWSe.00489CE0 ; ASCII "RegmyNSW.cn"
00497619 . B9 08774900 mov ecx,de_NSWSe.00497708 ; ASCII "RegmyNSW.cn"
下好断后运行,发现断在
00489976 . B9 E09C4800 mov ecx,de_NSWSe.00489CE0 ; ASCII "RegmyNSW.cn"
0048997B . E8 50B1F7FF call de_NSWSe.00404AD0
00489980 . 8B45 F0 mov eax,dword ptr ss:[ebp-0x10]
00489983 . E8 E0F7F7FF call de_NSWSe.00409168
00489988 . 84C0 test al,al
0048998A . 0F84 0A030000 je de_NSWSe.00489C9A
00489990 . 33C0 xor eax,eax
00489992 . 55 push ebp
00489993 . 68 029A4800 push de_NSWSe.00489A02
00489998 . 64:FF30 push dword ptr fs:[eax]
0048999B . 64:8920 mov dword ptr fs:[eax],esp
0048999E . 8B55 F0 mov edx,dword ptr ss:[ebp-0x10]
004899A1 . 8D85 20FEFFFF lea eax,dword ptr ss:[ebp-0x1E0]
004899A7 . E8 F494F7FF call de_NSWSe.00402EA0
004899AC . 8D85 20FEFFFF lea eax,dword ptr ss:[ebp-0x1E0]
004899B2 . E8 7992F7FF call de_NSWSe.00402C30
004899B7 . E8 948FF7FF call de_NSWSe.00402950
004899BC . 8D55 F4 lea edx,dword ptr ss:[ebp-0xC]
004899BF . 8D85 20FEFFFF lea eax,dword ptr ss:[ebp-0x1E0]
004899C5 . E8 C298F7FF call de_NSWSe.0040328C
004899CA . 8D85 20FEFFFF lea eax,dword ptr ss:[ebp-0x1E0]
004899D0 . E8 2399F7FF call de_NSWSe.004032F8
004899D5 . E8 768FF7FF call de_NSWSe.00402950
004899DA . 8D55 EC lea edx,dword ptr ss:[ebp-0x14]
004899DD . 8D85 20FEFFFF lea eax,dword ptr ss:[ebp-0x1E0]
004899E3 . E8 A498F7FF call de_NSWSe.0040328C
004899E8 . 8D85 20FEFFFF lea eax,dword ptr ss:[ebp-0x1E0]
004899EE . E8 0599F7FF call de_NSWSe.004032F8
004899F3 . E8 588FF7FF call de_NSWSe.00402950
004899F8 . 33C0 xor eax,eax
004899FA . 5A pop edx
004899FB . 59 pop ecx
004899FC . 59 pop ecx
004899FD . 64:8910 mov dword ptr fs:[eax],edx
00489A00 . EB 24 jmp Xde_NSWSe.00489A26
00489A02 .^ E9 1DA5F7FF jmp de_NSWSe.00403F24
00489A07 . 8D85 20FEFFFF lea eax,dword ptr ss:[ebp-0x1E0]
00489A0D . E8 5695F7FF call de_NSWSe.00402F68
00489A12 . E8 398FF7FF call de_NSWSe.00402950
00489A17 . E8 70A8F7FF call de_NSWSe.0040428C
00489A1C . E9 79020000 jmp de_NSWSe.00489C9A
00489A21 . E8 66A8F7FF call de_NSWSe.0040428C
00489A26 > 8D85 20FEFFFF lea eax,dword ptr ss:[ebp-0x1E0]
00489A2C . E8 3795F7FF call de_NSWSe.00402F68
00489A31 . E8 1A8FF7FF call de_NSWSe.00402950
00489A36 . 8D45 F4 lea eax,dword ptr ss:[ebp-0xC]
00489A39 . 50 push eax
00489A3A . 8B45 FC mov eax,dword ptr ss:[ebp-0x4]
00489A3D . 8B00 mov eax,dword ptr ds:[eax]
00489A3F . B9 0F000000 mov ecx,0xF
00489A44 . BA 01000000 mov edx,0x1
00489A49 . E8 8EB2F7FF call de_NSWSe.00404CDC
00489A4E . 33DB xor ebx,ebx
00489A50 . 8B45 F4 mov eax,dword ptr ss:[ebp-0xC]
00489A53 . E8 2CB0F7FF call de_NSWSe.00404A84
00489A58 . 85C0 test eax,eax
00489A5A . 7E 13 jle Xde_NSWSe.00489A6F
00489A5C . BA 01000000 mov edx,0x1
00489A61 > 8B4D F4 mov ecx,dword ptr ss:[ebp-0xC]
00489A64 . 0FB64C11 FF movzx ecx,byte ptr ds:[ecx+edx-0x1]
00489A69 . 03D9 add ebx,ecx
00489A6B . 42 inc edx
00489A6C . 48 dec eax
00489A6D .^ 75 F2 jnz Xde_NSWSe.00489A61
00489A6F > 69C3 B5000000 imul eax,ebx,0xB5
00489A75 . 05 B6120C00 add eax,0xC12B6
00489A7A . 8BD8 mov ebx,eax
00489A7C . 8D55 F0 lea edx,dword ptr ss:[ebp-0x10]
00489A7F . 8BC3 mov eax,ebx
00489A81 . E8 72F2F7FF call de_NSWSe.00408CF8
00489A86 . 8D45 F4 lea eax,dword ptr ss:[ebp-0xC]
00489A89 . 8B55 F0 mov edx,dword ptr ss:[ebp-0x10]
00489A8C . E8 D3ADF7FF call de_NSWSe.00404864
00489A91 . 8D45 F0 lea eax,dword ptr ss:[ebp-0x10]
00489A94 . 8B55 EC mov edx,dword ptr ss:[ebp-0x14]
00489A97 . E8 C8ADF7FF call de_NSWSe.00404864
00489A9C . 8B45 F4 mov eax,dword ptr ss:[ebp-0xC]
00489A9F . 8B55 F0 mov edx,dword ptr ss:[ebp-0x10]
00489AA2 . E8 21B1F7FF call de_NSWSe.00404BC8 此处为关键CALL 这里假码和真假比较,可以在这里做内存注册机
00489AA7 . 75 09 jnz Xde_NSWSe.00489AB2 这里为关键跳,爆破点在这里,NOP 掉就成注册版的啦
00489AA9 . C645 FB 01 mov byte ptr ss:[ebp-0x5],0x1
00489AAD . E9 E8010000 jmp de_NSWSe.00489C9A
00489AB2 > 8D45 F4 lea eax,dword ptr ss:[ebp-0xC]
00489AB5 . 50 push eax
让大家见笑了
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法