飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3662|回复: 1

[原创] Access Manager for Windows 8.0简单分析

[复制链接]
  • TA的每日心情
    开心
    2018-12-18 12:34
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2008-8-27 15:41:33 | 显示全部楼层 |阅读模式
    【文章标题】: Access Manager for Windows 8.0简单分析
    【文章作者】: qifeon
    【软件名称】: Access Manager for Windows 8.0
    【下载地址】: http://www.onlinedown.net/soft/7192.htm
    【软件介绍】: Access Manager 是一个非常不错的系统安全工具!
    【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
    --------------------------------------------------------------------------------
    【详细过程】
      一、PEID查壳,无壳,编程语言为Borland Delphi 6.0 - 7.0。
      
      二、运行软件,出现注册对话框。输入试炼码“123456”,点“Register”按钮,出现错误提示“This registeration is invalid”。
      
      三、od 载入,利用字符串查找插件。里面字符很少,估计关键字符串做了加密。这招不灵了,一般常用的API函数对Delphi程序又无效。
      
           我们使用对Delphi程序最常用的寻找“按钮事件代码”的方法。
      
      1、用PEexplore(其它资源处理软件如exescope等都可以)打开主程序,查看rcdata资源。找到Register”按钮。
    05.GIF
      2、用Winhex 打开主程序,搜索“registerbtnclick”,字节"10"指出了“registerbtnclick按钮的长度,前面是事件调用地址 4c0964,然后就可以用此地址设置断点了
       01.GIF
      3、当然同样可以利用DeDe 反编译得到按钮事件的地址。
       04.GIF
      四、od载入,在地址 4c0964 处下断,F9运行软件,出现异常,SHIFT +F9 ,出现注册对话框,输入试炼码“123456”,点“Register”按钮,程序断下
      
      *************************************************************************************************************************************************
      
      004C0964  /.  55            push    ebp                             按钮事件地址
      004C0965  |.  8BEC          mov     ebp, esp
      004C0967  |.  83C4 F8       add     esp, -8
      004C096A  |.  8955 F8       mov     dword ptr [ebp-8], edx
      004C096D  |.  8945 FC       mov     dword ptr [ebp-4], eax
      004C0970  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
      004C0973  |.  E8 78F3FFFF   call    004BFCF0                         ;  关键CALL
      004C0978  |.  84C0          test    al, al
      004C097A  |.  74 0F         je      short 004C098B                   ;  关键跳转
      004C097C  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
      004C097F  |.  C780 94020000>mov     dword ptr [eax+294], 1
      004C0989  |.  EB 11         jmp     short 004C099C
      004C098B  |>  8B45 FC       mov     eax, dword ptr [ebp-4]
      004C098E  |.  8B80 B0030000 mov     eax, dword ptr [eax+3B0]
      004C0994  |.  8B10          mov     edx, dword ptr [eax]
      004C0996  |.  FF92 D4000000 call    dword ptr [edx+D4]
      004C099C  |>  59            pop     ecx
      004C099D  |.  59            pop     ecx
      004C099E  |.  5D            pop     ebp
      004C099F  \.  C3            retn
      
      *********************************************************************************************************************************************************
      
      进入 call    004BFCF0
      
      **********************************************************************************************************************************************************
      
      004BFCF0  /$  55            push    ebp
      004BFCF1  |.  8BEC          mov     ebp, esp
      004BFCF3  |.  B9 07000000   mov     ecx, 7
      004BFCF8  |>  6A 00         /push    0
      004BFCFA  |.  6A 00         |push    0
      004BFCFC  |.  49            |dec     ecx
      004BFCFD  |.^ 75 F9         \jnz     short 004BFCF8
      004BFCFF  |.  51            push    ecx
      004BFD00  |.  8945 FC       mov     dword ptr [ebp-4], eax
      004BFD03  |.  33C0          xor     eax, eax
      004BFD05  |.  55            push    ebp
      004BFD06  |.  68 73FE4B00   push    004BFE73
      004BFD0B  |.  64:FF30       push    dword ptr fs:[eax]
      004BFD0E  |.  64:8920       mov     dword ptr fs:[eax], esp
      004BFD11  |.  8D55 EC       lea     edx, dword ptr [ebp-14]
      004BFD14  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
      004BFD17  |.  8B80 B0030000 mov     eax, dword ptr [eax+3B0]
      004BFD1D  |.  E8 02B5F9FF   call    0045B224
      004BFD22  |.  8B45 EC       mov     eax, dword ptr [ebp-14]          ;  试炼码
      004BFD25  |.  8D55 F0       lea     edx, dword ptr [ebp-10]
      004BFD28  |.  E8 C7F1FBFF   call    0047EEF4
      004BFD2D  |.  8B55 F0       mov     edx, dword ptr [ebp-10]          ;  试炼码
      004BFD30  |.  B8 582E5100   mov     eax, 00512E58
      004BFD35  |.  E8 8655F4FF   call    004052C0
      004BFD3A  |.  E8 09FDFFFF   call    004BFA48                         ;  关键call
      004BFD3F  |.  8845 FB       mov     byte ptr [ebp-5], al             ;  标志位al值传递
      004BFD42  |.  807D FB 00    cmp     byte ptr [ebp-5], 0
      004BFD46  |.  0F84 D8000000 je      004BFE24                         ;  关键跳转
      004BFD4C  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
      004BFD4F  |.  C680 D8030000>mov     byte ptr [eax+3D8], 1
      004BFD56  |.  8D45 F4       lea     eax, dword ptr [ebp-C]
      004BFD59  |.  50            push    eax
      004BFD5A  |.  8D55 E8       lea     edx, dword ptr [ebp-18]
      004BFD5D  |.  B8 8CFE4B00   mov     eax, 004BFE8C                    ;  ASCII "BF8A83B980"
      004BFD62  |.  E8 150AFCFF   call    0048077C
      004BFD67  |.  8B45 E8       mov     eax, dword ptr [ebp-18]
      004BFD6A  |.  50            push    eax
      004BFD6B  |.  8D55 E4       lea     edx, dword ptr [ebp-1C]
      004BFD6E  |.  B8 A0FE4B00   mov     eax, 004BFEA0                    ;  ASCII "BE828B999A8C9F88B1C8BDBFA2AAA3ACA0A8C8"
      004BFD73  |.  E8 14FEFFFF   call    004BFB8C
      004BFD78  |.  8B55 E4       mov     edx, dword ptr [ebp-1C]
      004BFD7B  |.  A1 602E5100   mov     eax, dword ptr [512E60]
      004BFD80  |.  59            pop     ecx
      004BFD81  |.  E8 8A45FCFF   call    00484310
      004BFD86  |.  8D55 E0       lea     edx, dword ptr [ebp-20]
      004BFD89  |.  A1 582E5100   mov     eax, dword ptr [512E58]
      004BFD8E  |.  E8 3109FCFF   call    004806C4
      004BFD93  |.  8B45 E0       mov     eax, dword ptr [ebp-20]
      004BFD96  |.  50            push    eax
      004BFD97  |.  8D55 DC       lea     edx, dword ptr [ebp-24]
      004BFD9A  |.  B8 D0FE4B00   mov     eax, 004BFED0                    ;  ASCII "BF9D9FAE999E"
      004BFD9F  |.  E8 D809FCFF   call    0048077C
      004BFDA4  |.  8B45 DC       mov     eax, dword ptr [ebp-24]
      004BFDA7  |.  50            push    eax
      004BFDA8  |.  8D55 D8       lea     edx, dword ptr [ebp-28]
      004BFDAB  |.  B8 A0FE4B00   mov     eax, 004BFEA0                    ;  ASCII "BE828B999A8C9F88B1C8BDBFA2AAA3ACA0A8C8"
      004BFDB0  |.  E8 D7FDFFFF   call    004BFB8C
      004BFDB5  |.  8B55 D8       mov     edx, dword ptr [ebp-28]
      004BFDB8  |.  A1 602E5100   mov     eax, dword ptr [512E60]
      004BFDBD  |.  59            pop     ecx
      004BFDBE  |.  E8 C946FCFF   call    0048448C
      004BFDC3  |.  837D F4 00    cmp     dword ptr [ebp-C], 0
      004BFDC7  |.  75 44         jnz     short 004BFE0D
      004BFDC9  |.  E8 56BDF4FF   call    0040BB24
      004BFDCE  |.  83C4 F8       add     esp, -8
      004BFDD1  |.  DD1C24        fstp    qword ptr [esp]
      004BFDD4  |.  9B            wait
      004BFDD5  |.  8D45 D4       lea     eax, dword ptr [ebp-2C]
      004BFDD8  |.  E8 130CFCFF   call    004809F0
      004BFDDD  |.  8B45 D4       mov     eax, dword ptr [ebp-2C]
      004BFDE0  |.  50            push    eax
      004BFDE1  |.  8D55 D0       lea     edx, dword ptr [ebp-30]
      004BFDE4  |.  B8 8CFE4B00   mov     eax, 004BFE8C                    ;  ASCII "BF8A83B980"
      004BFDE9  |.  E8 8E09FCFF   call    0048077C
      004BFDEE  |.  8B45 D0       mov     eax, dword ptr [ebp-30]
      004BFDF1  |.  50            push    eax
      004BFDF2  |.  8D55 CC       lea     edx, dword ptr [ebp-34]
      004BFDF5  |.  B8 A0FE4B00   mov     eax, 004BFEA0                    ;  ASCII "BE828B999A8C9F88B1C8BDBFA2AAA3ACA0A8C8"
      004BFDFA  |.  E8 8DFDFFFF   call    004BFB8C
      004BFDFF  |.  8B55 CC       mov     edx, dword ptr [ebp-34]
      004BFE02  |.  A1 602E5100   mov     eax, dword ptr [512E60]
      004BFE07  |.  59            pop     ecx
      004BFE08  |.  E8 7F46FCFF   call    0048448C
      004BFE0D  |>  8D55 C8       lea     edx, dword ptr [ebp-38]
      004BFE10  |.  B8 E8FE4B00   mov     eax, 004BFEE8                    ;  ASCII "M_THANKS"
      004BFE15  |.  E8 CEECFEFF   call    004AEAE8
      004BFE1A  |.  8B45 C8       mov     eax, dword ptr [ebp-38]
      004BFE1D  |.  E8 0AFDFEFF   call    004AFB2C
      004BFE22  |.  EB 1F         jmp     short 004BFE43
      004BFE24  |>  B8 582E5100   mov     eax, 00512E58
      004BFE29  |.  E8 3E54F4FF   call    0040526C
      004BFE2E  |.  8D55 C4       lea     edx, dword ptr [ebp-3C]
      004BFE31  |.  B8 FCFE4B00   mov     eax, 004BFEFC                    ;  ASCII "M_BADCODE"
      004BFE36  |.  E8 ADECFEFF   call    004AEAE8
      
      **********************************************************************************************************************************************
      
      进入算法 call    004BFA48
      
      *********************************************************************************************************************************************
      
      
      004BFA48  /$  55            push    ebp
      004BFA49  |.  8BEC          mov     ebp, esp
      004BFA4B  |.  83C4 F0       add     esp, -10
      004BFA4E  |.  33C0          xor     eax, eax
      004BFA50  |.  8945 F8       mov     dword ptr [ebp-8], eax
      004BFA53  |.  C645 FF 00    mov     byte ptr [ebp-1], 0
      004BFA57  |.  A1 582E5100   mov     eax, dword ptr [512E58]
      004BFA5C  |.  8945 F4       mov     dword ptr [ebp-C], eax
      004BFA5F  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
      004BFA62  |.  8945 F0       mov     dword ptr [ebp-10], eax
      004BFA65  |.  837D F0 00    cmp     dword ptr [ebp-10], 0            ;  试炼码是否为空?
      004BFA69  |.  74 0B         je      short 004BFA76
      004BFA6B  |.  8B45 F0       mov     eax, dword ptr [ebp-10]
      004BFA6E  |.  83E8 04       sub     eax, 4
      004BFA71  |.  8B00          mov     eax, dword ptr [eax]             ;  试炼码长度
      004BFA73  |.  8945 F0       mov     dword ptr [ebp-10], eax
      004BFA76  |>  837D F0 0E    cmp     dword ptr [ebp-10], 0E           ;  试炼码长度是否为14位?
      004BFA7A  |.  0F85 85000000 jnz     004BFB05                         ;  不等则跳向赋值al=0
      004BFA80  |.  A1 582E5100   mov     eax, dword ptr [512E58]          ;  试炼码
      004BFA85  |.  8038 32       cmp     byte ptr [eax], 32               ;  试炼码第1位是否为2?
      004BFA88  |.  0F94C0        sete    al                               ;  真则al=1,假则 al=0
      004BFA8B  |.  83E0 7F       and     eax, 7F                          ;  eax=eax and 0x7Fh
      004BFA8E  |.  0145 F8       add     dword ptr [ebp-8], eax           ;  [ebp-8]=[ebp-8]+eax
      004BFA91  |.  A1 582E5100   mov     eax, dword ptr [512E58]
      004BFA96  |.  8078 02 32    cmp     byte ptr [eax+2], 32             ;  试炼码第3位是否为2?
      004BFA9A  |.  0F94C0        sete    al
      004BFA9D  |.  83E0 7F       and     eax, 7F
      004BFAA0  |.  0145 F8       add     dword ptr [ebp-8], eax
      004BFAA3  |.  A1 582E5100   mov     eax, dword ptr [512E58]
      004BFAA8  |.  8078 03 31    cmp     byte ptr [eax+3], 31             ;  试炼码第4位是否为1?
      004BFAAC  |.  0F94C0        sete    al
      004BFAAF  |.  83E0 7F       and     eax, 7F
      004BFAB2  |.  0145 F8       add     dword ptr [ebp-8], eax
      004BFAB5  |.  A1 582E5100   mov     eax, dword ptr [512E58]
      004BFABA  |.  8078 04 39    cmp     byte ptr [eax+4], 39             ;  试炼码第5位是否为9?
      004BFABE  |.  0F94C0        sete    al
      004BFAC1  |.  83E0 7F       and     eax, 7F
      004BFAC4  |.  0145 F8       add     dword ptr [ebp-8], eax
      004BFAC7  |.  A1 582E5100   mov     eax, dword ptr [512E58]
      004BFACC  |.  8078 07 30    cmp     byte ptr [eax+7], 30             ;  试炼码第8位是否为0?
      004BFAD0  |.  0F94C0        sete    al
      004BFAD3  |.  83E0 7F       and     eax, 7F
      004BFAD6  |.  0145 F8       add     dword ptr [ebp-8], eax
      004BFAD9  |.  A1 582E5100   mov     eax, dword ptr [512E58]
      004BFADE  |.  8078 08 35    cmp     byte ptr [eax+8], 35             ;  试炼码第9位是否为5?
      004BFAE2  |.  0F94C0        sete    al
      004BFAE5  |.  83E0 7F       and     eax, 7F
      004BFAE8  |.  0145 F8       add     dword ptr [ebp-8], eax
      004BFAEB  |.  A1 582E5100   mov     eax, dword ptr [512E58]
      004BFAF0  |.  8078 0A 33    cmp     byte ptr [eax+A], 33             ;  试炼码第11位是否为3?
      004BFAF4  |.  0F94C0        sete    al
      004BFAF7  |.  83E0 7F       and     eax, 7F
      004BFAFA  |.  0145 F8       add     dword ptr [ebp-8], eax
      004BFAFD  |.  837D F8 07    cmp     dword ptr [ebp-8], 7             ;  如果前面7位数字验证成功,则[ebp-8]=7
      004BFB01  |.  0F9445 FF     sete    byte ptr [ebp-1]                 ;  真则置[ebp-1]=1
      004BFB05  |>  8A45 FF       mov     al, byte ptr [ebp-1]             ;  标志位al的值取决于[ebp-1]的值
      004BFB08  |.  8BE5          mov     esp, ebp
      004BFB0A  |.  5D            pop     ebp
      004BFB0B  \.  C3            retn
      
      *********************************************************************************************************************************************************
    五、爆破

    典型的标志位爆破

    04BFCF0  /$  55            push    ebp
      004BFCF1  |.  8BEC          mov     ebp, esp
      004BFCF3  |.  B9 07000000   mov     ecx, 7
      004BFCF8  |>  6A 00         /push    0
      004BFCFA  |.  6A 00         |push    0
      004BFCFC  |.  49            |dec     ecx

      省略部分代码

      004BFD22  |.  8B45 EC       mov     eax, dword ptr [ebp-14]          ;  试炼码
      004BFD25  |.  8D55 F0       lea     edx, dword ptr [ebp-10]
      004BFD28  |.  E8 C7F1FBFF   call    0047EEF4
      004BFD2D  |.  8B55 F0       mov     edx, dword ptr [ebp-10]          ;  试炼码
      004BFD30  |.  B8 582E5100   mov     eax, 00512E58
      004BFD35  |.  E8 8655F4FF   call    004052C0
      004BFD3A  |.  E8 09FDFFFF   call    004BFA48                         ;  关键call
      004BFD3F  |.  8845 FB       mov     byte ptr [ebp-5], al             ;  标志位al值传递
      004BFD42  |.  807D FB 00    cmp     byte ptr [ebp-5], 0
      004BFD46  |.  0F84 D8000000 je      004BFE24                         ;  关键跳转
    ************************************************* *****************
    004BFD3F      mov     byte ptr [ebp-5], al

    al=1则跳向成功,al=0则跳向失败。而al值由 call    004BFA48 决定

    ********************************************************************

    004BFA48  /$  55            push    ebp
    004BFA49  |.  8BEC          mov     ebp, esp
    004BFA4B  |.  83C4 F0       add     esp, -10
    004BFA4E  |.  33C0          xor     eax, eax
    004BFA50  |.  8945 F8       mov     dword ptr [ebp-8], eax

    代码省略

    004BFAF0  |.  8078 0A 33    cmp     byte ptr [eax+A], 33             ;  试炼码第11位是否为3?
    004BFAF4  |.  0F94C0        sete    al
    004BFAF7  |.  83E0 7F       and     eax, 7F
    004BFAFA  |.  0145 F8       add     dword ptr [ebp-8], eax
    004BFAFD  |.  837D F8 07    cmp     dword ptr [ebp-8], 7             ;  如果前面7位数字验证成功,则[ebp-8]=7
    004BFB01  |.  0F9445 FF     sete    byte ptr [ebp-1]                 ;  真则置[ebp-1]=1
    004BFB05  |>  8A45 FF       mov     al, byte ptr [ebp-1]             ;  标志位al的值取决于[ebp-1]的值
    004BFB08  |.  8BE5          mov     esp, ebp
    004BFB0A  |.  5D            pop     ebp

    ******************************************************************************
    004BFB05       mov     al, byte ptr [ebp-1]  修改为
                  
                          mov     al, 1 即可完美爆破。
    ******************************************************************************
    l六、总结

      
      此程序算法简单,捏了个软柿子,呵呵。不过方便我等菜鸟学习。总结下注册算法部分,后面程序还对注册码进行了加密,放置在注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Access Manager
      
      不进行讨论。
      
      1、注册码必须是14位;
      
      2.注册码必须满足:
      
        第1位是”2”,第3位是“2”,第4位是“1”,第5位是“9”,第8位是“0”,第9位是“5”,第11位是“3”。
      
      其它为任意数字或字符,提供一组可用注册码:2@21956052367a

    [ 本帖最后由 qifeon 于 2008-8-27 15:43 编辑 ]

    评分

    参与人数 1威望 +20 飘云币 +40 收起 理由
    tianxj + 20 + 40 您发布的主题属于精品!

    查看全部评分

    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-8-27 16:46:42 | 显示全部楼层
    /:good 学习用Winhex找事件按钮的方法~~~~~
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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