因工作需要,在网上找了一款可以在屏幕上画画的软件,屏幕画笔,打开一看竟然是共享软件,没办法,抄家伙了~.....
(程序有壳,先脱壳....)
该程序是重启验证,所以很快就定位到了关键点~
代码如下
//////////////////////////////////////////
代码:
004CB8FC /. 55 push ebp 004CB8FD |. 8BEC mov ebp, esp 004CB8FF |. 33C9 xor ecx, ecx 004CB901 |. 51 push ecx 004CB902 |. 51 push ecx 004CB903 |. 51 push ecx 004CB904 |. 51 push ecx 004CB905 |. 51 push ecx 004CB906 |. 51 push ecx 004CB907 |. 53 push ebx 004CB908 |. 56 push esi 004CB909 |. 8BF0 mov esi, eax 004CB90B |. 33C0 xor eax, eax 004CB90D |. 55 push ebp 004CB90E |. 68 3DBA4C00 push 004CBA3D 004CB913 |. 64:FF30 push dword ptr fs:[eax] 004CB916 |. 64:8920 mov dword ptr fs:[eax], esp 004CB919 |. B8 C8214D00 mov eax, 004D21C8 004CB91E |. E8 498AF3FF call 0040436C 004CB923 |. 8D45 FC lea eax, dword ptr [ebp-4] 004CB926 |. E8 89F9FFFF call 004CB2B4 004CB92B |. 8B55 FC mov edx, dword ptr [ebp-4] 004CB92E |. B8 C8214D00 mov eax, 004D21C8 004CB933 |. E8 888AF3FF call 004043C0 004CB938 |. 8D45 F8 lea eax, dword ptr [ebp-8] 004CB93B |. E8 28FAFFFF call 004CB368 004CB940 |. 8B55 F8 mov edx, dword ptr [ebp-8] 004CB943 |. B8 BC214D00 mov eax, 004D21BC 004CB948 |. E8 738AF3FF call 004043C0 004CB94D |. 8D45 F4 lea eax, dword ptr [ebp-C] 004CB950 |. E8 53FBFFFF call 004CB4A8 004CB955 |. 8B55 F4 mov edx, dword ptr [ebp-C] 004CB958 |. B8 C0214D00 mov eax, 004D21C0 004CB95D |. E8 5E8AF3FF call 004043C0 004CB962 |. E8 D1F3FFFF call 004CAD38 004CB967 |. A1 BC214D00 mov eax, dword ptr [4D21BC] 004CB96C |. BA 54BA4C00 mov edx, 004CBA54 ; 220.220.220.1 004CB971 |. E8 F28DF3FF call 00404768 004CB976 |. 75 0F jnz short 004CB987 004CB978 |. E8 BFFDFFFF call 004CB73C 004CB97D |. E8 52F7FFFF call 004CB0D4 004CB982 |. E8 69F6FFFF call 004CAFF0 004CB987 |> C605 B4214D00>mov byte ptr [4D21B4], 0 004CB98E |. B2 01 mov dl, 1 004CB990 |. A1 087E4600 mov eax, dword ptr [467E08] 004CB995 |. E8 6EC5F9FF call 00467F08 004CB99A |. 8BD8 mov ebx, eax 004CB99C |. BA 01000080 mov edx, 80000001 004CB9A1 |. 8BC3 mov eax, ebx 004CB9A3 |. E8 00C6F9FF call 00467FA8 004CB9A8 |. B1 01 mov cl, 1 004CB9AA |. BA 6CBA4C00 mov edx, 004CBA6C ; software\epen 004CB9AF |. 8BC3 mov eax, ebx 004CB9B1 |. E8 56C6F9FF call 0046800C 004CB9B6 |. 8D4D F0 lea ecx, dword ptr [ebp-10] 004CB9B9 |. BA 84BA4C00 mov edx, 004CBA84 ; reguser 004CB9BE |. 8BC3 mov eax, ebx 004CB9C0 |. E8 0FC8F9FF call 004681D4 004CB9C5 |. 8B55 F0 mov edx, dword ptr [ebp-10] 004CB9C8 |. B8 B8214D00 mov eax, 004D21B8 004CB9CD |. E8 EE89F3FF call 004043C0 004CB9D2 |. 8D4D EC lea ecx, dword ptr [ebp-14] 004CB9D5 |. BA 94BA4C00 mov edx, 004CBA94 ; regno 004CB9DA |. 8BC3 mov eax, ebx 004CB9DC |. E8 F3C7F9FF call 004681D4 004CB9E1 |. 8B45 EC mov eax, dword ptr [ebp-14] 004CB9E4 |. 50 push eax 004CB9E5 |. 8D4D E8 lea ecx, dword ptr [ebp-18] 004CB9E8 |. BA A4BA4C00 mov edx, 004CBAA4 ; epenchina 004CB9ED |. A1 B8214D00 mov eax, dword ptr [4D21B8] 004CB9F2 |. E8 8DD6FFFF call 004C9084 ; 算法 004CB9F7 |. 8B55 E8 mov edx, dword ptr [ebp-18] ; 运行到这里的时候,出现了注册码 004CB9FA |. 58 pop eax ; (initial cpu selection) 004CB9FB |. E8 688DF3FF call 00404768 004CBA00 |. 75 07 jnz short 004CBA09 ; 关键跳 004CBA02 |. C605 B4214D00>mov byte ptr [4D21B4], 1 ; 全局注册标志 004CBA09 |> 8BC3 mov eax, ebx 004CBA0B |. E8 D07BF3FF call 004035E0 004CBA10 |. B2 02 mov dl, 2 004CBA12 |. 8BC6 mov eax, esi 004CBA14 |. E8 F7F9F8FF call 0045B410 004CBA19 |. 33D2 xor edx, edx 004CBA1B |. 8BC6 mov eax, esi 004CBA1D |. E8 76F2F8FF call 0045AC98 004CBA22 |. 33C0 xor eax, eax 004CBA24 |. 5A pop edx 004CBA25 |. 59 pop ecx 004CBA26 |. 59 pop ecx 004CBA27 |. 64:8910 mov dword ptr fs:[eax], edx 004CBA2A |. 68 44BA4C00 push 004CBA44 004CBA2F |> 8D45 E8 lea eax, dword ptr [ebp-18] 004CBA32 |. BA 06000000 mov edx, 6 004CBA37 |. E8 5489F3FF call 00404390 004CBA3C \. C3 retn
上面的代码就是明显的从注册表里读取账号和注册码,然后验证,爆破就没意思!
我是个懒家伙,不管算法是多容易,我重来都是不愿意看的!
所以,我的目的是让程序成为注册机,清理下思路,我们要如何改造呢
首先,得有个程序来修改注册表,然后让程序自己算出注册码给我们!
上面说过,我很懒的,连编程语言都用E语言写

//////////////////////////////////////////////////////
.版本 2
写注册项 (#现行用户, “Software\EPen\RegUser”, 编辑框1.内容)
运行 (“mat.exe”, 假, )
结束 ()
////////////////////////////////////////////////////
那程序我是这样修改的
代码:
004CB9F2 E8 8DD6FFFF call 004C9084 ; 算法不变 004CB9F7 6A 00 push 0 004CB9F9 52 push edx ; 这里是用户名 004CB9FA 8B55 E8 mov edx, dword ptr [ebp-18] ; 这里是真正的注册码 004CB9FD 52 push edx 004CB9FE 6A 00 push 0 004CBA00 FF15 68324D00 call dword ptr [<&user32.MessageBoxA>>; 弹出对话框 004CBA06 6A 00 push 0 004CBA08 FF15 28324D00 call dword ptr [<&kernel32.ExitProces>; 结束程序 004CBA0E 90 nop 004CBA0F 90 nop
jmp 004CB8FC
将上面代码保存为文件mat.exe,
运行,没问题,OK
再压缩一下,好了,我们的注册机已经出世了
效果大家自己看附件
偷偷的告诉大家
(软件下载地址:
http://www.skycn.com/soft/25336.html)