通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 >> 文章类 >> 红客教程 >> 网络攻防 >> 文章正文
Extra Drive Pro算法分析历程
责任编辑:酷酷の鱼   更新日期:2008-1-2
 

 

总结一下关键CALL1:
                  初始值:edi=-1
                  EDX=注册码(i) xor edi and 0ff,然后查表,EDX=[edx*4+44FFC0]指向的内容
                  ECX=EDI shr 8
                  edi=edx xor ecx 
                  i指向下一位,循环。最终的值xor FFFFFFFF(-1)--->eax
                        
  ///////////////////////////////////////////////////////////////////////////////////////////////////////
  关键CALL2:
  00423D68  /$Content$nbsp; 55            push    ebp
  00423D69  |.  89E5          mov     ebp, esp
  00423D6B  |.  83EC 10       sub     esp, 10
  00423D6E  |.  8365 FC 00    and     dword ptr [ebp-4], 0
  00423D72  |.  8365 F8 00    and     dword ptr [ebp-8], 0
  00423D76  |.  8365 F0 00    and     dword ptr [ebp-10], 0
  00423D7A  |.  EB 03         jmp     short 00423D7F
  00423D7C  |>  FF45 08       /inc     dword ptr [ebp+8]                          
  00423D7F  |>  8B45 08        mov     eax, dword ptr [ebp+8]                    
  00423D82  |.  8A08          |mov     cl, byte ptr [eax]                        
  00423D84  |.  80F9 20       |cmp     cl, 20
  00423D87  |.^ 74 F3         |je      short 00423D7C
  00423D89  |.  80F9 09       |cmp     cl, 9
  00423D8C  |.^ 74 EE         \je      short 00423D7C                             
  00423D8E  |.  8038 2B       cmp     byte ptr [eax], 2B                          
  00423D91  |.  75 05         jnz     short 00423D98                              
  00423D93  |.  FF45 08       inc     dword ptr [ebp+8]
  00423D96  |.  EB 50         jmp     short 00423DE8
  00423D98  |>  8B45 08       mov     eax, dword ptr [ebp+8]
  00423D9B  |.  8038 2D       cmp     byte ptr [eax], 2D                           
  00423D9E  |.  75 48         jnz     short 00423DE8
  00423DA0  |.  C745 F0 01000>mov     dword ptr [ebp-10], 1                        ;[ebp-10]=1
  00423DA7  |.  FF45 08       inc     dword ptr [ebp+8]
  00423DAA  |.  EB 3C         jmp     short 00423DE8                               ;跳
  00423DAC  |>  8B45 08       /mov     eax, dword ptr [ebp+8]                      ;  注册码到EAX
  00423DAF  |.  FF45 08       |inc     dword ptr [ebp+8]                           
  00423DB2  |.  0FBE00        |movsx   eax, byte ptr [eax]                         ;  注册码依次到EAX
  00423DB5  |.  83E8 30       |sub     eax, 30                                     ;  -0
  00423DB8  |.  8945 F4       |mov     dword ptr [ebp-C], eax                      ;  结果保存到[EBP-C]
  00423DBB  |.  BA 00000000   |mov     edx, 0                                      ;edx=0
  00423DC0  |.  B8 0A000000   |mov     eax, 0A                                     ;eax=0a
  00423DC5  |.  83EC 08       |sub     esp, 8
  00423DC8  |.  DF6D F8       |fild    qword ptr [ebp-8]                           ;  [EBP-8]-->ST(0)
  00423DCB  |.  DF3C24        |fistp   qword ptr [esp]                             ;  ST(0)-->[ESP]
  00423DCE  |.  52            |push    edx                                         ;作用应该是[EBP-8] <==>[esp]
  00423DCF  |.  50            |push    eax                                         
  00423DD0  |.  E8 5BF8FFFF   |call    00423630
    {
       00423630  /$Content$nbsp; 8B4424 08     mov     eax, dword ptr [esp+8]            ;不知道程序在什么地方对[ESP+8]赋值,我这里总是0
       00423634  |.  8B4C24 10     mov     ecx, dword ptr [esp+10]           ;不知道程序在什么地方对[ESP+10]赋值,我这里总是0 
       00423638  |.  09C1          or      ecx, eax
       0042363A  |.  8B4C24 0C     mov     ecx, dword ptr [esp+C]                  ;观察发现[esp+c]=[esp]
       0042363E  |.  75 09         jnz     short 00423649
       00423640  |.  8B4424 04     mov     eax, dword ptr [esp+4]                  ;观察发现[ESP+4]总是等于0A
       00423644  |.  F7E1          mul     ecx                                     ;[esp+c]*0A
       00423646  |.  C2 1000       retn    10                                      ;所以每次到这里就返回了
       00423649  |>  53            push    ebx
       0042364A  |.  F7E1          mul     ecx
       0042364C  |.  89C3          mov     ebx, eax
       0042364E  |.  8B4424 08     mov     eax, dword ptr [esp+8]
       00423652  |.  F76424 14     mul     dword ptr [esp+14]
       00423656  |.  01C3          add     ebx, eax
       00423658  |.  8B4424 08     mov     eax, dword ptr [esp+8]
       0042365C  |.  F7E1          mul     ecx
       0042365E  |.  01DA          add     edx, ebx
       00423660  |.  5B            pop     ebx
       00423661  \.  C2 1000       retn    10
     }

  00423DD5  |.  52            |push    edx
  00423DD6  |.  50            |push    eax 
  00423DD7  |.  8B45 F4       |mov     eax, dword ptr [ebp-C]                      ;EAX<--[EBP-C]
  00423DDA  |.  99            |cdq                            
  00423DDB  |.  010424        |add     dword ptr [esp], eax                        ;[ESP]=[ESP]+EAX
  00423DDE  |.  115424 04     |adc     dword ptr [esp+4], edx                      
  00423DE2  |.  8F45 F8       |pop     dword ptr [ebp-8]                           ;[EBP-8]出栈
  00423DE5  |.  8F45 FC       |pop     dword ptr [ebp-4]
  00423DE8  |>  8B45 08        mov     eax, dword ptr [ebp+8]                      ;  注册码到eax
  00423DEB  |.  8A00          |mov     al, byte ptr [eax]                          ;  注册码依次到al
  00423DED  |.  3C 30         |cmp     al, 30                                      ;  和数字0比较
  00423DEF  |.  7C 04         |jl      short 00423DF5
  00423DF1  |.  3C 39         |cmp     al, 39                                      ;  和数字9比较
  00423DF3  |.^ 7E B7         \jle     short 00423DAC
  00423DF5  |>  837D F0 00    cmp     dword ptr [ebp-10], 0
  00423DF9      74 13         je      short 00423E0E
  00423DFB  |.  8B55 FC       mov     edx, dword ptr [ebp-4]
  00423DFE  |.  8B45 F8       mov     eax, dword ptr [ebp-8]
  00423E01  |.  F7D8          neg     eax
  00423E03  |.  83D2 00       adc     edx, 0
  00423E06  |.  F7DA          neg     edx
  00423E08  |.  8955 FC       mov     dword ptr [ebp-4], edx
  00423E0B  |.  8945 F8       mov     dword ptr [ebp-8], eax
  00423E0E  |>  8B55 FC       mov     edx, dword ptr [ebp-4]
  00423E11  |.  8B45 F8       mov     eax, dword ptr [ebp-8]                       ;EAX的返回值在这里了
  00423E14  |.  C9            leave
  00423E15  \.  C3            retn
  总结一下关键CALL2:
     第一次:[ESP+C]=[ESP]=0 *0A=0+1=1
     第二次:[esp+c]=[esp]=1 *0a=0A+1=0B
     第三次: [esp+c]=[esp]=b*0a=6E+2=70
     类似于:
            sum=0
            sum=sum*0A+注册码(i)数值本身
            i++
描述的不是很好,但是你自己跟一遍就有感觉了。。
--------------------------------------------------------------------------------
  算法就看那两个关键CALL拉,如果你看不懂尽管拿砖头砸我好了
 类似这样的算法以我目前的能力是没办法还原的..呵呵

///////////////////////////////////////////////////////////////////////////////////////////////////////////
后记:两位大虾都说是CRC,于是我这几天特意浏览了看雪上关于CRC的帖子,看到穷举一词,突然有一到灵光打到了我的天, 灵盖上,于是我也

决定对这个软件穷举一下试试.
思路如下:
          for n=0 to 99999...9(15个)            ;n我用来表示注册码后15位
                  SN1=CALL1(n)                  ;关键CALL1的算法我们是可以求出来的
                      do 
                          { 
                            sn1=call2(i)        ;i表示被截取掉的
                            i++
                          }while(sn2=sn1 or i>99999999)
                 sn=’n’+’i’                     ;SN表示注册码
          next n
我想上面那些循环应该可以穷举出一个注册码吧~!
关键算法分析清楚了的,思路也有了,就开始写代码实践下:
   先写关键CALL1的:
Dim sn2 As Long
Dim i As Integer
Dim n As Integer
Dim s As String
Dim l As Integer
Private Function call2(n As Integer)
 sn2 = 0
 s = Str(n)
 l = Len(s)
     For i = 1 To l
        sn2 = sn2 * &HA + Val(Mid(s, i, 1))
     Next i

       call2 = sn2
End Function
到这里我调试了一下,比如我输入1122,返回的是1122,输入多少返回多少~!看到这个结果我哭了。。。。。还穷举个屁。
那不就是说注册机可以这样写了:
                  sn1=call1(n)
                  regcode=’sn1’+’n’ 
比如sn1=call1(123456789012345)=1364569986
那么你的注册码就是1364569986123456789012345,删掉程序目录下的extradrivepro.ini文件中的temp节,那么你还可以再玩一次

上一页  [1] [2] 

  • 上一篇文章:
  • 下一篇文章:
  • 最近更新
    固顶文章 爱国者安全网2007年度优秀版主评选
    普通文章 瑞星公司01月11日发布 每日计算机病毒及木马播报
    普通文章 破解博彩神助(专注彩票) V2.8.01
    推荐文章 推荐:跨站脚本执行漏洞代码的六点思路
    普通文章 Windows系统下的远程堆栈溢出 实战篇
    普通文章 Windows系统下的远程堆栈溢出 原理篇
    普通文章 MsSQLServer是如何加密口令的
    普通文章 浅谈国内的渗透评估过程
    普通文章 Dvbbs8.1 0DAY(通杀Access和mssql版本)
    普通文章 微软:我们的代码比赛门铁克更安全
    热门文章
    普通文章REAL蛀虫利用播放器漏洞下载恶意程序
    普通文章李彦宏:中国要在互联网领域逐渐超越美国
    普通文章马云:阿里巴巴的成功是一个生态链的成功
    普通文章Ingres用户认证非授权访问漏洞
    普通文章TCPreen FD_SET()函数远程栈溢出漏洞
    普通文章Winace UUE文件解压堆溢出漏洞
    普通文章Pclxav木马猎手第一代特征码引擎源代码
    普通文章IE收藏夹管理小精灵算法分析
    普通文章Extra Drive Pro算法分析历程
    普通文章雨过天晴自我注册
    精彩专题