简单爆破软件的注册限制功能
程序员文章站
2022-09-02 21:53:43
又是一个周末,练练手吧。
某软件,未注册时限制了保存工作结果到文件的功能,当想要保存结果时会跳出一个对话框:“This feature is avail...
又是一个周末,练练手吧。
某软件,未注册时限制了保存工作结果到文件的功能,当想要保存结果时会跳出一个对话框:“This feature is available in registered version only.Buy it now?”,而软件其他功能都是正常的。
1、反汇编,先找到上述对话框里字串的存放地址:
SSZ00B62EC8_This_feature_is_available_in_reg:
db 'This feature is available in registered version only.',0Ah,'Buy it now?',0
2、然后找到使用了这个字串地址的模块,在整个软件中只有一处:
L00479667:
mov dword ptr [ebp-28h],L00D4AC98
mov ecx,L00D4AC98
mov edx,00000001h
lock
xadd [ecx],edx
push FFFFFFFFh
push SSZ00B624D8_Inpaint
mov dword ptr [ebp-04h],00000000h
call SUB_L0097C820
mov [ebp-24h],eax
push 00000000h
lea eax,[ebp-34h]
push L00B145FC
push eax
mov byte ptr [ebp-04h],01h
call SUB_L00473160
mov esi,eax
push 00000000h
lea ecx,[ebp-30h]
push L00B145F8
push ecx
mov byte ptr [ebp-04h],02h
call SUB_L00473160
mov ebx,eax
push 00000000h
lea edx,[ebp-2Ch]
push SSZ00B62EC8_This_feature_is_available_in_reg 就是这里
push edx
3、再找到调用了上述模块的地方,共有两处:
SUB_L00479330:
push ebp
mov ebp,esp
mov eax,fs:[00000000h]
push FFFFFFFFh
push L00A8FFFB
push eax
mov fs:[00000000h],esp
sub esp,00000044h
push ebx
push esi
push edi
mov edi,ecx
mov eax,[edi+14h]
mov eax,[eax+08h]
lea esi,[edi+14h]
test eax,eax
jz L00479667 第1处调用
push esi
call SUB_L00475930
add esp,00000004h
test al,al
jnz L0047937F
push esi
call SUB_L00476010
add esp,00000004h
test al,al
jz L00479667 第2处调用
4、将这2句调用及其中间共11句全NOP掉,在16进制编辑器里改为90,保存后运行,与注册后软件的表现一样,爆破成功。
作者
dzyedzye
说说思路吧
1、软件运行时提示使用时间已过,直接弹出注册窗口,于是想想是否可以改系统时间实现试用。
2、更改系统时间为2011-3-17,结果直接弹出对话框,说系统时间不正确。根据这个提示,可以在OD中输入bpx MessageBoxA,即在对话框中下断点。
3、再次运行程序,在MessageBoxA中被断下,点确定后,逐步跟踪,可以返回到顶端调用对话框的地方,再在调用的地方往上找找,找到比较可疑的跳转,下断点,即:
0040928E /0F84 6C000000 je 00409300 ; 判断时间是否调整过
尝试修改je为jne,运行程序,出现程序主画面。
4、将时间调整回来,再次运行程序,在0040928E被断下,并跳转,慢慢跟踪程序,可以发现下一个可疑地方,即:
00409369 /0F85 75000000 jnz 004093E4 ; 判断时间是否过期
尝试修改jnz为jz,运行程序,出现程序主画面。
5、初步爆破成功,但不知道程序的功能是什么,无法测试功能是否完全。
6、可以在00409369往上几个CALL,跟踪进去看看,应该是注册码判断函数,有兴趣可以跟踪看看。
作者otdr
某软件,未注册时限制了保存工作结果到文件的功能,当想要保存结果时会跳出一个对话框:“This feature is available in registered version only.Buy it now?”,而软件其他功能都是正常的。
1、反汇编,先找到上述对话框里字串的存放地址:
SSZ00B62EC8_This_feature_is_available_in_reg:
db 'This feature is available in registered version only.',0Ah,'Buy it now?',0
2、然后找到使用了这个字串地址的模块,在整个软件中只有一处:
L00479667:
mov dword ptr [ebp-28h],L00D4AC98
mov ecx,L00D4AC98
mov edx,00000001h
lock
xadd [ecx],edx
push FFFFFFFFh
push SSZ00B624D8_Inpaint
mov dword ptr [ebp-04h],00000000h
call SUB_L0097C820
mov [ebp-24h],eax
push 00000000h
lea eax,[ebp-34h]
push L00B145FC
push eax
mov byte ptr [ebp-04h],01h
call SUB_L00473160
mov esi,eax
push 00000000h
lea ecx,[ebp-30h]
push L00B145F8
push ecx
mov byte ptr [ebp-04h],02h
call SUB_L00473160
mov ebx,eax
push 00000000h
lea edx,[ebp-2Ch]
push SSZ00B62EC8_This_feature_is_available_in_reg 就是这里
push edx
3、再找到调用了上述模块的地方,共有两处:
SUB_L00479330:
push ebp
mov ebp,esp
mov eax,fs:[00000000h]
push FFFFFFFFh
push L00A8FFFB
push eax
mov fs:[00000000h],esp
sub esp,00000044h
push ebx
push esi
push edi
mov edi,ecx
mov eax,[edi+14h]
mov eax,[eax+08h]
lea esi,[edi+14h]
test eax,eax
jz L00479667 第1处调用
push esi
call SUB_L00475930
add esp,00000004h
test al,al
jnz L0047937F
push esi
call SUB_L00476010
add esp,00000004h
test al,al
jz L00479667 第2处调用
4、将这2句调用及其中间共11句全NOP掉,在16进制编辑器里改为90,保存后运行,与注册后软件的表现一样,爆破成功。
作者
dzyedzye
说说思路吧
1、软件运行时提示使用时间已过,直接弹出注册窗口,于是想想是否可以改系统时间实现试用。
2、更改系统时间为2011-3-17,结果直接弹出对话框,说系统时间不正确。根据这个提示,可以在OD中输入bpx MessageBoxA,即在对话框中下断点。
3、再次运行程序,在MessageBoxA中被断下,点确定后,逐步跟踪,可以返回到顶端调用对话框的地方,再在调用的地方往上找找,找到比较可疑的跳转,下断点,即:
0040928E /0F84 6C000000 je 00409300 ; 判断时间是否调整过
尝试修改je为jne,运行程序,出现程序主画面。
4、将时间调整回来,再次运行程序,在0040928E被断下,并跳转,慢慢跟踪程序,可以发现下一个可疑地方,即:
00409369 /0F85 75000000 jnz 004093E4 ; 判断时间是否过期
尝试修改jnz为jz,运行程序,出现程序主画面。
5、初步爆破成功,但不知道程序的功能是什么,无法测试功能是否完全。
6、可以在00409369往上几个CALL,跟踪进去看看,应该是注册码判断函数,有兴趣可以跟踪看看。
作者otdr