首页
社区
课程
招聘
[原创]Open Video Joiner V3.0.2注册过程分析
发表于: 2006-6-29 19:54 3713

[原创]Open Video Joiner V3.0.2注册过程分析

2006-6-29 19:54
3713
【文章标题】: Open Video Joiner V3.0.2注册过程分析
【文章作者】: elance
【作者邮箱】: liupengnpu@163.com
【作者QQ号】: 275199621
【软件名称】: Open Video Joiner V3.0.2
【下载地址】: 自己搜索下载
【加壳方式】: 无
【保护方式】: 注册码
【编写语言】: 没在意
【使用工具】: OD
【操作平台】: XP
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  1、说是注册分析,其实并为对其注册码转换算法深入分析,不过要写注册机的话大部分代码可抄袭源程序的代码,
  各位先看个味道,不要向我扔砖头哦,呵呵,:)
  2、具体分析
  跟踪来到这里:
  00422E20  /.  55            push    ebp
  00422E21  |.  8BEC          mov     ebp, esp
  00422E23  |.  83EC 20       sub     esp, 20
  00422E26  |.  894D E0       mov     [ebp-20], ecx
  00422E29  |.  6A 01         push    1
  00422E2B  |.  8B4D E0       mov     ecx, [ebp-20]
  00422E2E  |.  E8 FC130200   call    0044422F
  00422E33  |.  8B4D E0       mov     ecx, [ebp-20]
  00422E36  |.  83C1 70       add     ecx, 70
  00422E39  |.  E8 A28CFEFF   call    0040BAE0
  00422E3E  |.  83F8 02       cmp     eax, 2                           //注册码小于两位就出错
  00422E41      7D 13         jge     short 00422E56
  00422E43      6A 00         push    0
  00422E45      6A 00         push    0
  00422E47  |.  68 D4CF4500   push    0045CFD4                         ;  please input correct user name!
  00422E4C  |.  E8 6AAE0200   call    0044DCBB
  00422E51  |.  E9 A9020000   jmp     004230FF
  
  
  00422E61  |.  83F8 08       cmp     eax, 8                            //大于八位也出错
  00422E64      7D 13         jge     short 00422E79
  00422E66      6A 00         push    0
  00422E68      6A 00         push    0
  00422E6A  |.  68 F4CF4500   push    0045CFF4                         ;  please input correct registration code!
  
  接着往下看:
  //此部分对用输入的用户名著为进行简单的变换,并将转换结果保存到相应位置,供后边比较使用
  00422EB6  |.  8845 FA       mov     [ebp-6], al
  00422EB9  |.  0FB645 EF     movzx   eax, byte ptr [ebp-11]
  00422EBD  |.  83C8 4F       or      eax, 4F
  00422EC0  |.  8845 EF       mov     [ebp-11], al
  00422EC3  |.  0FB64D F8     movzx   ecx, byte ptr [ebp-8]
  00422EC7  |.  83C9 56       or      ecx, 56
  00422ECA  |.  884D F8       mov     [ebp-8], cl
  00422ECD  |.  0FB655 FF     movzx   edx, byte ptr [ebp-1]
  00422ED1  |.  83CA 4A       or      edx, 4A
  00422ED4  |.  8855 FF       mov     [ebp-1], dl
  00422ED7  |.  0FB645 FA     movzx   eax, byte ptr [ebp-6]
  00422EDB  |.  83C8 4E       or      eax, 4E
  00422EDE  |.  8845 FA       mov     [ebp-6], al
  00422EE1  |.  0FB645 EF     movzx   eax, byte ptr [ebp-11]
  00422EE5  |.  99            cdq
  00422EE6  |.  B9 0A000000   mov     ecx, 0A
  00422EEB  |.  F7F9          idiv    ecx
  00422EED  |.  8855 EF       mov     [ebp-11], dl
  00422EF0  |.  0FB645 F8     movzx   eax, byte ptr [ebp-8]
  00422EF4  |.  99            cdq
  00422EF5  |.  B9 0A000000   mov     ecx, 0A
  00422EFA  |.  F7F9          idiv    ecx
  00422EFC  |.  8855 F8       mov     [ebp-8], dl
  00422EFF  |.  0FB645 FF     movzx   eax, byte ptr [ebp-1]
  00422F03  |.  99            cdq
  00422F04  |.  B9 0A000000   mov     ecx, 0A
  00422F09  |.  F7F9          idiv    ecx
  00422F0B  |.  8855 FF       mov     [ebp-1], dl
  00422F0E  |.  0FB645 FA     movzx   eax, byte ptr [ebp-6]
  00422F12  |.  99            cdq
  00422F13  |.  B9 0A000000   mov     ecx, 0A
  00422F18  |.  F7F9          idiv    ecx
  
  再往下又是一些变换:
  //如果只是想破借此软件,在这些变换上花大功夫研究就有些不值了,因为从后边的分析看这部分对后边的注册没什麽影响
  00422F1A  |.  8855 FA       mov     [ebp-6], dl
  00422F1D  |.  C745 F0 00000>mov     dword ptr [ebp-10], 0
  00422F24  |.  C745 E8 00000>mov     dword ptr [ebp-18], 0
  00422F2B  |.  EB 09         jmp     short 00422F36
  00422F2D  |>  8B55 E8       /mov     edx, [ebp-18]
  00422F30  |.  83C2 01       |add     edx, 1
  00422F33  |.  8955 E8       |mov     [ebp-18], edx
  00422F36  |>  8B4D E0        mov     ecx, [ebp-20]
  00422F39  |.  83C1 70       |add     ecx, 70
  00422F3C  |.  E8 9F8BFEFF   |call    0040BAE0
  00422F41  |.  3945 E8       |cmp     [ebp-18], eax
  00422F44  |.  7D 1E         |jge     short 00422F64
  00422F46  |.  8B45 E8       |mov     eax, [ebp-18]
  00422F49  |.  50            |push    eax                             ; /Arg1
  00422F4A  |.  8B4D E0       |mov     ecx, [ebp-20]                   ; |
  00422F4D  |.  83C1 70       |add     ecx, 70                         ; |
  00422F50  |.  E8 1BF4FFFF   |call    00422370                  //有兴趣的话可跟进,后边还有用到此call的地方
  00422F55  |.  8845 E7       |mov     [ebp-19], al
  00422F58  |.  0FB64D E7     |movzx   ecx, byte ptr [ebp-19]
  00422F5C  |.  034D F0       |add     ecx, [ebp-10]
  00422F5F  |.  894D F0       |mov     [ebp-10], ecx
  00422F62  |.^ EB C9         \jmp     short 00422F2D
  
  下来还有,
  00422F6F  |.  8855 F4       mov     [ebp-C], dl
  00422F72  |.  6A 00         push    0                                ; /Arg1 = 00000000
  00422F74  |.  8B4D E0       mov     ecx, [ebp-20]                    ; |
  00422F77  |.  83C1 74       add     ecx, 74                          ; |
  00422F7A  |.  E8 F1F3FFFF   call    00422370                         ; \VideoJoi.00422370
  00422F7F  |.  8845 FC       mov     [ebp-4], al
  00422F82  |.  6A 01         push    1                                ; /Arg1 = 00000001
  00422F84  |.  8B4D E0       mov     ecx, [ebp-20]                    ; |
  00422F87  |.  83C1 74       add     ecx, 74                          ; |
  00422F8A  |.  E8 E1F3FFFF   call    00422370                         ; \VideoJoi.00422370
  省去部分代码。。。。。。
  有兴趣的话可跟进call 00422370,看看里边到底是些什莫东东,:)
  
  下边是关键:
  00422FF2  |.  0FB655 EF     movzx   edx, byte ptr [ebp-11]
  00422FF6  |.  0FB645 FC     movzx   eax, byte ptr [ebp-4]
  00422FFA  |.  83E8 30       sub     eax, 30
  00422FFD  |.  3BD0          cmp     edx, eax
  00422FFF      75 3C         jnz     short 0042303D
  00423001      0FB64D F8     movzx   ecx, byte ptr [ebp-8]  //存放的是用户名的变换
  00423005  |.  0FB655 FD     movzx   edx, byte ptr [ebp-3]  //注册码第二位数字
  00423009  |.  83EA 30       sub     edx, 30                //转换为asc码
  0042300C  |.  3BCA          cmp     ecx, edx            
  0042300E      75 2D         jnz     short 0042303D         //不等则出错, :(
  00423010  |.  0FB645 FF     movzx   eax, byte ptr [ebp-1]  //存放的是用户名的变换
  00423014  |.  0FB64D F6     movzx   ecx, byte ptr [ebp-A]  //注册码第三位数字
  00423018  |.  83E9 30       sub     ecx, 30
  0042301B  |.  3BC1          cmp     eax, ecx
  0042301D  |.  75 1E         jnz     short 0042303D         //出错
  0042301F  |.  0FB655 FA     movzx   edx, byte ptr [ebp-6]
  00423023  |.  0FB645 F5     movzx   eax, byte ptr [ebp-B]
  00423027  |.  83E8 30       sub     eax, 30
  0042302A  |.  3BD0          cmp     edx, eax
  0042302C  |.  75 0F         jnz     short 0042303D        //出错
  0042302E  |.  0FB64D F4     movzx   ecx, byte ptr [ebp-C]
  00423032  |.  0FB655 F9     movzx   edx, byte ptr [ebp-7]
  00423036  |.  83EA 30       sub     edx, 30
  00423039  |.  3BCA          cmp     ecx, edx
  0042303B  |.  74 58         je      short 00423095      //如果到这都一直没出错,呵呵,恭喜你,注册成功!!!
  
  3、总结
  也没什莫好总结的,用OD跟踪的话,只需在
  00422EFC  |.  8855 F8       mov     [ebp-8], dl
  
  00422F0B  |.  8855 FF       mov     [ebp-1], dl
  
  00422F1A  |.  8855 FA       mov     [ebp-6], dl
  
  00422F6F  |.  8855 F4       mov     [ebp-C], dl
  四处下断分别记下当时的dl值,这四位便是注册码的2~4为数字。
  
  如用户名:elance@crsky   此时dl分别为6106
  好了,输入用户名elance@crsky注册码16106987, "Registration has succeeded!"
  
  
  
--------------------------------------------------------------------------------
【经验总结】
  没啥经验,玩儿呗!
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于霏凡论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2006年06月29日 19:32:23

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
2
怎么又发一张?

http://bbs.pediy.com/showthread.php?s=&threadid=22818
2006-6-29 20:25
0
雪    币: 2506
活跃值: (1000)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
3
两个问题:
1、版权声明:

【版权声明】: 本文原创于霏凡论坛, 转载请注明作者并保持文章的完整, 谢谢!

这篇文章是属于转载还是原创?如果文章是你写的,在看雪论坛来说应该是你原创。而这个声明看起来却好像是转载的一样,不大合适吧?
好文章被转载是正常的,我一般都是写“本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!”,这样偷懒一点,自己发哪个论坛都算我原创。如果真要具体写的话,我只会在第一个发布的论坛说“原创于某某论坛”,其他论坛我再发的话就不会再写了。否则会让别人怀疑你到底是原创还是转载。
2、你原来发过关于这个软件的分析文章:
http://bbs.pediy.com/showthread.php?s=&threadid=22818
2006-6-29 20:43
0
雪    币: 716
活跃值: (162)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
4
我倒!!!
实在对不住大家了,
斑竹删了吧。
2006-6-29 20:45
0
雪    币: 716
活跃值: (162)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
5
真的忘了以前弄过,正式向大家道歉。
2006-6-29 20:50
0
游客
登录 | 注册 方可回帖
返回
//