一款带宽管理软件的版本控制分析
最近,放假了,呵呵,偶虽然水平有限,但依旧死心不改,因为破解有时候的确很有趣!
今天,我拿一款国外软件来练练手。
软件名称:JDSoft Bandwidth Manager 1.0
下载地址:http://www.newhua.com/soft/78994.htm
软件介绍:当带宽管理已经成为大型商业企业和 ISP 的积年问题的时候,现在这个问题同样困扰着家庭和小型商业网络。通过监视你的网络传输量同时限制带宽的方式,该软件在缩减你的总体带宽需要的同时允许重要的商业网络应用稳定地运行从而立即提高网络的效率。
该软件安装后,查壳,呵呵,无壳!本来准备玩玩猫捉老鼠(追注册码)的游戏的,但是偶真的水平有限,楞没把算法找出来~~(还得请各位大侠指教)
不过,偶通过超级字符串参考,发现了版本控制的“关键点”~~遂成此文~~
先来一堆代码,不要被吓倒哦,其实看不看无所谓,且请看后面的一点点分析。
0040B6D0 /$ 64:A1 0000000>mov eax, dword ptr fs:[0]
0040B6D6 |. 6A FF push -1
0040B6D8 |. 68 625D4400 push 00445D62
0040B6DD |. 50 push eax
0040B6DE |. 64:8925 00000>mov dword ptr fs:[0], esp
0040B6E5 |. 81EC 64010000 sub esp, 164
0040B6EB |. 53 push ebx
0040B6EC |. 56 push esi
0040B6ED |. 8BB424 7C0100>mov esi, dword ptr [esp+17C]
0040B6F4 |. 8A06 mov al, byte ptr [esi]
0040B6F6 |. 3C 03 cmp al, 3 ; Switch (cases 1..4)
0040B6F8 |. 0F84 28020000 je 0040B926
0040B6FE |. 3C 04 cmp al, 4
0040B700 |. 75 71 jnz short 0040B773
0040B702 |. 8A46 01 mov al, byte ptr [esi+1] ; Case 4 of switch 0040B6F6
0040B705 |. 33DB xor ebx, ebx
0040B707 |. 3AC3 cmp al, bl
0040B709 |. 74 34 je short 0040B73F
0040B70B |. E8 A0A60200 call 00435DB0
0040B710 |. 3BC3 cmp eax, ebx
0040B712 |. 74 18 je short 0040B72C
0040B714 |. 8B10 mov edx, dword ptr [eax]
0040B716 |. 8BC8 mov ecx, eax
0040B718 |. FF52 74 call dword ptr [edx+74]
0040B71B |. 68 A0764500 push 004576A0 ; jdsoft bandwidth manager - home edition
0040B720 |. 8BC8 mov ecx, eax
0040B722 |. E8 AD960200 call 00434DD4
0040B727 |. E9 FA010000 jmp 0040B926
0040B72C |> 33C0 xor eax, eax
0040B72E |. 68 A0764500 push 004576A0 ; jdsoft bandwidth manager - home edition
0040B733 |. 8BC8 mov ecx, eax
0040B735 |. E8 9A960200 call 00434DD4
0040B73A |. E9 E7010000 jmp 0040B926
0040B73F |> E8 6CA60200 call 00435DB0
0040B744 |. 3BC3 cmp eax, ebx
0040B746 |. 74 18 je short 0040B760
0040B748 |. 8B10 mov edx, dword ptr [eax]
0040B74A |. 8BC8 mov ecx, eax
0040B74C |. FF52 74 call dword ptr [edx+74]
0040B74F |. 68 44764500 push 00457644 ; jdsoft bandwidth manager - enterprise edition
0040B754 |. 8BC8 mov ecx, eax
0040B756 |. E8 79960200 call 00434DD4
0040B75B |. E9 C6010000 jmp 0040B926
0040B760 |> 33C0 xor eax, eax
0040B762 |. 68 44764500 push 00457644 ; jdsoft bandwidth manager - enterprise edition
0040B767 |. 8BC8 mov ecx, eax
0040B769 |. E8 66960200 call 00434DD4
0040B76E |. E9 B3010000 jmp 0040B926
0040B773 |> 3C 01 cmp al, 1
0040B775 |. 74 50 je short 0040B7C7
0040B777 |. 3C 02 cmp al, 2
0040B779 |. 74 4C je short 0040B7C7
0040B77B |. 8B46 04 mov eax, dword ptr [esi+4] ; Default case of switch 0040B6F6
0040B77E |. 8D4C24 6C lea ecx, dword ptr [esp+6C]
0040B782 |. 50 push eax
0040B783 |. 68 DC754500 push 004575DC ; jdsoft bandwidth manager - trial version (%u days)
0040B788 |. 51 push ecx
0040B789 |. E8 02510100 call 00420890
0040B78E |. 83C4 0C add esp, 0C
0040B791 |. E8 1AA60200 call 00435DB0
0040B796 |. 33DB xor ebx, ebx
0040B798 |. 3BC3 cmp eax, ebx
0040B79A |. 74 18 je short 0040B7B4
0040B79C |. 8B10 mov edx, dword ptr [eax]
0040B79E |. 8BC8 mov ecx, eax
0040B7A0 |. FF52 74 call dword ptr [edx+74]
0040B7A3 |. 8D4C24 6C lea ecx, dword ptr [esp+6C]
0040B7A7 |. 51 push ecx
0040B7A8 |. 8BC8 mov ecx, eax
0040B7AA |. E8 25960200 call 00434DD4
0040B7AF |. E9 72010000 jmp 0040B926
0040B7B4 |> 8D4C24 6C lea ecx, dword ptr [esp+6C]
0040B7B8 |. 33C0 xor eax, eax
0040B7BA |. 51 push ecx
0040B7BB |. 8BC8 mov ecx, eax
0040B7BD |. E8 12960200 call 00434DD4
0040B7C2 |. E9 5F010000 jmp 0040B926
0040B7C7 |> 33DB xor ebx, ebx ; Cases 1,2 of switch 0040B6F6
0040B7C9 |. 8D4C24 0C lea ecx, dword ptr [esp+C]
0040B7CD |. 53 push ebx
0040B7CE |. E8 8D5B0000 call 00411360
0040B7D3 |. 899C24 740100>mov dword ptr [esp+174], ebx
0040B7DA |. E8 D1A50200 call 00435DB0
0040B7DF |. 3BC3 cmp eax, ebx
0040B7E1 |. 74 09 je short 0040B7EC
0040B7E3 |. 8B10 mov edx, dword ptr [eax]
0040B7E5 |. 8BC8 mov ecx, eax
0040B7E7 |. FF52 74 call dword ptr [edx+74]
0040B7EA |. EB 02 jmp short 0040B7EE
0040B7EC |> 33C0 xor eax, eax
0040B7EE |> 68 88754500 push 00457588 ; jdsoft bandwidth manager - trial expired!
0040B7F3 |. 8BC8 mov ecx, eax
0040B7F5 |. E8 DA950200 call 00434DD4
0040B7FA |. 803E 02 cmp byte ptr [esi], 2
0040B7FD |. 0F85 E4000000 jnz 0040B8E7
0040B803 |. 68 58754500 push 00457558 ; unfortunately the registration information (
通过本人的OD跟踪调试发现:
0040B6F6 |. 3C 03 cmp al, 3 ; Switch (cases 1..4)
这一行开始程序版本的判断。
al=0 试用版本,缺省选项
al=1,2 试用版本过期
al=3 直接跳过检查,无版本信息,或者JDSoft Bandwidth Service此项服务未启动!
al=4 版本识别:分为家用版和企业版
我是通过修改时间,以及操纵JDSoft Bandwidth Service此项服务得到以上结果的。
程序版本分为试用版、家用版和企业版三个版本。
以下分别给出三个版本限制去除的简单方法。
试用版:
0040B77B |. 8B46 04 mov eax, dword ptr [esi+4] ; Default case of
switch 0040B6F6
修改为:
0040B6F4 B0 04 mov al, xx ; 这里xx需要满足0<=xx<30
企业版~~~~
0040B6F4 8A06 mov al, byte ptr [esi]
修改为:
0040B6F4 B0 04 mov al, 4
家用版~~~~
0040B702 8A46 01 mov al, byte ptr [esi+1]
修改为:
0040B702 B0 01 mov al, 1
0040B704 90 nop
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)