飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 7501|回复: 2

[原创] 安全删除文件Kernel File Shredder11.04.01爆破分析

[复制链接]
  • TA的每日心情
    无聊
    2018-7-9 18:21
  • 签到天数: 948 天

    [LV.10]以坛为家III

    发表于 2016-5-30 15:08:58 | 显示全部楼层 |阅读模式
    本帖最后由 东海浪子 于 2016-5-30 15:24 编辑

    【破文标题】安全删除文件Kernel File Shredder11.04.01爆破笔记
    【破文作者】东海浪子
    【作者邮箱】
    【作者主页】
    破解工具】OD
    【破解平台】虚拟机WINXP SP3
    【软件名称】Kernel File Shredder11.04.01
    【软件大小】
    【原版下载】http://www.freedownloadscenter.com/Utilities/Misc__Utilities/Secure_Delete_Files_Download.html
    【软件说明】内核文件碎纸机永久性删除Windows用户敏感数据从计算机硬盘。它采用先进的文件切碎算法如零集成(1通)和国防部(3次)5220(百度翻译的)
    【阅读对象】爱好破解的初学者,有不足错误之处恳请大牛大神多多指正
    【破解声明】本文仅做研究所用,供破解技术爱好者学习研究讨论。如喜欢该软件,建议购买正版。
    ------------------------------------------------------------------------
    【破解过程】
    1、安装好Kernel File Shredder11.04.01,用peid查了一下。Unknown。VC8 -> Microsoft Corporation [Overlay] *不知道什么壳,先OD载入调试。
    2、运行软件,试注册,通过F12暂停法和字符串查找,下断点,经过几次重启调试,很容易来到下面这段关键call,这步骤不详细介绍了。
    [Asm] 纯文本查看 复制代码
    0040E8E0  /$  6A FF         push -0x1                                           ;  关键call入口,重启验证和注册验证都来这里[/size][/b]
    0040E8E2  |.  68 C5BE7A00   push Kernel_F.007ABEC5
    0040E8E7  |.  64:A1 0000000>mov eax,dword ptr fs:[0]
    0040E8ED  |.  50            push eax
    0040E8EE  |.  B8 503A0000   mov eax,0x3A50
    0040E8F3  |.  E8 08E41200   call Kernel_F.0053CD00
    0040E8F8  |.  A1 C0678600   mov eax,dword ptr ds:[0x8667C0]
    0040E8FD  |.  33C4          xor eax,esp
    0040E8FF  |.  898424 483A00>mov dword ptr ss:[esp+0x3A48],eax
    0040E906  |.  53            push ebx
    0040E907  |.  55            push ebp
    0040E908  |.  56            push esi
    0040E909  |.  57            push edi                                            ;  Kernel_F.00874B34
    0040E90A  |.  A1 C0678600   mov eax,dword ptr ds:[0x8667C0]
    0040E90F  |.  33C4          xor eax,esp
    0040E911  |.  50            push eax
    0040E912  |.  8D8424 643A00>lea eax,dword ptr ss:[esp+0x3A64]
    0040E919  |.  64:A3 0000000>mov dword ptr fs:[0],eax
    0040E91F  |.  8BAC24 743A00>mov ebp,dword ptr ss:[esp+0x3A74]                   ;  Kernel_F.00874A38
    0040E926  |.  896C24 28     mov dword ptr ss:[esp+0x28],ebp
    0040E92A  |.  6A 00         push 0x0
    0040E92C  |.  8D8D F4000000 lea ecx,dword ptr ss:[ebp+0xF4]
    0040E932  |.  68 3C488100   push Kernel_F.0081483C
    0040E937  |.  C78424 743A00>mov dword ptr ss:[esp+0x3A74],0x0
    0040E942  |.  E8 1950FFFF   call Kernel_F.00403960
    0040E947  |.  6A 00         push 0x0
    0040E949  |.  8D8D F8000000 lea ecx,dword ptr ss:[ebp+0xF8]
    0040E94F  |.  68 40488100   push Kernel_F.00814840
    0040E954  |.  E8 0750FFFF   call Kernel_F.00403960
    0040E959  |.  68 44488100   push Kernel_F.00814844                              ;  UNI56V
    0040E95E  |.  8D4C24 40     lea ecx,dword ptr ss:[esp+0x40]
    0040E962  |.  E8 2951FFFF   call Kernel_F.00403A90
    0040E967  |.  C68424 6C3A00>mov byte ptr ss:[esp+0x3A6C],0x1
    0040E96F  |.  E8 DBAD0400   call Kernel_F.0045974F
    0040E974  |.  33C9          xor ecx,ecx
    0040E976  |.  85C0          test eax,eax
    0040E978  |.  0F95C1        setne cl
    0040E97B  |.  85C9          test ecx,ecx
    0040E97D  |.  75 0A         jnz short Kernel_F.0040E989
    0040E97F  |>  68 05400080   push 0x80004005
    0040E984  |.  E8 272EFFFF   call Kernel_F.004017B0
    0040E989  |>  8B10          mov edx,dword ptr ds:[eax]                          ;  Kernel_F.004A0054
    0040E98B  |.  8BC8          mov ecx,eax
    0040E98D  |.  8B42 0C       mov eax,dword ptr ds:[edx+0xC]
    0040E990  |.  FFD0          call eax
    0040E992  |.  83C0 10       add eax,0x10
    0040E995  |.  894424 2C     mov dword ptr ss:[esp+0x2C],eax
    0040E999  |.  8D8C24 783A00>lea ecx,dword ptr ss:[esp+0x3A78]
    0040E9A0  |.  51            push ecx
    0040E9A1  |.  8D5424 3C     lea edx,dword ptr ss:[esp+0x3C]
    0040E9A5  |.  68 54488100   push Kernel_F.00814854                              ;  Software\
    0040E9AA  |.  BB 02000000   mov ebx,0x2
    0040E9AF  |.  52            push edx                                            ;  Kernel_F.004D0054
    0040E9B0  |.  889C24 783A00>mov byte ptr ss:[esp+0x3A78],bl
    0040E9B7  |.  E8 44810000   call Kernel_F.00416B00
    0040E9BC  |.  83C4 0C       add esp,0xC
    0040E9BF  |.  50            push eax
    0040E9C0  |.  8D4C24 30     lea ecx,dword ptr ss:[esp+0x30]
    0040E9C4  |.  C68424 703A00>mov byte ptr ss:[esp+0x3A70],0x3
    0040E9CC  |.  E8 3F5FFFFF   call Kernel_F.00404910
    0040E9D1  |.  889C24 6C3A00>mov byte ptr ss:[esp+0x3A6C],bl
    0040E9D8  |.  8B4424 38     mov eax,dword ptr ss:[esp+0x38]
    0040E9DC  |.  83C0 F0       add eax,-0x10
    0040E9DF  |.  8D48 0C       lea ecx,dword ptr ds:[eax+0xC]
    0040E9E2  |.  83CA FF       or edx,-0x1
    0040E9E5  |.  f0:0fc111     lock xadd dword ptr ds:[ecx],edx
    0040E9E9  |.  4A            dec edx                                             ;  Kernel_F.004D0054
    0040E9EA  |.  85D2          test edx,edx                                        ;  Kernel_F.004D0054
    0040E9EC  |.  7F 0A         jg short Kernel_F.0040E9F8
    0040E9EE  |.  8B08          mov ecx,dword ptr ds:[eax]                          ;  Kernel_F.004A0054
    0040E9F0  |.  8B11          mov edx,dword ptr ds:[ecx]
    0040E9F2  |.  50            push eax
    0040E9F3  |.  8B42 04       mov eax,dword ptr ds:[edx+0x4]
    0040E9F6  |.  FFD0          call eax
    0040E9F8  |>  8B4424 2C     mov eax,dword ptr ss:[esp+0x2C]
    0040E9FC  |.  8D9424 4C3600>lea edx,dword ptr ss:[esp+0x364C]
    0040EA03  |.  2BD0          sub edx,eax
    0040EA05  |>  0FB708        /movzx ecx,word ptr ds:[eax]
    0040EA08  |.  66:890C02     |mov word ptr ds:[edx+eax],cx
    0040EA0C  |.  03C3          |add eax,ebx
    0040EA0E  |.  66:85C9       |test cx,cx
    0040EA11  |.^ 75 F2         \jnz short Kernel_F.0040EA05
    0040EA13  |.  C74424 40 684>mov dword ptr ss:[esp+0x40],Kernel_F.00814868       ;  RegVal  下面检测注册表里regval值
    0040EA1B  |.  E8 2FAD0400   call Kernel_F.0045974F
    0040EA20  |.  33C9          xor ecx,ecx
    0040EA22  |.  85C0          test eax,eax
    0040EA24  |.  0F95C1        setne cl
    0040EA27  |.  85C9          test ecx,ecx
    0040EA29  |.  75 0A         jnz short Kernel_F.0040EA35
    0040EA2B  |.  68 05400080   push 0x80004005
    0040EA30  |.  E8 7B2DFFFF   call Kernel_F.004017B0
    0040EA35  |>  8B10          mov edx,dword ptr ds:[eax]                          ;  Kernel_F.004A0054
    0040EA37  |.  8BC8          mov ecx,eax
    0040EA39  |.  8B42 0C       mov eax,dword ptr ds:[edx+0xC]
    0040EA3C  |.  FFD0          call eax
    0040EA3E  |.  83C0 10       add eax,0x10
    0040EA41  |.  894424 20     mov dword ptr ss:[esp+0x20],eax
    0040EA45  |.  68 68488100   push Kernel_F.00814868                              ;  RegVal
    0040EA4A  |.  8D8C24 503600>lea ecx,dword ptr ss:[esp+0x3650]
    0040EA51  |.  8DBD FC000000 lea edi,dword ptr ss:[ebp+0xFC]
    0040EA57  |.  51            push ecx
    0040EA58  |.  8D5C24 28     lea ebx,dword ptr ss:[esp+0x28]
    0040EA5C  |.  C68424 743A00>mov byte ptr ss:[esp+0x3A74],0x4
    0040EA64  |.  E8 E7130400   call Kernel_F.0044FE50
    0040EA69  |.  8B7424 20     mov esi,dword ptr ss:[esp+0x20]                     ;  Kernel_F.0086E358
    0040EA6D  |.  8D9424 543800>lea edx,dword ptr ss:[esp+0x3854]
    0040EA74  |.  8BC6          mov eax,esi
    0040EA76  |.  2BD6          sub edx,esi
    0040EA78  |.  EB 06         jmp short Kernel_F.0040EA80
    0040EA7A  |   8D9B 00000000 lea ebx,dword ptr ds:[ebx]
    0040EA80  |>  0FB708        /movzx ecx,word ptr ds:[eax]
    0040EA83  |.  83C0 02       |add eax,0x2
    0040EA86  |.  66:85C9       |test cx,cx
    0040EA89  |.^ 75 F5         \jnz short Kernel_F.0040EA80
    0040EA8B  |.  68 58468100   push Kernel_F.00814658                              ;  abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789 -_.@
    0040EA90  |.  56            push esi
    0040EA91  |.  E8 55971200   call Kernel_F.005381EB
    0040EA96  |.  83C4 08       add esp,0x8
    0040EA99  |.  85C0          test eax,eax
    0040EA9B  |.  74 1F         je short Kernel_F.0040EABC
    0040EA9D  |.  2BC6          sub eax,esi
    0040EA9F  |.  D1F8          sar eax,1
    0040EAA1  |.  83F8 FF       cmp eax,-0x1
    0040EAA4  |.  74 16         je short Kernel_F.0040EABC
    0040EAA6  |.  8D4C24 20     lea ecx,dword ptr ss:[esp+0x20]
    0040EAAA  |.  E8 31F0FFFF   call Kernel_F.0040DAE0
    0040EAAF  |.  83F8 FF       cmp eax,-0x1
    0040EAB2  |.  0F85 D2030000 jnz Kernel_F.0040EE8A
    0040EAB8  |.  8B7424 20     mov esi,dword ptr ss:[esp+0x20]                     ;  Kernel_F.0086E358
    0040EABC  |>  83BC24 7C3A00>cmp dword ptr ss:[esp+0x3A7C],0x0                   ;  比较注册表里有无数值
    0040EAC4  |.  0F84 A9000000 je Kernel_F.0040EB73                                ;  相等跳向注册框
    0040EACA  |.  8D46 F0       lea eax,dword ptr ds:[esi-0x10]
    0040EACD  |.  C68424 6C3A00>mov byte ptr ss:[esp+0x3A6C],0x2
    0040EAD5  |.  8D50 0C       lea edx,dword ptr ds:[eax+0xC]
    0040EAD8  |.  83C9 FF       or ecx,-0x1
    0040EADB  |.  f0:0fc10a     lock xadd dword ptr ds:[edx],ecx
    0040EADF  |.  49            dec ecx
    0040EAE0  |.  85C9          test ecx,ecx
    0040EAE2  |>  7F 0A         jg short Kernel_F.0040EAEE
    0040EAE4  |.  8B08          mov ecx,dword ptr ds:[eax]                          ;  Kernel_F.004A0054
    0040EAE6  |.  8B11          mov edx,dword ptr ds:[ecx]
    0040EAE8  |.  50            push eax
    0040EAE9  |.  8B42 04       mov eax,dword ptr ds:[edx+0x4]
    0040EAEC  |.  FFD0          call eax
    0040EAEE  |>  C68424 6C3A00>mov byte ptr ss:[esp+0x3A6C],0x1
    0040EAF6  |.  8B4424 2C     mov eax,dword ptr ss:[esp+0x2C]
    0040EAFA  |.  83C0 F0       add eax,-0x10
    0040EAFD  |.  8D48 0C       lea ecx,dword ptr ds:[eax+0xC]
    0040EB00  |.  83CA FF       or edx,-0x1
    0040EB03  |.  f0:0fc111     lock xadd dword ptr ds:[ecx],edx
    0040EB07  |.  4A            dec edx                                             ;  Kernel_F.004D0054
    0040EB08  |.  85D2          test edx,edx                                        ;  Kernel_F.004D0054
    0040EB0A  |.  7F 0A         jg short Kernel_F.0040EB16
    0040EB0C  |.  8B08          mov ecx,dword ptr ds:[eax]                          ;  Kernel_F.004A0054
    0040EB0E  |.  8B11          mov edx,dword ptr ds:[ecx]
    0040EB10  |.  50            push eax
    0040EB11  |.  8B42 04       mov eax,dword ptr ds:[edx+0x4]
    0040EB14  |.  FFD0          call eax
    0040EB16  |>  C68424 6C3A00>mov byte ptr ss:[esp+0x3A6C],0x0
    0040EB1E  |.  8B4424 3C     mov eax,dword ptr ss:[esp+0x3C]
    0040EB22  |.  83C0 F0       add eax,-0x10
    0040EB25  |.  83CA FF       or edx,-0x1
    0040EB28  |.  8D48 0C       lea ecx,dword ptr ds:[eax+0xC]
    0040EB2B  |.  f0:0fc111     lock xadd dword ptr ds:[ecx],edx
    0040EB2F  |.  4A            dec edx                                             ;  Kernel_F.004D0054
    0040EB30  |.  85D2          test edx,edx                                        ;  Kernel_F.004D0054
    0040EB32  |.  7F 0A         jg short Kernel_F.0040EB3E
    0040EB34  |.  8B08          mov ecx,dword ptr ds:[eax]                          ;  Kernel_F.004A0054
    0040EB36  |.  8B11          mov edx,dword ptr ds:[ecx]
    0040EB38  |.  50            push eax
    0040EB39  |.  8B42 04       mov eax,dword ptr ds:[edx+0x4]
    0040EB3C  |.  FFD0          call eax
    0040EB3E  |>  C78424 6C3A00>mov dword ptr ss:[esp+0x3A6C],-0x1
    0040EB49  |.  8B8424 783A00>mov eax,dword ptr ss:[esp+0x3A78]
    0040EB50  |.  83C0 F0       add eax,-0x10
    0040EB53  |.  8D48 0C       lea ecx,dword ptr ds:[eax+0xC]
    0040EB56  |.  83CA FF       or edx,-0x1
    0040EB59  |.  f0:0fc111     lock xadd dword ptr ds:[ecx],edx
    0040EB5D  |.  4A            dec edx                                             ;  Kernel_F.004D0054
    0040EB5E  |.  85D2          test edx,edx                                        ;  Kernel_F.004D0054
    0040EB60  |.  7F 0A         jg short Kernel_F.0040EB6C
    0040EB62  |.  8B08          mov ecx,dword ptr ds:[eax]                          ;  Kernel_F.004A0054
    0040EB64  |.  8B11          mov edx,dword ptr ds:[ecx]
    0040EB66  |.  50            push eax
    0040EB67  |.  8B42 04       mov eax,dword ptr ds:[edx+0x4]
    0040EB6A  |.  FFD0          call eax
    0040EB6C  |>  33C0          xor eax,eax
    0040EB6E  |.  E9 E20C0000   jmp Kernel_F.0040F855
    0040EB73  |>  8D4C24 4C     /lea ecx,dword ptr ss:[esp+0x4C]
    0040EB77  |.  51            |push ecx
    0040EB78  |.  E8 43880000   |call Kernel_F.004173C0
    0040EB7D  |.  8D4C24 4C     |lea ecx,dword ptr ss:[esp+0x4C]
    0040EB81  |.  C68424 6C3A00>|mov byte ptr ss:[esp+0x3A6C],0x5
    0040EB89  |.  E8 402D0400   |call Kernel_F.004518CE                             ;  弹出注册窗口call
    0040EB8E  |.  83F8 01       |cmp eax,0x1                                        ;  比较有无注册
    0040EB91  |.  0F85 AA020000 |jnz Kernel_F.0040EE41
    0040EB97  |.  8B8424 BC2D00>|mov eax,dword ptr ss:[esp+0x2DBC]                  ;  注册码入eax
    0040EB9E  |.  83C0 F0       |add eax,-0x10                                      ;  注册码地址-10
    0040EBA1  |.  50            |push eax
    0040EBA2  |.  E8 C94AFFFF   |call Kernel_F.00403670
    0040EBA7  |.  8D68 10       |lea ebp,dword ptr ds:[eax+0x10]                    ;  注册码入ebp
    0040EBAA  |.  83C4 04       |add esp,0x4                                        ;  esp+4
    0040EBAD  |.  896C24 38     |mov dword ptr ss:[esp+0x38],ebp                    ;  注册码入esp+38
    0040EBB1  |.  C68424 6C3A00>|mov byte ptr ss:[esp+0x3A6C],0x6                   ;  6入esp+3A6C
    0040EBB9  |.  8B8424 C02D00>|mov eax,dword ptr ss:[esp+0x2DC0]                  ;  esp+2DC0(注册名)入eax
    0040EBC0  |.  83C0 F0       |add eax,-0x10                                      ;  eax-10
    0040EBC3  |.  50            |push eax
    0040EBC4  |.  E8 A74AFFFF   |call Kernel_F.00403670
    0040EBC9  |.  8D58 10       |lea ebx,dword ptr ds:[eax+0x10]                    ;  eax+10(注册名)入ebx
    0040EBCC  |.  83C4 04       |add esp,0x4                                        ;  esp+4
    0040EBCF  |.  895C24 1C     |mov dword ptr ss:[esp+0x1C],ebx                    ;  注册名入esp+1C
    0040EBD3  |.  8B7424 28     |mov esi,dword ptr ss:[esp+0x28]                    ;  Kernel_F.00874A38
    0040EBD7  |.  8D5424 1C     |lea edx,dword ptr ss:[esp+0x1C]
    0040EBDB  |.  52            |push edx                                           ;  Kernel_F.004D0054
    0040EBDC  |.  8D8E F4000000 |lea ecx,dword ptr ds:[esi+0xF4]
    0040EBE2  |.  C68424 703A00>|mov byte ptr ss:[esp+0x3A70],0x7                   ;  7入esp+3A70
    0040EBEA  |.  E8 215DFFFF   |call Kernel_F.00404910
    0040EBEF  |.  8D4424 38     |lea eax,dword ptr ss:[esp+0x38]                    ;  esp+38入eax
    0040EBF3  |.  50            |push eax
    0040EBF4  |.  8D8E F8000000 |lea ecx,dword ptr ds:[esi+0xF8]
    0040EBFA  |.  E8 115DFFFF   |call Kernel_F.00404910
    0040EBFF  |.  68 78488100   |push Kernel_F.00814878
    0040EC04  |.  8D4C24 28     |lea ecx,dword ptr ss:[esp+0x28]
    0040EC08  |.  E8 834EFFFF   |call Kernel_F.00403A90
    0040EC0D  |.  8D4C24 24     |lea ecx,dword ptr ss:[esp+0x24]
    0040EC11  |.  C68424 6C3A00>|mov byte ptr ss:[esp+0x3A6C],0x8                   ;  8入esp+3A6C
    0040EC19  |.  8B8424 783A00>|mov eax,dword ptr ss:[esp+0x3A78]                  ;  esp+3A78(LKFSHR)入eax
    0040EC20  |.  51            |push ecx
    0040EC21  |.  51            |push ecx
    0040EC22  |.  83C0 F0       |add eax,-0x10                                      ;  eax-10
    0040EC25  |.  896424 3C     |mov dword ptr ss:[esp+0x3C],esp                    ;  esp入esp+3C
    0040EC29  |.  8BF4          |mov esi,esp                                        ;  esp入esi
    0040EC2B  |.  50            |push eax
    0040EC2C  |.  E8 3F4AFFFF   |call Kernel_F.00403670
    0040EC31  |.  83C0 10       |add eax,0x10                                       ;  eax+10
    0040EC34  |.  8906          |mov dword ptr ds:[esi],eax                         ;  eax(LFKSHR)入esi
    0040EC36  |.  C68424 783A00>|mov byte ptr ss:[esp+0x3A78],0x9                   ;  9入esp+3A78
    0040EC3E  |.  8D43 F0       |lea eax,dword ptr ds:[ebx-0x10]                    ;  ebx-10入eax
    0040EC41  |.  896424 3C     |mov dword ptr ss:[esp+0x3C],esp                    ;  esp入esp+3C
    0040EC45  |.  8BF4          |mov esi,esp                                        ;  esp入esi
    0040EC47  |.  50            |push eax
    0040EC48  |.  E8 234AFFFF   |call Kernel_F.00403670
    0040EC4D  |.  83C0 10       |add eax,0x10                                       ;  esx+10
    0040EC50  |.  8906          |mov dword ptr ds:[esi],eax                         ;  eax(注册名)入esi
    0040EC52  |.  83C4 04       |add esp,0x4                                        ;  esp+4
    0040EC55  |.  C68424 783A00>|mov byte ptr ss:[esp+0x3A78],0x8                   ;  8入esp+3A78
    0040EC5D  |.  E8 1E0C0000   |call Kernel_F.0040F880                             ;  算法call
    0040EC62  |.  33C0          |xor eax,eax                                        ;  eax清零
    0040EC64  |.  83C4 0C       |add esp,0xC                                        ;  esp+c
    0040EC67  |.  85ED          |test ebp,ebp
    0040EC69  |.  0F95C0        |setne al                                           ;  设为真
    0040EC6C  |.  85C0          |test eax,eax
    0040EC6E  |.^ 0F84 0BFDFFFF |je Kernel_F.0040E97F
    0040EC74  |.  8B7424 24     |mov esi,dword ptr ss:[esp+0x24]                    ;  esp+24(真码)入esi,可以做内存注册机
    0040EC78  |.  8BCD          |mov ecx,ebp                                        ;  注册码入ecx(爆破,可以把真码esi入ecx)
    0040EC7A  |.  8BC6          |mov eax,esi                                        ;  esi(真码)入eax
    0040EC7C  |.  8D6424 00     |lea esp,dword ptr ss:[esp]
    0040EC80  |>  66:8B10       |/mov dx,word ptr ds:[eax]                          ;  取eax(真码)奇数位字符ASCII码入dx
    0040EC83  |.  66:3B11       ||cmp dx,word ptr ds:[ecx]                          ;  dx和注册码字节的ASCII码比较
    0040EC86      75 1E         ||jnz short Kernel_F.0040ECA6                       ;  不相等跳走,爆破点1
    0040EC88  |.  66:85D2       ||test dx,dx                                        ;  有没取完字节
    0040EC8B  |.  74 15         ||je short Kernel_F.0040ECA2                        ;  取完跳走
    0040EC8D  |.  66:8B50 02    ||mov dx,word ptr ds:[eax+0x2]                      ;  取eax+2(真码)偶数位字符ASCII码入dx
    0040EC91  |.  66:3B51 02    ||cmp dx,word ptr ds:[ecx+0x2]                      ;  取ecx+2(注册码)字符ascii码和dx比较
    0040EC95      75 0F         ||jnz short Kernel_F.0040ECA6                       ;  不相等跳走,爆破点2
    0040EC97  |.  83C0 04       ||add eax,0x4                                       ;  eax+4
    0040EC9A  |.  83C1 04       ||add ecx,0x4                                       ;  ecx+4
    0040EC9D  |.  66:85D2       ||test dx,dx                                        ;  有没取完字节。
    0040ECA0  |.^ 75 DE         |\jnz short Kernel_F.0040EC80                       ;  不相等往上跳(循环)
    0040ECA2  |>  33C0          |xor eax,eax                                        ;  eax清零
    0040ECA4  |.  EB 05         |jmp short Kernel_F.0040ECAB
    0040ECA6  |>  1BC0          |sbb eax,eax
    0040ECA8  |.  83D8 FF       |sbb eax,-0x1
    0040ECAB  |>  85C0          |test eax,eax
    0040ECAD  |.  0F94C0        |sete al                                            ;  条件为真
    0040ECB0  |.  84C0          |test al,al
    0040ECB2  |.  0F84 E3000000 |je Kernel_F.0040ED9B
    0040ECB8  |.  B9 7C488100   |mov ecx,Kernel_F.0081487C
    0040ECBD  |.  8BC5          |mov eax,ebp                                        ;  注册码入eax
    0040ECBF  |.  90            |nop
    0040ECC0  |>  66:8B10       |/mov dx,word ptr ds:[eax]                          ;  注册码奇数位字符ascii码入dx
    0040ECC3  |.  66:3B11       ||cmp dx,word ptr ds:[ecx]                          ;  和ecx奇数位字符ascii码比较
    0040ECC6  |.  75 1E         ||jnz short Kernel_F.0040ECE6                       ;  不等跳走
    0040ECC8  |.  66:85D2       ||test dx,dx                                        ;  有没取完字节
    0040ECCB  |.  74 15         ||je short Kernel_F.0040ECE2                        ;  取完就跳走
    0040ECCD  |.  66:8B50 02    ||mov dx,word ptr ds:[eax+0x2]                      ;  注册码偶数位字节ascii码入dx
    0040ECD1  |.  66:3B51 02    ||cmp dx,word ptr ds:[ecx+0x2]                      ;  和ecx偶数位字节ascii码比较
    0040ECD5  |.  75 0F         ||jnz short Kernel_F.0040ECE6                       ;  不相等跳走
    0040ECD7  |.  83C0 04       ||add eax,0x4                                       ;  eax+4
    0040ECDA  |.  83C1 04       ||add ecx,0x4                                       ;  ecx+4
    0040ECDD  |.  66:85D2       ||test dx,dx                                        ;  比较有没取完字节
    0040ECE0  |.^ 75 DE         |\jnz short Kernel_F.0040ECC0                       ;  不相等往上跳(循环)
    0040ECE2  |>  33C0          |xor eax,eax                                        ;  esx清零
    0040ECE4  |.  EB 05         |jmp short Kernel_F.0040ECEB
    0040ECE6  |>  1BC0          |sbb eax,eax
    0040ECE8  |.  83D8 FF       |sbb eax,-0x1
    0040ECEB  |>  85C0          |test eax,eax
    0040ECED  |.  0F95C0        |setne al
    0040ECF0  |.  84C0          |test al,al
    0040ECF2  |.  0F84 A3000000 |je Kernel_F.0040ED9B
    0040ECF8  |.  68 D0458100   |push Kernel_F.008145D0                             ;  abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789 -_.@
    0040ECFD  |.  56            |push esi
    0040ECFE  |.  E8 E8941200   |call Kernel_F.005381EB
    0040ED03  |.  83C4 08       |add esp,0x8                                        ;  esp+8
    0040ED06  |.  85C0          |test eax,eax
    0040ED08  |.  74 38         |je short Kernel_F.0040ED42
    0040ED0A  |.  2B4424 24     |sub eax,dword ptr ss:[esp+0x24]                    ;  eax(真码)-esp+24(真码)
    0040ED0E  |.  D1F8          |sar eax,1                                          ;  eax右移一位
    0040ED10  |.  83F8 FF       |cmp eax,-0x1                                       ;  eax和-1比较
    0040ED13  |.  74 2D         |je short Kernel_F.0040ED42
    0040ED15  |.  8D4C24 24     |lea ecx,dword ptr ss:[esp+0x24]
    0040ED19  |.  E8 C2E6FFFF   |call Kernel_F.0040D3E0
    0040ED1E  |.  83F8 FF       |cmp eax,-0x1
    0040ED21  |.  74 1F         |je short Kernel_F.0040ED42
    0040ED23  |.  8B5424 40     |mov edx,dword ptr ss:[esp+0x40]                    ;  esp+40(RegVal)入edx
    0040ED27  |.  8B7424 28     |mov esi,dword ptr ss:[esp+0x28]                    ;  esp+28(真码换算后字符)入esi
    0040ED2B  |.  8B7C24 24     |mov edi,dword ptr ss:[esp+0x24]                    ;  esp+24(真码换算后字符)入edi
    0040ED2F  |.  52            |push edx                                           ;  Kernel_F.004D0054
    0040ED30  |.  8D8424 503600>|lea eax,dword ptr ss:[esp+0x3650]                  ;  esp+3650(Software\LKFSHR)入eax
    0040ED37  |.  81C6 FC000000 |add esi,0xFC                                       ;  esi+FC(这段是把注册码换算后的字符写入注册表Software\LKFSHR里的RegVal。
    0040ED3D  |.  E8 9E100400   |call Kernel_F.0044FDE0                                 
    0040ED42  |>  68 D0458100   |push Kernel_F.008145D0                             ;  abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789 -_.@
    0040ED47  |.  53            |push ebx
    0040ED48  |.  C74424 48 804>|mov dword ptr ss:[esp+0x48],Kernel_F.00814880      ;  eml入esp+48
    0040ED50  |.  E8 96941200   |call Kernel_F.005381EB
    0040ED55  |.  83C4 08       |add esp,0x8                                        ;  esp+8
    0040ED58  |.  85C0          |test eax,eax                                       ;  有没注册名
    0040ED5A  |.  74 38         |je short Kernel_F.0040ED94
    0040ED5C  |.  2BC3          |sub eax,ebx                                        ;  eax(注册名)-ebx(注册名)
    0040ED5E  |.  D1F8          |sar eax,1                                          ;  eax右移1位
    0040ED60  |.  83F8 FF       |cmp eax,-0x1                                       ;  eax和-1比较
    0040ED63  |.  74 2F         |je short Kernel_F.0040ED94
    0040ED65  |.  8D4C24 1C     |lea ecx,dword ptr ss:[esp+0x1C]
    0040ED69  |.  E8 72E6FFFF   |call Kernel_F.0040D3E0
    0040ED6E  |.  8B5C24 1C     |mov ebx,dword ptr ss:[esp+0x1C]                    ;  esp+1C(注册名换算后字符)入ebx
    0040ED72  |.  83F8 FF       |cmp eax,-0x1                                       ;  比较eax和-1
    0040ED75  |.  74 1D         |je short Kernel_F.0040ED94
    0040ED77  |.  8B7424 28     |mov esi,dword ptr ss:[esp+0x28]                    ;  Kernel_F.00874A38
    0040ED7B  |.  68 80488100   |push Kernel_F.00814880                             ;  eml
    0040ED80  |.  8BFB          |mov edi,ebx                                        ;  ebx(注册名换算后字符)入edi
    0040ED82  |.  8D8424 503600>|lea eax,dword ptr ss:[esp+0x3650]                  ;  esp+3650(Software\LKFSHR)入eax
    0040ED89  |.  81C6 FC000000 |add esi,0xFC                                       ;  esi+FC(这段是把注册名换算后的字符写入注册表Software\LKFSHR里的eml
    0040ED8F  |.  E8 4C100400   |call Kernel_F.0044FDE0
    0040ED94  |>  BE 01000000   |mov esi,0x1                                        ;  1入esi
    0040ED99  |.  EB 10         |jmp short Kernel_F.0040EDAB
    0040ED9B  |>  6A 00         |push 0x0
    0040ED9D  |.  6A 10         |push 0x10
    0040ED9F  |.  68 88488100   |push Kernel_F.00814888                             ;  Registration information is not valid, please check it and try again.  注册失败
    0040EDA4  |.  E8 EFBD0400   |call Kernel_F.0045AB98

    【破解总结】
    该软件验证注册流程是注册名换算成15位的字符串,和输入的注册码比较,相等,则把注册名和注册码再分别换算,写入注册表Software\LKFSHR里的eml和RegVal。重启后,再验证注册表里eml和RegVal的值。
    因为出现注册码明文比较,爆破很简单,有多种方法,列举一二。
    1.原0040EC78  |.  8BCD          |mov ecx,ebp 改mov ecx,esi 把假码入ecx修改为真码入ecx,然后真码和真码比较

    2.原0040EC86      75 1E         ||jnz short Kernel_F.0040ECA6  
        0040EC95      75 0F         ||jnz short Kernel_F.0040ECA6     在真假码比较时不相等跳走给nop掉。
    本想进入算法call练一下算法的。代码很长,粗看一下,过程好像是 注册名 连接固定字符窜LKFSHR查表替换,运算,再和固定字符串wresthelmtgrhjwlautr连接,查表,运算,然后去前15位做注册码。代码太长了,因为有明码出现了,就没有耐心看下去,太费时费力了。
    算法call好几处调用,在其他地方好像都是跟注册表比较。
    现提供三组可用注册信息
    1注册名 [email protected]
    注册码 QHEQHOQTFRQIDHP

    2.注册名 东海浪子@pyg.com
    注册码TJEGHTYOVULIIVP


    3.注册名 [email protected]
      注册码 GBEGHRVTGZPIZZP

    安全删除文件.jpg

    评分

    参与人数 1飘云币 +20 收起 理由
    [PYG]版务督察 + 20 赞一个!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    前天 21:29
  • 签到天数: 2320 天

    [LV.Master]伴坛终老

    发表于 2016-5-30 20:26:32 | 显示全部楼层
    沙发,顶起来,感谢分享
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-5-31 12:03:10 | 显示全部楼层
    支持兄弟了!
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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