好友
阅读权限30
听众
最后登录1970-1-1
|
由于是试用版,导入无法使用,
软件全名:仪器设备管理系统v6.0(试用版)
软件官网下载地址:http://www.haoysoft.com//Upload/ ... e6da6/sbgl_v6.0.rar
这个东西居然卖1500元。真贵啊。
软件打开有100次试用次数,程序是delphi写的。
本人使用dede和pexplorer查壳都没有正式版的i导入功能。所以试用版本,无法破解出正式版的功能。
先搜索字符串,如图:
根据软件下面提示的试用次数,可以找到字符串:次试用
双击关键字。进入汇编窗口。
到了这里,我们到段首下段,看看有什么有用的信息。
0068AD80 $ 55 push ebp
0068AD81 . 8BEC mov ebp,esp
0068AD83 . B9 06000000 mov ecx,0x6
0068AD88 > 6A 00 push 0x0
0068AD8A . 6A 00 push 0x0
0068AD8C . 49 dec ecx
0068AD8D .^ 75 F9 jnz short SBGL.0068AD88
0068AD8F . 51 push ecx
0068AD90 . 53 push ebx
0068AD91 . 56 push esi ; SBGL.00976E0C
0068AD92 . 57 push edi
0068AD93 . 8945 FC mov dword ptr ss:[ebp-0x4],eax
0068AD96 . 33C0 xor eax,eax
0068AD98 . 55 push ebp
0068AD99 . 68 B8B06800 push SBGL.0068B0B8
0068AD9E . 64:FF30 push dword ptr fs:[eax]
0068ADA1 . 64:8920 mov dword ptr fs:[eax],esp
0068ADA4 . 8D45 EC lea eax,dword ptr ss:[ebp-0x14]
0068ADA7 . E8 48040000 call SBGL.0068B1F4
0068ADAC . 8D45 E8 lea eax,dword ptr ss:[ebp-0x18]
0068ADAF . B9 D0B06800 mov ecx,SBGL.0068B0D0 ; \sysnum.ini
0068ADB4 . 8B55 EC mov edx,dword ptr ss:[ebp-0x14]
0068ADB7 . E8 E0A3D7FF call SBGL.0040519C
0068ADBC . 8B45 E8 mov eax,dword ptr ss:[ebp-0x18]
0068ADBF . E8 5002D8FF call SBGL.0040B014
0068ADC4 . 84C0 test al,al
0068ADC6 . 75 68 jnz short SBGL.0068AE30
0068ADC8 . B2 01 mov dl,0x1
0068ADCA . A1 F4FC4100 mov eax,dword ptr ds:[0x41FCF4] ; X3B
0068ADCF . E8 6891D7FF call SBGL.00403F3C
0068ADD4 . 8BD8 mov ebx,eax
0068ADD6 . 8D45 E4 lea eax,dword ptr ss:[ebp-0x1C]
0068ADD9 . B9 D0B06800 mov ecx,SBGL.0068B0D0 ; \sysnum.ini
0068ADDE . 8B55 EC mov edx,dword ptr ss:[ebp-0x14]
0068ADE1 . E8 B6A3D7FF call SBGL.0040519C
0068ADE6 . 8B4D E4 mov ecx,dword ptr ss:[ebp-0x1C]
0068ADE9 . B2 01 mov dl,0x1
0068ADEB . A1 A0ED4400 mov eax,dword ptr ds:[0x44EDA0] ; 祉D
0068ADF0 . E8 5B40DCFF call SBGL.0044EE50
0068ADF5 . 8BF0 mov esi,eax
0068ADF7 . 8BC3 mov eax,ebx
0068ADF9 . 8B10 mov edx,dword ptr ds:[eax]
0068ADFB . FF52 44 call dword ptr ds:[edx+0x44]
0068ADFE . 8BCB mov ecx,ebx
0068AE00 . BA E4B06800 mov edx,SBGL.0068B0E4 ; sbgl_v6.0
0068AE05 . 8BC6 mov eax,esi ; SBGL.00976E0C
0068AE07 . 8B38 mov edi,dword ptr ds:[eax]
0068AE09 . FF57 48 call dword ptr ds:[edi+0x48]
0068AE0C . 68 F8B06800 push SBGL.0068B0F8 ; 1
0068AE11 . BA E4B06800 mov edx,SBGL.0068B0E4 ; sbgl_v6.0
0068AE16 . B9 04B16800 mov ecx,SBGL.0068B104 ; Num
0068AE1B . 8BC6 mov eax,esi ; SBGL.00976E0C
0068AE1D . 8B38 mov edi,dword ptr ds:[eax]
0068AE1F . FF57 04 call dword ptr ds:[edi+0x4]
0068AE22 . 8BC3 mov eax,ebx
0068AE24 . E8 4391D7FF call SBGL.00403F6C
0068AE29 . 8BC6 mov eax,esi ; SBGL.00976E0C
0068AE2B . E8 3C91D7FF call SBGL.00403F6C
0068AE30 > B2 01 mov dl,0x1
0068AE32 . A1 F4FC4100 mov eax,dword ptr ds:[0x41FCF4] ; X3B
0068AE37 . E8 0091D7FF call SBGL.00403F3C
0068AE3C . 8BD8 mov ebx,eax
0068AE3E . 8D45 E0 lea eax,dword ptr ss:[ebp-0x20]
0068AE41 . B9 D0B06800 mov ecx,SBGL.0068B0D0 ; \sysnum.ini
0068AE46 . 8B55 EC mov edx,dword ptr ss:[ebp-0x14]
0068AE49 . E8 4EA3D7FF call SBGL.0040519C
0068AE4E . 8B4D E0 mov ecx,dword ptr ss:[ebp-0x20]
0068AE51 . B2 01 mov dl,0x1
0068AE53 . A1 A0ED4400 mov eax,dword ptr ds:[0x44EDA0] ; 祉D
0068AE58 . E8 F33FDCFF call SBGL.0044EE50
0068AE5D . 8BF0 mov esi,eax
0068AE5F . 8BC3 mov eax,ebx
0068AE61 . 8B10 mov edx,dword ptr ds:[eax]
0068AE63 . FF52 44 call dword ptr ds:[edx+0x44]
0068AE66 . BA E4B06800 mov edx,SBGL.0068B0E4 ; sbgl_v6.0
0068AE6B . 8BCB mov ecx,ebx
0068AE6D . 8BC6 mov eax,esi ; SBGL.00976E0C
0068AE6F . 8B38 mov edi,dword ptr ds:[eax]
0068AE71 . FF57 48 call dword ptr ds:[edi+0x48]
0068AE74 . 8D45 F0 lea eax,dword ptr ss:[ebp-0x10]
0068AE77 . 50 push eax
0068AE78 . BA 04B16800 mov edx,SBGL.0068B104 ; Num
0068AE7D . 8BC3 mov eax,ebx
0068AE7F . 59 pop ecx ; SBGL.006AC0E9
0068AE80 . E8 CF98D9FF call SBGL.00424754
0068AE85 . 8D55 DC lea edx,dword ptr ss:[ebp-0x24]
0068AE88 . 8B45 F0 mov eax,dword ptr ss:[ebp-0x10]
0068AE8B . E8 A4F5D7FF call SBGL.0040A434
0068AE90 . 837D DC 00 cmp dword ptr ss:[ebp-0x24],0x0
0068AE94 . 75 24 jnz short SBGL.0068AEBA
0068AE96 . 68 F8B06800 push SBGL.0068B0F8 ; 1
0068AE9B . 68 04B16800 push SBGL.0068B104 ; Num
0068AEA0 . BA E4B06800 mov edx,SBGL.0068B0E4 ; sbgl_v6.0
0068AEA5 . 8BC6 mov eax,esi ; SBGL.00976E0C
0068AEA7 . 59 pop ecx ; SBGL.006AC0E9
0068AEA8 . 8B38 mov edi,dword ptr ds:[eax]
0068AEAA . FF57 04 call dword ptr ds:[edi+0x4]
0068AEAD . 8D45 F0 lea eax,dword ptr ss:[ebp-0x10]
0068AEB0 . BA F8B06800 mov edx,SBGL.0068B0F8 ; 1
0068AEB5 . E8 5EA0D7FF call SBGL.00404F18
0068AEBA > 8BC3 mov eax,ebx
0068AEBC . E8 AB90D7FF call SBGL.00403F6C
0068AEC1 . 8BC6 mov eax,esi ; SBGL.00976E0C
0068AEC3 . E8 A490D7FF call SBGL.00403F6C
0068AEC8 . BA 04B16800 mov edx,SBGL.0068B104 ; Num
0068AECD . B8 10B16800 mov eax,SBGL.0068B110 ; SOFTWARE\Microsoft\Shared Tools\Post\sbgl_v6.0_cd_key
0068AED2 . E8 09FEFFFF call SBGL.0068ACE0
0068AED7 . 84C0 test al,al
0068AED9 . 75 20 jnz short SBGL.0068AEFB
0068AEDB . 8D45 F8 lea eax,dword ptr ss:[ebp-0x8]
0068AEDE . BA F8B06800 mov edx,SBGL.0068B0F8 ; 1
0068AEE3 . E8 30A0D7FF call SBGL.00404F18
0068AEE8 . 68 10B16800 push SBGL.0068B110 ; SOFTWARE\Microsoft\Shared Tools\Post\sbgl_v6.0_cd_key
0068AEED . BA 04B16800 mov edx,SBGL.0068B104 ; Num
0068AEF2 . 8B4D F8 mov ecx,dword ptr ss:[ebp-0x8]
0068AEF5 . 58 pop eax ; SBGL.006AC0E9
0068AEF6 . E8 91FCFFFF call SBGL.0068AB8C
0068AEFB > 68 10B16800 push SBGL.0068B110 ; SOFTWARE\Microsoft\Shared Tools\Post\sbgl_v6.0_cd_key
0068AF00 . BA 04B16800 mov edx,SBGL.0068B104 ; Num
0068AF05 . 58 pop eax ; SBGL.006AC0E9
0068AF06 . E8 D5FDFFFF call SBGL.0068ACE0
0068AF0B . 84C0 test al,al
0068AF0D . 74 20 je short SBGL.0068AF2F
0068AF0F . 68 10B16800 push SBGL.0068B110 ; SOFTWARE\Microsoft\Shared Tools\Post\sbgl_v6.0_cd_key
0068AF14 . 8D45 F4 lea eax,dword ptr ss:[ebp-0xC]
0068AF17 . 50 push eax
0068AF18 . BA 04B16800 mov edx,SBGL.0068B104 ; Num
0068AF1D . 59 pop ecx ; SBGL.006AC0E9
0068AF1E . 58 pop eax ; SBGL.006AC0E9
0068AF1F . E8 08FDFFFF call SBGL.0068AC2C
0068AF24 . 8D45 F4 lea eax,dword ptr ss:[ebp-0xC]
0068AF27 . 8B55 F4 mov edx,dword ptr ss:[ebp-0xC]
0068AF2A . E8 E99FD7FF call SBGL.00404F18
0068AF2F > 33C0 xor eax,eax
上面这些就是在注册表中读写试用次数。关键在下面
由于他的使用次数是100次,他对于的16进制数是64,那么我们就要留意cmp这个汇编代码,看哪个寄存器和64做了比较。然后有跳转。
从代码判断,jg跳到了你使用的是试用版这个信息框,然后就会退出,jg是大于或者高于的意思,
也就是说cmp eax,64就是用eax和64进行比较。看看eax是否大于64.也就是试用次数是否大约100次,如果大约那么就跳信息框退出。
所以这里可以nop掉,这样是一个方法,但是有比这个简单的。就是我们让eax永远都不可能高于64.
在下面会有这个判断,到时候修改。
继续向下。
这里判断使用的次数。用注册表中和ini文件中的次数比较,是否相等。相等就跳过试用信息框
这里,这个mov eax,64就用用来给试用次数赋值的,就是说这里决定可以试用多少次。我们可以把64修改成0FFFFFFFF,也就是最大值,对应的是-1
这样,我们上面留下的悬念就解决了。
软件运行以后
试用次数成为负数,永远不会高于64.
到这里软件试用的次数就破解了。还有一些功能上的限制,就是添加项目不能大约10条,否则就是会弹出信息框的。如图
可以看到上面的比较。
cmp eax,0xA
就是说eax小于等于A那么就跳。所以我们要他必须跳。由于这个功能限制有多个,我们使用搜索所以命令来把jle都改成jmp。
这样就把功能限制突破了。
|
|