飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 7670|回复: 8

[原创] 一个屏幕录像专家生成exe文件的密码的算法分析

[复制链接]
  • TA的每日心情
    奋斗
    2017-6-11 12:16
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2006-11-29 09:56:14 | 显示全部楼层 |阅读模式
    【破文标题】一个屏幕录像专家生成exe文件的密码的算法分析
    【破文作者】XXNB
    【作者邮箱】支持PYG
    【作者主页】binbinbin7456.ys168.com
    破解工具】OD
    【破解平台】XPsp2
    【软件名称】
    【软件大小】
    【原版下载】https://www.chinapyg.com/viewthr ... &extra=page%3D2
    【保护方式】
    【软件简介】
    【破解声明】菜鸟向高手学习!只为学习!
    ------------------------------------------------------------------------
    【破解过程】


    那个录像就在本论坛的上面那个网址   https://www.chinapyg.com/viewthr ... &extra=page%3D2


    早上看到这个东西,然后顺便分析了下。然后就有了这篇东西。

    这个录像被我证实是不能播放的。就算输入的是正确的密码,也是会出错,提示“高度无损解压缩出错”。也许是录像作者弄的。

    我来分析下算法而已。

    字符串查找“密码不对”可以找到下面代码:


    0040E280  /$  55            push    ebp
    0040E281  |.  8BEC          mov     ebp, esp
    0040E283  |.  83C4 AC       add     esp, -54
    0040E286  |.  53            push    ebx
    0040E287  |.  56            push    esi
    0040E288  |.  57            push    edi
    0040E289  |.  8BD8          mov     ebx, eax
    0040E28B  |.  8D75 C4       lea     esi, dword ptr [ebp-3C]
    0040E28E  |.  B8 904D4800   mov     eax, 00484D90
    0040E293  |.  E8 34320500   call    004614CC
    0040E298  |.  66:C746 10 08>mov     word ptr [esi+10], 8
    0040E29E  |.  8D45 FC       lea     eax, dword ptr [ebp-4]
    0040E2A1  |.  E8 6A38FFFF   call    00401B10
    0040E2A6  |.  8BD0          mov     edx, eax
    0040E2A8  |.  FF46 1C       inc     dword ptr [esi+1C]
    0040E2AB  |.  8B83 D4020000 mov     eax, dword ptr [ebx+2D4]
    0040E2B1  |.  E8 8AA20200   call    00438540
    0040E2B6  |.  8D55 FC       lea     edx, dword ptr [ebp-4]
    0040E2B9  |.  52            push    edx
    0040E2BA  |.  BA E44C4800   mov     edx, 00484CE4
    0040E2BF  |.  8D45 F8       lea     eax, dword ptr [ebp-8]
    0040E2C2  |.  E8 39E20500   call    0046C500
    0040E2C7  |.  FF46 1C       inc     dword ptr [esi+1C]
    0040E2CA  |.  8D55 F8       lea     edx, dword ptr [ebp-8]
    0040E2CD  |.  58            pop     eax
    0040E2CE  |.  E8 B5E30500   call    0046C688
    0040E2D3  |.  50            push    eax
    0040E2D4  |.  FF4E 1C       dec     dword ptr [esi+1C]
    0040E2D7  |.  8D45 F8       lea     eax, dword ptr [ebp-8]           ;  (Initial CPU selection)
    0040E2DA  |.  BA 02000000   mov     edx, 2
    0040E2DF  |.  E8 D4E20500   call    0046C5B8
    0040E2E4  |.  FF4E 1C       dec     dword ptr [esi+1C]               ; |
    0040E2E7  |.  8D45 FC       lea     eax, dword ptr [ebp-4]           ; |
    0040E2EA  |.  BA 02000000   mov     edx, 2                           ; |
    0040E2EF  |.  E8 C4E20500   call    0046C5B8                         ; \加密录像.0046C5B8
    0040E2F4  |.  59            pop     ecx
    0040E2F5  |.  84C9          test    cl, cl
    0040E2F7  |.  74 49         je      short 0040E342
    0040E2F9  |.  66:C746 10 14>mov     word ptr [esi+10], 14
    0040E2FF  |.  BA E54C4800   mov     edx, 00484CE5                    ;  请输入密码
    0040E304  |.  8D45 F4       lea     eax, dword ptr [ebp-C]
    0040E307  |.  E8 F4E10500   call    0046C500
    0040E30C  |.  FF46 1C       inc     dword ptr [esi+1C]
    0040E30F  |.  8B00          mov     eax, dword ptr [eax]
    0040E311  |.  E8 9A510200   call    004334B0
    0040E316  |.  FF4E 1C       dec     dword ptr [esi+1C]
    0040E319  |.  8D45 F4       lea     eax, dword ptr [ebp-C]
    0040E31C  |.  BA 02000000   mov     edx, 2
    0040E321  |.  E8 92E20500   call    0046C5B8
    0040E326  |.  8B83 D4020000 mov     eax, dword ptr [ebx+2D4]
    0040E32C  |.  8B10          mov     edx, dword ptr [eax]
    0040E32E  |.  FF92 B0000000 call    dword ptr [edx+B0]
    0040E334  |.  8B0E          mov     ecx, dword ptr [esi]
    0040E336  |.  64:890D 00000>mov     dword ptr fs:[0], ecx
    0040E33D  |.  E9 39010000   jmp     0040E47B
    0040E342  |>  6A 15         push    15                               ; /Arg3 = 00000015
    0040E344  |.  6A 00         push    0                                ; |Arg2 = 00000000
    0040E346  |.  8D45 AC       lea     eax, dword ptr [ebp-54]          ; |
    0040E349  |.  50            push    eax                              ; |Arg1
    0040E34A  |.  E8 292E0500   call    00461178                         ; \加密录像.00461178
    0040E34F  |.  83C4 0C       add     esp, 0C
    0040E352  |.  66:C746 10 20>mov     word ptr [esi+10], 20
    0040E358  |.  8D45 F0       lea     eax, dword ptr [ebp-10]
    0040E35B  |.  E8 B037FFFF   call    00401B10
    0040E360  |.  8BD0          mov     edx, eax
    0040E362  |.  FF46 1C       inc     dword ptr [esi+1C]
    0040E365  |.  8B83 D4020000 mov     eax, dword ptr [ebx+2D4]
    0040E36B  |.  E8 D0A10200   call    00438540
    0040E370  |.  8D45 F0       lea     eax, dword ptr [ebp-10]
    0040E373  |.  E8 A068FFFF   call    00404C18                         ;  上面那堆不知道干吗的
    0040E378  |.  8BF8          mov     edi, eax                         ;  这里看得到输入的假码
    0040E37A  |.  33C0          xor     eax, eax
    0040E37C  |.  56            push    esi                              ;  下面这堆也不知道干吗的
    0040E37D  |.  83C9 FF       or      ecx, FFFFFFFF
    0040E380  |.  F2:AE         repne   scas byte ptr es:[edi]
    0040E382  |.  F7D1          not     ecx
    0040E384  |.  2BF9          sub     edi, ecx
    0040E386  |.  8D75 AC       lea     esi, dword ptr [ebp-54]
    0040E389  |.  87F7          xchg    edi, esi
    0040E38B  |.  8BD1          mov     edx, ecx
    0040E38D  |.  8BC7          mov     eax, edi
    0040E38F  |.  C1E9 02       shr     ecx, 2
    0040E392  |.  8D45 F0       lea     eax, dword ptr [ebp-10]
    0040E395  |.  F3:A5         rep     movs dword ptr es:[edi], dword p>
    0040E397  |.  8BCA          mov     ecx, edx
    0040E399  |.  BA 02000000   mov     edx, 2
    0040E39E  |.  83E1 03       and     ecx, 3
    0040E3A1  |.  F3:A4         rep     movs byte ptr es:[edi], byte ptr>
    0040E3A3  |.  5E            pop     esi
    0040E3A4  |.  FF4E 1C       dec     dword ptr [esi+1C]
    0040E3A7  |.  E8 0CE20500   call    0046C5B8
    0040E3AC  |.  8D4D AC       lea     ecx, dword ptr [ebp-54]          ;  输入的假码
    0040E3AF  |.  51            push    ecx                              ; /假码入栈
    0040E3B0  |.  53            push    ebx                              ; |这个固定字符串入栈(ASCII " NH")。好像没有用上的
    0040E3B1  |.  E8 CE000000   call    0040E484                         ; \这个是算法call。简单的算法,跟进《《《《《《《《《
    0040E3B6  |.  83C4 08       add     esp, 8
    0040E3B9  |.  3B83 E4020000 cmp     eax, dword ptr [ebx+2E4]         ;  和10FD比较
    0040E3BF      0F84 9F000000 je      0040E464                         ;  如果相等就成功了
    0040E3C5  |.  FF83 E8020000 inc     dword ptr [ebx+2E8]
    0040E3CB  |.  83BB E8020000>cmp     dword ptr [ebx+2E8], 3
    0040E3D2  |.  75 3F         jnz     short 0040E413
    0040E3D4  |.  66:C746 10 2C>mov     word ptr [esi+10], 2C
    0040E3DA  |.  BA F04C4800   mov     edx, 00484CF0                    ;  密码不对
    0040E3DF  |.  8D45 EC       lea     eax, dword ptr [ebp-14]
    0040E3E2  |.  E8 19E10500   call    0046C500
    0040E3E7  |.  FF46 1C       inc     dword ptr [esi+1C]
    0040E3EA  |.  8B00          mov     eax, dword ptr [eax]
    0040E3EC  |.  E8 BF500200   call    004334B0
    0040E3F1  |.  FF4E 1C       dec     dword ptr [esi+1C]
    0040E3F4  |.  8D45 EC       lea     eax, dword ptr [ebp-14]
    0040E3F7  |.  BA 02000000   mov     edx, 2
    0040E3FC  |.  E8 B7E10500   call    0046C5B8
    0040E401  |.  8BC3          mov     eax, ebx
    0040E403  |.  E8 58E50100   call    0042C960
    0040E408  |.  8B16          mov     edx, dword ptr [esi]
    0040E40A  |.  64:8915 00000>mov     dword ptr fs:[0], edx
    0040E411  |.  EB 68         jmp     short 0040E47B
    0040E413  |>  66:C746 10 38>mov     word ptr [esi+10], 38
    0040E419  |.  BA F94C4800   mov     edx, 00484CF9                    ;  密码不对,请重新输入
    0040E41E  |.  8D45 E8       lea     eax, dword ptr [ebp-18]
    0040E421  |.  E8 DAE00500   call    0046C500
    0040E426  |.  FF46 1C       inc     dword ptr [esi+1C]
    0040E429  |.  8B00          mov     eax, dword ptr [eax]
    0040E42B  |.  E8 80500200   call    004334B0


    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    然后跟进算法call 》》》》》》  0040E3B1  |.  E8 CE000000   call    0040E484 《《《《《《《


    0040E484  /$  55            push    ebp
    0040E485  |.  8BEC          mov     ebp, esp
    0040E487  |.  53            push    ebx
    0040E488  |.  56            push    esi
    0040E489  |.  57            push    edi
    0040E48A  |.  BF D5070000   mov     edi, 7D5                         ;  常量7D5(2005)
    0040E48F  |.  33F6          xor     esi, esi                         ;  清空esi。准备做计数器
    0040E491  |.  8B45 0C       mov     eax, dword ptr [ebp+C]
    0040E494  |.  8BC8          mov     ecx, eax
    0040E496  |.  EB 19         jmp     short 0040E4B1
    0040E498  |>  8BC6          /mov     eax, esi                        ;  下标付给eax
    0040E49A  |.  51            |push    ecx
    0040E49B  |.  B9 05000000   |mov     ecx, 5                          ;  常数
    0040E4A0  |.  99            |cdq
    0040E4A1  |.  F7F9          |idiv    ecx                             ;  除以5。
    0040E4A3  |.  59            |pop     ecx
    0040E4A4  |.  03C6          |add     eax, esi                        ;  整数部分+下标
    0040E4A6  |.  40            |inc     eax                             ;  然后再加1。
    0040E4A7  |.  33D2          |xor     edx, edx
    0040E4A9  |.  8AD3          |mov     dl, bl                          ;  ascii移到dl
    0040E4AB  |.  F7EA          |imul    edx                             ;  *
    0040E4AD  |.  03F8          |add     edi, eax                        ;  加上常量7d5(2005)。结果累加在这里
    0040E4AF  |.  46            |inc     esi
    0040E4B0  |.  41            |inc     ecx
    0040E4B1  |>  8A19           mov     bl, byte ptr [ecx]              ;  逐个取输入的假码
    0040E4B3  |.  84DB          |test    bl, bl
    0040E4B5  |.^ 75 E1         \jnz     short 0040E498                  ;  这个循环的结果在edi。所以直接执行到下一行,看结果
    0040E4B7  |.  8BC7          mov     eax, edi                         ;  结果放到eax
    0040E4B9  |.  5F            pop     edi
    0040E4BA  |.  5E            pop     esi
    0040E4BB  |.  5B            pop     ebx
    0040E4BC  |.  5D            pop     ebp
    0040E4BD  \.  C3            retn



    .版本 2

    .程序集 窗口程序集1

    .子程序 _按钮1_被单击
    .局部变量 name, 文本型
    .局部变量 len, 整数型
    .局部变量 eax, 整数型
    .局部变量 i, 整数型
    .局部变量 sum, 整数型
    .局部变量 temp, 整数型
    .局部变量 esi, 整数型

    name = 编辑框1.内容
    len = 取文本长度 (name)
    sum = 2005
    esi = 0
    .计次循环首 (len, i)
        eax = 取代码 (name, i)
        i = esi
        temp = i \ 5
        i = i + temp
        i = i + 1
        eax = eax × i
        sum = sum + eax
        esi = esi + 1
    .计次循环尾 ()

    编辑框2.内容 = 到文本 (sum)

    ------------------------------------------------------------------------
    【破解总结】


    我给的那个易语言的源代码功能是算号而已。要自己去尝试。只要结果能得到 4349 就是成功的。慢慢试吧。

    我给出两个可用的密码

    baahzi

    ginbip


    1、总的算法就是如果对输入的密码的运算最后等于10FD(4349)的话,就成功。

    2、对输入的密码的运算的代码很短,看代码去,很简单的。

    [ 本帖最后由 binbinbin 于 2006-11-29 10:04 编辑 ]

    评分

    参与人数 1威望 +48 飘云币 +12 收起 理由
    易难为易 + 48 + 12

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2016-10-21 20:30
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2006-11-29 13:46:57 | 显示全部楼层
    应该不仅仅是密码问题,还有图象、文字、声音等的检验吧?
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2017-6-11 12:16
  • 签到天数: 10 天

    [LV.3]偶尔看看II

     楼主| 发表于 2006-11-29 17:36:30 | 显示全部楼层
    原帖由 hrbx 于 2006-11-29 13:46 发表
    应该不仅仅是密码问题,还有图象、文字、声音等的检验吧?



    我只会输入数字的破解。

    如果真的用上那些甚么图象校验。完全没听过也不可能会

    评分

    参与人数 1威望 +32 飘云币 +8 收起 理由
    易难为易 + 32 + 8

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2 小时前
  • 签到天数: 1487 天

    [LV.10]以坛为家III

    发表于 2006-11-29 19:53:10 | 显示全部楼层
    看算法是个很头疼的事。
    PYG19周年生日快乐!
  • TA的每日心情
    郁闷
    2018-7-2 23:34
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2006-11-29 20:24:51 | 显示全部楼层
    不懂汇编!对于这样的加密教程!只有干着急的份!
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2016-10-21 20:30
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2006-11-29 22:28:32 | 显示全部楼层
    原帖由 binbinbin 于 2006-11-29 17:36 发表



    我只会输入数字的破解。

    如果真的用上那些甚么图象校验。完全没听过也不可能会


    没有屏幕录像专家,只能猜测。

    可以用屏幕像专家录一个有密码的录像,然后输入你提供的密码看能否解压播放就知道了。

    输入密码应该只是第一关,后面似乎还有校验。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-8-30 01:16:49 | 显示全部楼层
    不懂汇编!对于这样的加密教程!只有干着急的份!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-9-9 19:05:14 | 显示全部楼层
    不懂汇编!对于这样的加密教程!只有干着急的份!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-9-11 00:18:35 | 显示全部楼层
    学习一下,谢谢
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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