欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

简单爆破软件的注册限制功能

程序员文章站 2022-04-22 10:52:25
又是一个周末,练练手吧。    某软件,未注册时限制了保存工作结果到文件的功能,当想要保存结果时会跳出一个对话框:“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