飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 10064|回复: 16

[原创] 轻轻松松暴破AVI Splitter 2.11

[复制链接]

该用户从未签到

发表于 2007-8-21 14:26:26 | 显示全部楼层 |阅读模式
【文章标题】: 暴破AVI Splitter 2.11
【文章作者】: 梦湾(云飘飘)
【作者邮箱】: [email protected]
【作者主页】: *
【作者QQ号】: *
【软件名称】: AVI Splitter 2.11
【软件大小】: 710KB
【下载地址】: http://86516.onlinedown.net/soft/16960.htm
【加壳方式】: 无壳
【保护方式】: 注册码
【编写语言】: Delphi
【使用工具】: OllyDbg
【操作平台】: Win2k
【软件介绍】: AVI 影片分割工具AVI Splitter,能够将2GB以下的单一AVI影片档分割成多个AVI影片档,
不用重新压缩就可以直接产生分割文件,程序还可以用来压缩/解压缩内建的VFW编码(如:MPEG-4 或 DivX)。
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  安装软件后,启动程序,出现“Trial Version Notification”窗口(试用版声明),点“Enter Registration Key”,
  输入试验码987987987987,提示“The registration key is not valid. Application is not registered.”
  (注册码无效,程序未注册)。退出程序。
  
  用od载入,搜索相应字串参考,双击后来到这里:

  1.   00466F0C  |.  B8 D46F4600   mov     eax, 00466FD4                    ; |the registration key is not valid. application is not registered.
  2.   00466F11  |.  E8 D68BFEFF   call    0044FAEC                         ; \avisplit.0044FAEC
  3.   
复制代码

  在子程序首部(00466E48行)下断,F9运行,点“Enter Registration Key”,输入试验码,程序被成功断下。
  1. 00466E48  /.  55            push    ebp
  2.   00466E49  |.  8BEC          mov     ebp, esp
  3.   00466E4B  |.  6A 00         push    0
  4.   00466E4D  |.  6A 00         push    0
  5.   00466E4F  |.  53            push    ebx
  6.   00466E50  |.  8BD8          mov     ebx, eax
  7.   00466E52  |.  33C0          xor     eax, eax
  8.   00466E54  |.  55            push    ebp
  9.   00466E55  |.  68 316F4600   push    00466F31
  10.   00466E5A  |.  64:FF30       push    dword ptr fs:[eax]
  11.   00466E5D  |.  64:8920       mov     dword ptr fs:[eax], esp
  12.   00466E60  |.  8D4D FC       lea     ecx, dword ptr [ebp-4]
  13.   00466E63  |.  BA 486F4600   mov     edx, 00466F48                    ;  ASCII "Please enter the registration key"
  14.   00466E68  |.  B8 746F4600   mov     eax, 00466F74                    ;  ASCII "Registration"
  15.   00466E6D  |.  E8 968DFEFF   call    0044FC08
  16.   00466E72  |.  84C0          test    al, al
  17.   00466E74  |.  0F84 9C000000 je      00466F16                         ;  如果注册码为空,则跳走,这里因为有试验码,不跳
  18.   00466E7A  |.  8D55 F8       lea     edx, dword ptr [ebp-8]
  19.   00466E7D  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  20.   00466E80  |.  E8 4313FAFF   call    004081C8                         ;  算法call
  21.   00466E85  |.  8B55 F8       mov     edx, dword ptr [ebp-8]
  22.   00466E88  |.  8D45 FC       lea     eax, dword ptr [ebp-4]
  23.   00466E8B  |.  E8 C4CDF9FF   call    00403C54                         ;  算法call
  24.   00466E90  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  25.   00466E93  |.  E8 C4010000   call    0046705C                         ;  算法call;我在这里跟进,发现是查表比较
  26.   00466E98  |.  A2 545A4900   mov     byte ptr [495A54], al
  27.   00466E9D  |.  803D 545A4900>cmp     byte ptr [495A54], 0
  28.   00466EA4  |.  74 5B         je      short 00466F01                   ;  零标志位为1,则注册不成功;这里是暴破点
  29.   00466EA6  |.  B8 585A4900   mov     eax, 00495A58
  30.   00466EAB  |.  8B55 FC       mov     edx, dword ptr [ebp-4]
  31.   00466EAE  |.  E8 5DCDF9FF   call    00403C10
  32.   00466EB3  |.  BA 8C6F4600   mov     edx, 00466F8C                    ;  ASCII "Continue"
  33.   00466EB8  |.  8B83 D0020000 mov     eax, dword ptr [ebx+2D0]
  34.   00466EBE  |.  E8 555EFCFF   call    0042CD18
  35.   00466EC3  |.  B2 01         mov     dl, 1
  36.   00466EC5  |.  8B83 D0020000 mov     eax, dword ptr [ebx+2D0]
  37.   00466ECB  |.  8B08          mov     ecx, dword ptr [eax]
  38.   00466ECD  |.  FF51 5C       call    dword ptr [ecx+5C]
  39.   00466ED0  |.  33D2          xor     edx, edx
  40.   00466ED2  |.  8B83 D8020000 mov     eax, dword ptr [ebx+2D8]
  41.   00466ED8  |.  8B08          mov     ecx, dword ptr [eax]
  42.   00466EDA  |.  FF51 5C       call    dword ptr [ecx+5C]
  43.   00466EDD  |.  33D2          xor     edx, edx
  44.   00466EDF  |.  8B83 D4020000 mov     eax, dword ptr [ebx+2D4]
  45.   00466EE5  |.  8B08          mov     ecx, dword ptr [eax]
  46.   00466EE7  |.  FF51 5C       call    dword ptr [ecx+5C]
  47.   00466EEA  |.  6A 00         push    0                                ; /Arg1 = 00000000
  48.   00466EEC  |.  66:8B0D 986F4>mov     cx, word ptr [466F98]            ; |
  49.   00466EF3  |.  B2 02         mov     dl, 2                            ; |
  50.   00466EF5  |.  B8 A46F4600   mov     eax, 00466FA4                    ; |ASCII "Application is successfully registered."
  51.   00466EFA  |.  E8 ED8BFEFF   call    0044FAEC                         ; \avisplit.0044FAEC
  52.   00466EFF  |.  EB 15         jmp     short 00466F16                   ;  注册成功,就跳走!
  53.   00466F01  |>  6A 00         push    0                                ; /Arg1 = 00000000
  54.   00466F03  |.  66:8B0D 986F4>mov     cx, word ptr [466F98]            ; |
  55.   00466F0A  |.  33D2          xor     edx, edx                         ; |
  56.   00466F0C  |.  B8 D46F4600   mov     eax, 00466FD4                    ; |the registration key is not valid. application is not registered.
  57.   00466F11  |.  E8 D68BFEFF   call    0044FAEC                         ; \avisplit.0044FAEC
  58.   00466F16  |>  33C0          xor     eax, eax
  59.   00466F18  |.  5A            pop     edx
  60.   00466F19  |.  59            pop     ecx
  61.   00466F1A  |.  59            pop     ecx
  62.   00466F1B  |.  64:8910       mov     dword ptr fs:[eax], edx
  63.   00466F1E  |.  68 386F4600   push    00466F38
  64.   00466F23  |>  8D45 F8       lea     eax, dword ptr [ebp-8]
  65.   00466F26  |.  BA 02000000   mov     edx, 2
  66.   00466F2B  |.  E8 B0CCF9FF   call    00403BE0
  67.   00466F30  \.  C3            retn
  68.   
复制代码

  本来想追出注册码,在00466E93行的call中追到一大堆数据,我以为是注册码,可是试了好几个,均不成功。哪位要是追出了注册码,还望赐教!!
  
  没办法,不能就这样算了!
  
  暴破之!!
  
  进入算法call,在首行,od显示:“本地调用来自 00466E93, 0046750A”。两处调用,一是输入注册码验证,另一则是程序启动时验证。
  
  00466EA4  |. /74 5B         je      short 00466F01                   ;  零标志位为1,则注册不成功;这里是暴破点
  
  00467516  |. /74 07         je      short 0046751F                   ;  零标志位为1,则注册不成功;
  
  将上面的两个跳转nop掉,保存程序。重启程序,注册窗口不再显示。找到注册处,随便输入数字,注册成功!!呵呵!!!
  
  打开about窗口,显示“UNREGISTERED VERSION”(未注册版本),不爽!一并改之!!
  
  打开修改过的程序,搜索“UNREGISTERED VERSION”超级字串,双击来到这里:
  1. 0046314E  |.  80BB 08030000>cmp     byte ptr [ebx+308], 0            ;  暴破点
  2.   00463155  |.  74 12         je      short 00463169
  3.   00463157  |.  BA C4314600   mov     edx, 004631C4                    ;  registered version
  4.   0046315C  |.  8B83 F4020000 mov     eax, dword ptr [ebx+2F4]
  5.   00463162  |.  E8 B19BFCFF   call    0042CD18
  6.   00463167  |.  EB 10         jmp     short 00463179
  7.   00463169  |>  BA E0314600   mov     edx, 004631E0                    ;  unregistered version
  8.   0046316E  |.  8B83 F4020000 mov     eax, dword ptr [ebx+2F4]
  9.   00463174  |.  E8 9F9BFCFF   call    0042CD18
  10.   
复制代码

  将0046314E行的跳转nop掉,保存。再运行看看,哈哈,“REGISTERED VERSION”,OK了!
  
  一共只修改了3处,成了绿色版本。收工了!!!
  
--------------------------------------------------------------------------------
【经验总结】
  没办法时,就暴破!呵呵!!
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2007年08月21日 14:20:34

[ 本帖最后由 云飘飘 于 2007-8-21 15:09 编辑 ]

avisplit.part1.rar

200 KB, 下载次数: 8, 下载积分: 飘云币 -2 枚

avisplit.part2.rar

96.37 KB, 下载次数: 7, 下载积分: 飘云币 -2 枚

评分

参与人数 1威望 +8 收起 理由
tigerisme + 8 鼓励

查看全部评分

PYG19周年生日快乐!

该用户从未签到

发表于 2007-8-21 16:12:54 | 显示全部楼层
不错...谢谢兄弟的好文章
PYG19周年生日快乐!

该用户从未签到

发表于 2007-8-22 12:53:32 | 显示全部楼层
有一点不懂!爆破了还要输入注册码,就是不知道怎么找重启验证这个环节。
PYG19周年生日快乐!

该用户从未签到

发表于 2007-8-22 18:37:55 | 显示全部楼层
向楼主学习!!!
PYG19周年生日快乐!

该用户从未签到

发表于 2007-8-22 22:50:07 | 显示全部楼层
按照楼主的方法试了几次都没成功,看来还我自己还需要多加练习啊/:002
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2007-8-23 07:22:52 | 显示全部楼层
你将我提到的三个地方都nop掉,然后保存,运行保存后的文件,成功一定属于你自己./:014
PYG19周年生日快乐!

该用户从未签到

发表于 2007-8-23 08:04:01 | 显示全部楼层
关键就是"nop掉"具体是怎样的操作我都不知道/:002
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2007-8-23 11:12:30 | 显示全部楼层
OD的操作要熟悉啊!

第一种方法:双击汇编代码,在弹出的对话框中输入nop,注意【使用 NOP 填充】的勾请确保勾上,然后按【汇编】按钮就OK了!

第二种方法:在汇编代码行上单击右键,选择【二进制】----->【用NOP填充】。
PYG19周年生日快乐!

该用户从未签到

发表于 2007-8-23 16:13:44 | 显示全部楼层
多谢云飘飘同学,之前还以为是将jnz之类的指令改为jz呢,看来是我无知了,受教了/:good
PYG19周年生日快乐!

该用户从未签到

发表于 2007-8-23 16:42:03 | 显示全部楼层
进入算法call,在首行,od显示:“本地调用来自 00466E93, 0046750A”。

这句怎么解释啊 楼主大哥?
00466E80  |.  E8 4313FAFF   call    004081C8                         ;  算法call
  00466E85  |.  8B55 F8       mov     edx, dword ptr [ebp-8]
  00466E88  |.  8D45 FC       lea     eax, dword ptr [ebp-4]
  00466E8B  |.  E8 C4CDF9FF   call    00403C54                         ;  算法call
  00466E90  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  00466E93  |.  E8 C4010000   call    0046705C                         ;  算法call;我在这里跟进,发现是查表比较

这些call 里面好像没有哇
PYG19周年生日快乐!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表