【文章标题】: BMP图片魔法师 2.55 分析
【文章作者】: the0crat
【作者邮箱】: the0crat.cn_at_gmail.com
【作者主页】: http://the0crat.blogcn.com
【生产日期】: 20070208
【软件名称】: BMP图片魔法师 2.55
【加壳方式】: ASPack 2.12 -> Alexey Solodovnikov
【保护方式】: 注册码
【编写语言】: Borland Delphi 6.0 - 7.0
【使用工具】: OD+Dede
【作者声明】: 本文仅供研究学习,本人对因这篇文章而导致的一切后果,不承担任何法律责任。本文中的不足之处请各位多多指教
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
--------------------------------------------------------------------------------
【详细过程】
又是ASPack 2.12的壳,看来比较照顾我们,很快脱了
输入注册信息以后,程序关闭,在004C2CB4下断,重新运行,断在这里

004C2CB4  /.  55            push    ebp
004C2CB5  |.  8BEC          mov     ebp, esp
004C2CB7  |.  33C9          xor     ecx, ecx
004C2CB9  |.  51            push    ecx
004C2CBA  |.  51            push    ecx
004C2CBB  |.  51            push    ecx
004C2CBC  |.  51            push    ecx
004C2CBD  |.  53            push    ebx
004C2CBE  |.  56            push    esi
004C2CBF  |.  8BF0          mov     esi, eax
004C2CC1  |.  33C0          xor     eax, eax
004C2CC3  |.  55            push    ebp
004C2CC4  |.  68 D32D4C00   push    004C2DD3
004C2CC9  |.  64:FF30       push    dword ptr fs:[eax]
004C2CCC  |.  64:8920       mov     dword ptr fs:[eax], esp
004C2CCF  |.  C605 34914C00>mov     byte ptr [4C9134], 0
004C2CD6  |.  B2 01         mov     dl, 1
004C2CD8  |.  A1 14624700   mov     eax, dword ptr [476214]
004C2CDD  |.  E8 3236FBFF   call    00476314
004C2CE2  |.  8BD8          mov     ebx, eax
004C2CE4  |.  BA 01000080   mov     edx, 80000001
004C2CE9  |.  8BC3          mov     eax, ebx
004C2CEB  |.  E8 C436FBFF   call    004763B4
004C2CF0  |.  B1 01         mov     cl, 1
004C2CF2  |.  BA E82D4C00   mov     edx, 004C2DE8                    ;  ASCII "Software\BmpMan"
004C2CF7  |.  8BC3          mov     eax, ebx
004C2CF9  |.  E8 1A37FBFF   call    00476418
004C2CFE  |.  8D4D FC       lea     ecx, dword ptr [ebp-4]
004C2D01  |.  BA 002E4C00   mov     edx, 004C2E00                    ;  ASCII "RegUser"
004C2D06  |.  8BC3          mov     eax, ebx
004C2D08  |.  E8 D338FBFF   call    004765E0                         ;  取用户名
004C2D0D  |.  8B55 FC       mov     edx, dword ptr [ebp-4]
004C2D10  |.  B8 38914C00   mov     eax, 004C9138
004C2D15  |.  E8 5A18F4FF   call    00404574
004C2D1A  |.  8D4D F8       lea     ecx, dword ptr [ebp-8]
004C2D1D  |.  BA 102E4C00   mov     edx, 004C2E10                    ;  regno
004C2D22  |.  8BC3          mov     eax, ebx
004C2D24  |.  E8 B738FBFF   call    004765E0                         ;  取注册码
004C2D29  |.  8B45 F8       mov     eax, dword ptr [ebp-8]
004C2D2C  |.  50            push    eax
004C2D2D  |.  8D4D F4       lea     ecx, dword ptr [ebp-C]
004C2D30  |.  BA 202E4C00   mov     edx, 004C2E20                    ;  ASCII "bmpmanChina"
004C2D35  |.  A1 38914C00   mov     eax, dword ptr [4C9138]
004C2D3A  |.  E8 B5DEFFFF   call    004C0BF4                         ;  跟入



004C0BF4  /$  55            push    ebp
004C0BF5  |.  8BEC          mov     ebp, esp
004C0BF7  |.  83C4 D0       add     esp, -30
004C0BFA  |.  53            push    ebx
004C0BFB  |.  56            push    esi
004C0BFC  |.  57            push    edi
004C0BFD  |.  33DB          xor     ebx, ebx
004C0BFF  |.  895D D0       mov     dword ptr [ebp-30], ebx
004C0C02  |.  895D D4       mov     dword ptr [ebp-2C], ebx
004C0C05  |.  8BF9          mov     edi, ecx
004C0C07  |.  8955 F8       mov     dword ptr [ebp-8], edx
004C0C0A  |.  8945 FC       mov     dword ptr [ebp-4], eax
004C0C0D  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
004C0C10  |.  E8 AB3DF4FF   call    004049C0
004C0C15  |.  8B45 F8       mov     eax, dword ptr [ebp-8]
004C0C18  |.  E8 A33DF4FF   call    004049C0
004C0C1D  |.  33C0          xor     eax, eax
004C0C1F  |.  55            push    ebp
004C0C20  |.  68 100D4C00   push    004C0D10
004C0C25  |.  64:FF30       push    dword ptr fs:[eax]
004C0C28  |.  64:8920       mov     dword ptr fs:[eax], esp
004C0C2B  |.  8BC7          mov     eax, edi
004C0C2D  |.  E8 EE38F4FF   call    00404520
004C0C32  |.  8D55 E0       lea     edx, dword ptr [ebp-20]
004C0C35  |.  8B45 F8       mov     eax, dword ptr [ebp-8]
004C0C38  |.  E8 23FFFFFF   call    004C0B60
004C0C3D  |.  B2 01         mov     dl, 1
004C0C3F  |.  8D45 E0       lea     eax, dword ptr [ebp-20]
004C0C42  |.  E8 29F2FFFF   call    004BFE70
004C0C47  |.  C745 D8 01000>mov     dword ptr [ebp-28], 1
004C0C4E  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
004C0C51  |.  E8 823BF4FF   call    004047D8
004C0C56  |.  8945 DC       mov     dword ptr [ebp-24], eax
004C0C59  |>  8D45 D4       /lea     eax, dword ptr [ebp-2C]
004C0C5C  |.  50            |push    eax
004C0C5D  |.  B9 08000000   |mov     ecx, 8
004C0C62  |.  8B55 D8       |mov     edx, dword ptr [ebp-28]
004C0C65  |.  8B45 FC       |mov     eax, dword ptr [ebp-4]
004C0C68  |.  E8 C33DF4FF   |call    00404A30
004C0C6D  |.  8D45 F0       |lea     eax, dword ptr [ebp-10]
004C0C70  |.  33C9          |xor     ecx, ecx
004C0C72  |.  BA 08000000   |mov     edx, 8
004C0C77  |.  E8 A022F4FF   |call    00402F1C
004C0C7C  |.  8B45 D4       |mov     eax, dword ptr [ebp-2C]
004C0C7F  |.  E8 543BF4FF   |call    004047D8
004C0C84  |.  50            |push    eax
004C0C85  |.  8D45 D4       |lea     eax, dword ptr [ebp-2C]
004C0C88  |.  E8 9B3DF4FF   |call    00404A28
004C0C8D  |.  8D55 F0       |lea     edx, dword ptr [ebp-10]
004C0C90  |.  59            |pop     ecx
004C0C91  |.  E8 5A1CF4FF   |call    004028F0                             ;  用户名的ascii
004C0C96  |.  8D55 E8       |lea     edx, dword ptr [ebp-18]
004C0C99  |.  8D45 F0       |lea     eax, dword ptr [ebp-10]
004C0C9C  |.  E8 A3F4FFFF   |call    004C0144                             ;  DES
004C0CA1  |.  BE 08000000   |mov     esi, 8
004C0CA6  |.  8D5D E8       |lea     ebx, dword ptr [ebp-18]
004C0CA9  |>  8D4D D0       |/lea     ecx, dword ptr [ebp-30]             ;  /*
                                                                          ;  转换成字符串并连接起来
004C0CAC  |.  33C0          ||xor     eax, eax
004C0CAE  |.  8A03          ||mov     al, byte ptr [ebx]
004C0CB0  |.  BA 02000000   ||mov     edx, 2
004C0CB5  |.  E8 527FF4FF   ||call    00408C0C
004C0CBA  |.  8B55 D0       ||mov     edx, dword ptr [ebp-30]
004C0CBD  |.  8BC7          ||mov     eax, edi
004C0CBF  |.  E8 1C3BF4FF   ||call    004047E0
004C0CC4  |.  43            ||inc     ebx
004C0CC5  |.  4E            ||dec     esi
004C0CC6  |.^ 75 E1         |\jnz     short 004C0CA9                      ;  */
004C0CC8  |.  8345 D8 08    |add     dword ptr [ebp-28], 8
004C0CCC  |.  8B45 DC       |mov     eax, dword ptr [ebp-24]
004C0CCF  |.  83C0 07       |add     eax, 7
004C0CD2  |.  85C0          |test    eax, eax
004C0CD4  |.  79 03         |jns     short 004C0CD9
004C0CD6  |.  83C0 07       |add     eax, 7
004C0CD9  |>  C1F8 03       |sar     eax, 3
004C0CDC  |.  C1E0 03       |shl     eax, 3
004C0CDF  |.  3B45 D8       |cmp     eax, dword ptr [ebp-28]
004C0CE2  |.^ 0F8D 71FFFFFF \jge     004C0C59
004C0CE8  |.  33C0          xor     eax, eax
004C0CEA  |.  5A            pop     edx
004C0CEB  |.  59            pop     ecx
004C0CEC  |.  59            pop     ecx
004C0CED  |.  64:8910       mov     dword ptr fs:[eax], edx
004C0CF0  |.  68 170D4C00   push    004C0D17
004C0CF5  |>  8D45 D0       lea     eax, dword ptr [ebp-30]
004C0CF8  |.  BA 02000000   mov     edx, 2
004C0CFD  |.  E8 4238F4FF   call    00404544
004C0D02  |.  8D45 F8       lea     eax, dword ptr [ebp-8]
004C0D05  |.  BA 02000000   mov     edx, 2
004C0D0A  |.  E8 3538F4FF   call    00404544
004C0D0F  \.  C3            retn

返回到刚才这里
004C2D3F  |.  8B55 F4       mov     edx, dword ptr [ebp-C]                ;  这里就是明文的注册码了~
004C2D42  |.  58            pop     eax
004C2D43  |.  E8 D41BF4FF   call    0040491C                              ;  对比
004C2D48  |.  75 07         jnz     short 004C2D51                        ;  跳跑则失败


算法单调,本来这软件不值得写什么算法分析的,但是在www.newhua.com上下的这个捆绑了一堆其他软件,太肮脏了,不把它内脏掏空了太对不起我的电脑了~废话不多说,go on

[算法总结]
注册码=char(DES(plain_text=ascii(用户名),key="bmpmanChina"))

用户名:the0crat
注册码:1CDED943BC85439B



[对这个软件实现过程的分析]
至于为什么能在bmp中插入一个不小的文件,方法不止一个。
我们知道"copy src.bmp/b+file.txt/b dst.bmp/b"能在一个bmp文件的末尾插入文件的数据,并且用看图软件察看时没有区别,不过用文本编辑器察看时能看到很明显的插入的数据,特别是增加了文件的长度,就像最低级的exe捆绑器那样,很不爽
这个软件不同的是不是在末尾添加,而是将bmp头部的一些不必要的数据替换成所捆绑的文件的数据,并且稍加转换了一下
简单来说,bmp头部有一块区域,就如同我们能利用pe的结构的特点将所需代码放在pe头部从而减小文件体积一样(推荐阅读watercloud老早的一篇文章:<<手工打造微型Win32可执行文件>>_at_http://www.xfocus.net/articles/200302/482.html),所以这里不废话了,看一下bmp的文件结构就能知道其中的道理了

简单来看看他将需要隐藏的文件插入bmp文件的流程

004C23DC   .  55            push    ebp
004C23DD   .  8BEC          mov     ebp, esp
004C23DF   .  33C9          xor     ecx, ecx
004C23E1   .  51            push    ecx
004C23E2   .  51            push    ecx
004C23E3   .  51            push    ecx
004C23E4   .  51            push    ecx
004C23E5   .  51            push    ecx
004C23E6   .  53            push    ebx
004C23E7   .  56            push    esi
004C23E8   .  57            push    edi
004C23E9   .  8945 FC       mov     dword ptr [ebp-4], eax
004C23EC   .  33C0          xor     eax, eax
004C23EE   .  55            push    ebp
004C23EF   .  68 C0264C00   push    004C26C0
004C23F4   .  64:FF30       push    dword ptr fs:[eax]
004C23F7   .  64:8920       mov     dword ptr fs:[eax], esp
004C23FA   .  8D55 F8       lea     edx, dword ptr [ebp-8]
004C23FD   .  8B45 FC       mov     eax, dword ptr [ebp-4]
004C2400   .  8B80 A0030000 mov     eax, dword ptr [eax+3A0]
004C2406   .  E8 9DCAF7FF   call    0043EEA8
004C240B   .  837D F8 00    cmp     dword ptr [ebp-8], 0
004C240F   .  75 0F         jnz     short 004C2420
004C2411   .  B8 D8264C00   mov     eax, 004C26D8
004C2416   .  E8 815CF7FF   call    0043809C
004C241B   .  E9 85020000   jmp     004C26A5
004C2420   >  8D55 F4       lea     edx, dword ptr [ebp-C]
004C2423   .  8B45 FC       mov     eax, dword ptr [ebp-4]
004C2426   .  8B80 9C030000 mov     eax, dword ptr [eax+39C]
004C242C   .  E8 77CAF7FF   call    0043EEA8
004C2431   .  837D F4 00    cmp     dword ptr [ebp-C], 0
004C2435   .  75 0F         jnz     short 004C2446
004C2437   .  B8 F8264C00   mov     eax, 004C26F8                    ;  请选择bmp格式的图片文件!!!
004C243C   .  E8 5B5CF7FF   call    0043809C
004C2441   .  E9 5F020000   jmp     004C26A5
004C2446   >  33C0          xor     eax, eax
004C2448   .  55            push    ebp
004C2449   .  68 9E264C00   push    004C269E
004C244E   .  64:FF30       push    dword ptr fs:[eax]
004C2451   .  64:8920       mov     dword ptr fs:[eax], esp
004C2454   .  33C0          xor     eax, eax
004C2456   .  55            push    ebp
004C2457   .  68 FD254C00   push    004C25FD
004C245C   .  64:FF30       push    dword ptr fs:[eax]
004C245F   .  64:8920       mov     dword ptr fs:[eax], esp
004C2462   .  B2 01         mov     dl, 1
004C2464   .  A1 B4F14B00   mov     eax, dword ptr [4BF1B4]
004C2469   .  E8 BACDFFFF   call    004BF228
004C246E   .  8BD8          mov     ebx, eax
004C2470   .  8D55 F0       lea     edx, dword ptr [ebp-10]
004C2473   .  8B45 FC       mov     eax, dword ptr [ebp-4]
004C2476   .  8B80 9C030000 mov     eax, dword ptr [eax+39C]
004C247C   .  E8 27CAF7FF   call    0043EEA8
004C2481   .  8B55 F0       mov     edx, dword ptr [ebp-10]
004C2484   .  8BC3          mov     eax, ebx
004C2486   .  E8 EDCDFFFF   call    004BF278
004C248B   .  8D55 EC       lea     edx, dword ptr [ebp-14]
004C248E   .  8B45 FC       mov     eax, dword ptr [ebp-4]
004C2491   .  8B80 A0030000 mov     eax, dword ptr [eax+3A0]
004C2497   .  E8 0CCAF7FF   call    0043EEA8
004C249C   .  8B55 EC       mov     edx, dword ptr [ebp-14]
004C249F   .  8BC3          mov     eax, ebx
004C24A1   .  E8 1ECEFFFF   call    004BF2C4
004C24A6   .  8BC3          mov     eax, ebx
004C24A8   .  E8 B3CEFFFF   call    004BF360
004C24AD   .  84C0          test    al, al
004C24AF   .  0F84 89000000 je      004C253E
004C24B5   .  6A 00         push    0                                ; /Arg1 = 00000000
004C24B7   .  66:8B0D 14274>mov     cx, word ptr [4C2714]            ; |
004C24BE   .  B2 03         mov     dl, 3                            ; |
004C24C0   .  B8 20274C00   mov     eax, 004C2720                    ; |此bmp文件中已有隐藏文件,要覆盖吗?
004C24C5   .  E8 DA5AF7FF   call    00437FA4                         ; \BmpMan_.00437FA4
004C24CA   .  83F8 07       cmp     eax, 7
004C24CD   .  75 6F         jnz     short 004C253E
004C24CF   .  8B45 FC       mov     eax, dword ptr [ebp-4]
004C24D2   .  8B80 9C030000 mov     eax, dword ptr [eax+39C]
004C24D8   .  33D2          xor     edx, edx
004C24DA   .  E8 F9C9F7FF   call    0043EED8
004C24DF   .  8B45 FC       mov     eax, dword ptr [ebp-4]
004C24E2   .  8B80 A0030000 mov     eax, dword ptr [eax+3A0]
004C24E8   .  33D2          xor     edx, edx
004C24EA   .  E8 E9C9F7FF   call    0043EED8
004C24EF   .  8B45 FC       mov     eax, dword ptr [ebp-4]
004C24F2   .  8B80 08030000 mov     eax, dword ptr [eax+308]
004C24F8   .  8B80 08020000 mov     eax, dword ptr [eax+208]
004C24FE   .  33D2          xor     edx, edx
004C2500   .  E8 FBA6FBFF   call    0047CC00
004C2505   .  33D2          xor     edx, edx
004C2507   .  E8 50A6FBFF   call    0047CB5C
004C250C   .  8B45 FC       mov     eax, dword ptr [ebp-4]
004C250F   .  8B80 08030000 mov     eax, dword ptr [eax+308]
004C2515   .  8B80 08020000 mov     eax, dword ptr [eax+208]
004C251B   .  BA 01000000   mov     edx, 1
004C2520   .  E8 DBA6FBFF   call    0047CC00
004C2525   .  33D2          xor     edx, edx
004C2527   .  E8 30A6FBFF   call    0047CB5C
004C252C   .  33C0          xor     eax, eax
004C252E   .  5A            pop     edx
004C252F   .  59            pop     ecx
004C2530   .  59            pop     ecx
004C2531   .  64:8910       mov     dword ptr fs:[eax], edx
004C2534   .  E8 D31AF4FF   call    0040400C
004C2539   .  E9 67010000   jmp     004C26A5
004C253E   >  BA 01000000   mov     edx, 1
004C2543   .  8BC3          mov     eax, ebx
004C2545   .  E8 4ED6FFFF   call    004BFB98
004C254A   .  84C0          test    al, al
004C254C   .  75 2C         jnz     short 004C257A
004C254E   .  B8 4C274C00   mov     eax, 004C274C                    ;  对不起,您要隐藏的文件太大了,您可先对其进行压缩,然后再进行隐藏操作!
004C2553   .  E8 445BF7FF   call    0043809C
004C2558   .  8B45 FC       mov     eax, dword ptr [ebp-4]
004C255B   .  8B80 A0030000 mov     eax, dword ptr [eax+3A0]
004C2561   .  33D2          xor     edx, edx
004C2563   .  E8 70C9F7FF   call    0043EED8
004C2568   .  33C0          xor     eax, eax
004C256A   .  5A            pop     edx
004C256B   .  59            pop     ecx
004C256C   .  59            pop     ecx
004C256D   .  64:8910       mov     dword ptr fs:[eax], edx
004C2570   .  E8 971AF4FF   call    0040400C
004C2575   .  E9 2B010000   jmp     004C26A5
004C257A   >  833D 30914C00>cmp     dword ptr [4C9130], 0            ;  比较是否有密码
004C2581   .  74 0D         je      short 004C2590
004C2583   .  8B15 30914C00 mov     edx, dword ptr [4C9130]
004C2589   .  8BC3          mov     eax, ebx
004C258B   .  E8 80CDFFFF   call    004BF310                         ;  保存密码
004C2590   >  8B45 FC       mov     eax, dword ptr [ebp-4]
004C2593   .  8B90 0C030000 mov     edx, dword ptr [eax+30C]
004C2599   .  8BC3          mov     eax, ebx
004C259B   .  E8 BCCDFFFF   call    004BF35C
004C25A0   .  8B45 FC       mov     eax, dword ptr [ebp-4]
004C25A3   .  8B80 64030000 mov     eax, dword ptr [eax+364]
004C25A9   .  80B8 60020000>cmp     byte ptr [eax+260], 1
004C25B0   .  75 07         jnz     short 004C25B9                   ;  是否备份
004C25B2   .  8BC3          mov     eax, ebx
004C25B4   .  E8 2FD4FFFF   call    004BF9E8
004C25B9   >  8BC3          mov     eax, ebx
004C25BB   .  E8 F4D6FFFF   call    004BFCB4                         ;  将文件数据加入bmp文件中
004C25C0   .  8B45 FC       mov     eax, dword ptr [ebp-4]
004C25C3   .  8B80 68030000 mov     eax, dword ptr [eax+368]
004C25C9   .  80B8 60020000>cmp     byte ptr [eax+260], 1
004C25D0   .  75 07         jnz     short 004C25D9
004C25D2   .  8BC3          mov     eax, ebx
004C25D4   .  E8 03D4FFFF   call    004BF9DC
004C25D9   >  6A 40         push    40
004C25DB   .  68 90274C00   push    004C2790                         ;  bmp图片魔法师
004C25E0   .  68 A0274C00   push    004C27A0                         ;     隐藏成功!
004C25E5   .  8B45 FC       mov     eax, dword ptr [ebp-4]
004C25E8   .  E8 4F30F8FF   call    0044563C
004C25ED   .  50            push    eax                              ; |hOwner
004C25EE   .  E8 754DF4FF   call    <jmp.&user32.MessageBoxA>        ; \MessageBoxA



提取有密码的bmp文件,弹出输入密码框,输入试练码,跟入

004C2E64   .  55            push    ebp
004C2E65   .  8BEC          mov     ebp, esp
004C2E67   .  33C9          xor     ecx, ecx
004C2E69   .  51            push    ecx
004C2E6A   .  51            push    ecx
004C2E6B   .  51            push    ecx
004C2E6C   .  51            push    ecx
004C2E6D   .  51            push    ecx
004C2E6E   .  53            push    ebx
004C2E6F   .  56            push    esi
004C2E70   .  57            push    edi
004C2E71   .  8945 FC       mov     dword ptr [ebp-4], eax
004C2E74   .  33C0          xor     eax, eax
004C2E76   .  55            push    ebp
004C2E77   .  68 A5304C00   push    004C30A5
004C2E7C   .  64:FF30       push    dword ptr fs:[eax]
004C2E7F   .  64:8920       mov     dword ptr fs:[eax], esp
004C2E82   .  B2 01         mov     dl, 1
004C2E84   .  A1 C0E64B00   mov     eax, dword ptr [4BE6C0]
004C2E89   .  E8 9AB8FFFF   call    004BE728
004C2E8E   .  8BD8          mov     ebx, eax
004C2E90   .  8D55 F8       lea     edx, dword ptr [ebp-8]
004C2E93   .  8B45 FC       mov     eax, dword ptr [ebp-4]
004C2E96   .  8B80 F4020000 mov     eax, dword ptr [eax+2F4]
004C2E9C   .  E8 07C0F7FF   call    0043EEA8
004C2EA1   .  8B55 F8       mov     edx, dword ptr [ebp-8]
004C2EA4   .  8BC3          mov     eax, ebx
004C2EA6   .  E8 9DB8FFFF   call    004BE748
004C2EAB   .  8D55 F0       lea     edx, dword ptr [ebp-10]
004C2EAE   .  8B45 FC       mov     eax, dword ptr [ebp-4]
004C2EB1   .  8B80 88030000 mov     eax, dword ptr [eax+388]
004C2EB7   .  E8 ECBFF7FF   call    0043EEA8
004C2EBC   .  8B45 F0       mov     eax, dword ptr [ebp-10]
004C2EBF   .  8D55 F4       lea     edx, dword ptr [ebp-C]
004C2EC2   .  E8 C55AF4FF   call    0040898C                         ;  取得输入密码
004C2EC7   .  8B45 F4       mov     eax, dword ptr [ebp-C]
004C2ECA   .  50            push    eax
004C2ECB   .  8D55 EC       lea     edx, dword ptr [ebp-14]
004C2ECE   .  8BC3          mov     eax, ebx
004C2ED0   .  E8 47BAFFFF   call    004BE91C                         ;  从文件中取得真密码
004C2ED5   .  8B55 EC       mov     edx, dword ptr [ebp-14]
004C2ED8   .  58            pop     eax
004C2ED9   .  E8 3E1AF4FF   call    0040491C
004C2EDE   .  0F85 79010000 jnz     004C305D                         ;  不相等则跳


这样加不加密码都一样了