首页
社区
课程
招聘
[原创]WWW.PC-Safety.Com上两个系统网络工具的算法分析
发表于: 2006-9-15 15:34 6243

[原创]WWW.PC-Safety.Com上两个系统网络工具的算法分析

2006-9-15 15:34
6243

第一篇:
【文章标题】: Hide Files and Folders V2.1 算法分析
【文章作者】: [DCG]PeerLessSoul
【作者邮箱】: PeerLessSoul@Gmail.com
【作者主页】: http://114989149.qzone.qq.com
【作者QQ号】: 114989149
【软件名称】: Hide Files and Folders V2.1
【软件大小】: 737K
【下载地址】: www.download.com
【保护方式】: 注册码验证
【使用工具】: Peid,Ollyice,dede
【作者声明】: 本人小菜,请大侠们不要见笑……
-------------------------------------------------------------------------------------------------
Peid开始查壳……Borland Delphi 6.0 - 7.0 直接进入软件观看注册错误信息提示……窗口提示错误!
使用 dede载入程序分析……参看过程……找到UEnterReg单元,然后看右边有个按钮单击事件……双击这个事件……
然后记录下开始的地址段!我这里是004A10F1,dede可以关了~进入ollyice,载入主程序文件然后,ctrl+g 输入刚才找到哪个地址!然后下断……F9运行程序……点击注册,程序被断下,但是我们还没有输入任何伪码!被断在这里!
-------------------------------------------------------------------------------------------------
004A10F0  /$  55            push    ebp                          ;我们就被断在这里……往下看!
004A10F1  |.  8BEC          mov     ebp, esp
004A10F3  |.  6A 00         push    0
004A10F5  |.  53            push    ebx
004A10F6  |.  56            push    esi
004A10F7  |.  8BF2          mov     esi, edx
004A10F9  |.  8BD8          mov     ebx, eax
004A10FB  |.  33C0          xor     eax, eax
004A10FD  |.  55            push    ebp
004A10FE  |.  68 6F114A00   push    004A116F
004A1103  |.  64:FF30       push    dword ptr fs:[eax]
004A1106  |.  64:8920       mov     fs:[eax], esp
004A1109  |.  8D45 FC       lea     eax, [ebp-4]
004A110C  |.  8BCE          mov     ecx, esi
004A110E  |.  8BD3          mov     edx, ebx
004A1110  |.  E8 C3FEFFFF   call    004A0FD8
004A1115  |.  84C0          test    al, al
004A1117  |.  74 40         je      short 004A1159
004A1119  |.  8B45 FC       mov     eax, [ebp-4]
004A111C  |.  E8 0BF5FFFF   call    004A062C                    ;关键CAll,我们下断在这里!
004A1121  |.  84C0          test    al, al
004A1123  |.  74 1F         je      short 004A1144              ;关键je
004A1125  |.  8B45 FC       mov     eax, [ebp-4]
004A1128  |.  E8 6BF8FFFF   call    004A0998
004A112D  |.  6A 00         push    0                           ; /Arg1 = 00000000
004A112F  |.  66:8B0D 7C114>mov     cx, [4A117C]                ; |
004A1136  |.  B2 02         mov     dl, 2                       ; |
004A1138  |.  B8 88114A00   mov     eax, 004A1188               ; |ASCII "The registration code is correct.",CR," Thank you."
004A113D  |.  E8 8E10F9FF   call    004321D0                    ; \HFF.004321D0
004A1142  |.  EB 15         jmp     short 004A1159
004A1144  |>  6A 00         push    0                           ; /Arg1 = 00000000
004A1146  |.  66:8B0D 7C114>mov     cx, [4A117C]                ; |
004A114D  |.  B2 01         mov     dl, 1                       ; |
004A114F  |.  B8 C0114A00   mov     eax, 004A11C0               ; |ASCII "The registration code is incorrect."
004A1154  |.  E8 7710F9FF   call    004321D0                    ; \HFF.004321D0
004A1159  |>  33C0          xor     eax, eax
004A115B  |.  5A            pop     edx
004A115C  |.  59            pop     ecx
004A115D  |.  59            pop     ecx
004A115E  |.  64:8910       mov     fs:[eax], edx
004A1161  |.  68 76114A00   push    004A1176
004A1166  |>  8D45 FC       lea     eax, [ebp-4]
004A1169  |.  E8 2A35F6FF   call    00404698
004A116E  \.  C3            retn
----------------------------------------------------------------------------------------------------------------------------
发现我们被断早了~往下看……004A1138 有注册成功的字样……上面又有个je,应该是关键跳。我们就想让哪个Je不跳我们就能注册成功……
那就看这个je是如何实现的……往上走……有个Call这个就是关键Call!取消全部断点,在004A111C下断……然后F7进入……
----------------------------------------------------------------------------------------------------------------------------
004A062C  /$  55            push    ebp                         ;我们到这里……一下要慢慢走一下!注意观察Ollyice各个窗口的变化!
004A062D  |.  8BEC          mov     ebp, esp
004A062F  |.  83C4 F0       add     esp, -10
004A0632  |.  53            push    ebx
004A0633  |.  56            push    esi
004A0634  |.  57            push    edi
004A0635  |.  33D2          xor     edx, edx
004A0637  |.  8955 F4       mov     [ebp-C], edx
004A063A  |.  8955 F0       mov     [ebp-10], edx
004A063D  |.  8945 FC       mov     [ebp-4], eax
004A0640  |.  8B45 FC       mov     eax, [ebp-4]
004A0643  |.  E8 0045F6FF   call    00404B48
004A0648  |.  33C0          xor     eax, eax
004A064A  |.  55            push    ebp
004A064B  |.  68 35074A00   push    004A0735
004A0650  |.  64:FF30       push    dword ptr fs:[eax]
004A0653  |.  64:8920       mov     fs:[eax], esp
004A0656  |.  33DB          xor     ebx, ebx
004A0658  |.  E8 87F8FFFF   call    0049FEE4
004A065D  |.  8B45 FC       mov     eax, [ebp-4]
004A0660  |.  E8 F342F6FF   call    00404958
004A0665  |.  83F8 10       cmp     eax, 10                     ;  注册码长度同16比较!不同就失败
004A0668  |.  0F85 A4000000 jnz     004A0712
004A066E  |.  8D45 F4       lea     eax, [ebp-C]
004A0671  |.  50            push    eax
004A0672  |.  B9 08000000   mov     ecx, 8
004A0677  |.  BA 01000000   mov     edx, 1
004A067C  |.  8B45 FC       mov     eax, [ebp-4]
004A067F  |.  E8 3445F6FF   call    00404BB8
004A0684  |.  8D45 F0       lea     eax, [ebp-10]
004A0687  |.  50            push    eax
004A0688  |.  B9 08000000   mov     ecx, 8
004A068D  |.  BA 09000000   mov     edx, 9
004A0692  |.  8B45 FC       mov     eax, [ebp-4]
004A0695  |.  E8 1E45F6FF   call    00404BB8
004A069A  |.  8D55 F8       lea     edx, [ebp-8]
004A069D  |.  8B45 F4       mov     eax, [ebp-C]
004A06A0  |.  E8 BB2BF6FF   call    00403260
004A06A5  |.  837D F8 00    cmp     dword ptr [ebp-8], 0
004A06A9  |.  75 67         jnz     short 004A0712           ;004A06A0哪个Call计算前十位是否有字母,有这里jnz实现,注册失败!
004A06AB  |.  8D55 F8       lea     edx, [ebp-8]
004A06AE  |.  8B45 F0       mov     eax, [ebp-10]
004A06B1  |.  E8 AA2BF6FF   call    00403260                     
004A06B6  |.  837D F8 00    cmp     dword ptr [ebp-8], 0
004A06BA  |.  75 56         jnz     short 004A0712           ;004A06B1哪个Call计算后六位是否有字母,有这里jnz实现,注册失败!
004A06BC  |.  BE 30000000   mov     esi, 30
004A06C1  |>  33C0          /xor     eax, eax
004A06C3  |.  8945 F8       |mov     [ebp-8], eax
004A06C6  |.  8B45 FC       |mov     eax, [ebp-4]
004A06C9  |.  E8 8A42F6FF   |call    00404958
004A06CE  |.  85C0          |test    eax, eax
004A06D0  |.  7E 17         |jle     short 004A06E9
004A06D2  |.  BA 01000000   |mov     edx, 1
004A06D7  |>  8BCE          |/mov     ecx, esi
004A06D9  |.  8B7D FC       ||mov     edi, [ebp-4]
004A06DC  |.  3A4C17 FF     ||cmp     cl, [edi+edx-1]
004A06E0  |.  75 03         ||jnz     short 004A06E5
004A06E2  |.  FF45 F8       ||inc     dword ptr [ebp-8]
004A06E5  |>  42            ||inc     edx
004A06E6  |.  48            ||dec     eax
004A06E7  |.^ 75 EE         |\jnz     short 004A06D7
004A06E9  |>  837D F8 05    |cmp     dword ptr [ebp-8], 5
004A06ED  |.  7E 09         |jle     short 004A06F8
004A06EF  |.  C745 F8 FFFFF>|mov     dword ptr [ebp-8], -1
004A06F6  |.  EB 06         |jmp     short 004A06FE
004A06F8  |>  46            |inc     esi
004A06F9  |.  83FE 3A       |cmp     esi, 3A
004A06FC  |.^ 75 C3         \jnz     short 004A06C1
004A06FE  |>  837D F8 00    cmp     dword ptr [ebp-8], 0
004A0702  |.  7C 0E         jl      short 004A0712
004A0704  |.  8B45 FC       mov     eax, [ebp-4]
004A0707  |.  E8 B0FDFFFF   call    004A04BC                    ;  这个Call也是比较可疑我们进去……
004A070C  |.  84C0          test    al, al
004A070E  |.  74 02         je      short 004A0712              
004A0710  |.  B3 01         mov     bl, 1
004A0712  |>  33C0          xor     eax, eax
004A0714  |.  5A            pop     edx
004A0715  |.  59            pop     ecx
004A0716  |.  59            pop     ecx
004A0717  |.  64:8910       mov     fs:[eax], edx
004A071A  |.  68 3C074A00   push    004A073C
004A071F  |>  8D45 F0       lea     eax, [ebp-10]
004A0722  |.  BA 02000000   mov     edx, 2
004A0727  |.  E8 903FF6FF   call    004046BC
004A072C  |.  8D45 FC       lea     eax, [ebp-4]
004A072F  |.  E8 643FF6FF   call    00404698
004A0734  \.  C3            retn

-----------------------------------------------------------------------------------------------------------------------------
我们进入004A04BC 这个Call,到这里!f8慢慢走一遍……
004A04BC  /$  55            push    ebp
004A04BD  |.  8BEC          mov     ebp, esp
004A04BF  |.  B9 06000000   mov     ecx, 6
004A04C4  |>  6A 00         /push    0
004A04C6  |.  6A 00         |push    0
004A04C8  |.  49            |dec     ecx
004A04C9  |.^ 75 F9         \jnz     short 004A04C4
004A04CB  |.  53            push    ebx
004A04CC  |.  56            push    esi
004A04CD  |.  8BD8          mov     ebx, eax
004A04CF  |.  33C0          xor     eax, eax
004A04D1  |.  55            push    ebp
004A04D2  |.  68 1A064A00   push    004A061A
004A04D7  |.  64:FF30       push    dword ptr fs:[eax]
004A04DA  |.  64:8920       mov     fs:[eax], esp
004A04DD  |.  8D45 FC       lea     eax, [ebp-4]
004A04E0  |.  8A13          mov     dl, [ebx]
004A04E2  |.  E8 9943F6FF   call    00404880
004A04E7  |.  8B45 FC       mov     eax, [ebp-4]
004A04EA  |.  E8 BD89F6FF   call    00408EAC
004A04EF  |.  8BF0          mov     esi, eax
004A04F1  |.  8D45 F8       lea     eax, [ebp-8]
004A04F4  |.  8A53 01       mov     dl, [ebx+1]          ;  取出第2位
004A04F7  |.  E8 8443F6FF   call    00404880
004A04FC  |.  8B45 F8       mov     eax, [ebp-8]
004A04FF  |.  E8 A889F6FF   call    00408EAC
004A0504  |.  03F0          add     esi, eax             ;  第1位+第2位
004A0506  |.  8D45 F4       lea     eax, [ebp-C]
004A0509  |.  8A53 02       mov     dl, [ebx+2]           ;取出第3位
004A050C  |.  E8 6F43F6FF   call    00404880
004A0511  |.  8B45 F4       mov     eax, [ebp-C]
004A0514  |.  E8 9389F6FF   call    00408EAC
004A0519  |.  03F0          add     esi, eax             ;  上面的再加上第3位
004A051B  |.  8D45 F0       lea     eax, [ebp-10]
004A051E  |.  8A53 03       mov     dl, [ebx+3]          ;取出第4位
004A0521  |.  E8 5A43F6FF   call    00404880
004A0526  |.  8B45 F0       mov     eax, [ebp-10]
004A0529  |.  E8 7E89F6FF   call    00408EAC
004A052E  |.  03F0          add     esi, eax             ;  上面+第4位
004A0530  |.  A1 9C164B00   mov     eax, [4B169C]
004A0535  |.  3B30          cmp     esi, [eax]           ;  上面结果同16比较
004A0537      0F85 BA000000 jnz     004A05F7             ;  不等于22就跳走!注册失败!
004A053D  |.  8D45 EC       lea     eax, [ebp-14]
004A0540  |.  8A53 04       mov     dl, [ebx+4]          ;  取第5位
004A0543  |.  E8 3843F6FF   call    00404880
004A0548  |.  8B45 EC       mov     eax, [ebp-14]
004A054B  |.  E8 5C89F6FF   call    00408EAC
004A0550  |.  8BF0          mov     esi, eax
004A0552  |.  8D45 E8       lea     eax, [ebp-18]
004A0555  |.  8A53 07       mov     dl, [ebx+7]          ;  取第8位
004A0558  |.  E8 2343F6FF   call    00404880
004A055D  |.  8B45 E8       mov     eax, [ebp-18]  
004A0560  |.  E8 4789F6FF   call    00408EAC
004A0565  |.  03F0          add     esi, eax             ; 第5位+第8位
004A0567  |.  8D45 E4       lea     eax, [ebp-1C]
004A056A  |.  8A53 0A       mov     dl, [ebx+A]          ;  取第11位
004A056D  |.  E8 0E43F6FF   call    00404880
004A0572  |.  8B45 E4       mov     eax, [ebp-1C]
004A0575  |.  E8 3289F6FF   call    00408EAC
004A057A  |.  03F0          add     esi, eax             ;结果+第11位上值
004A057C  |.  8D45 E0       lea     eax, [ebp-20]
004A057F  |.  8A53 0D       mov     dl, [ebx+D]          ;  取第14位
004A0582  |.  E8 F942F6FF   call    00404880
004A0587  |.  8B45 E0       mov     eax, [ebp-20]
004A058A  |.  E8 1D89F6FF   call    00408EAC
004A058F  |.  03F0          add     esi, eax             ;再加上第14位上的值
004A0591  |.  A1 D4164B00   mov     eax, [4B16D4]
004A0596  |.  3B30          cmp     esi, [eax]           ;  这里第5,8,11,14位相加的最终结果……同1E比较!
004A0598      75 5D         jnz     short 004A05F7       ;类似前面如果结果不是1e就跳走……注册就失败了……
004A059A  |.  8D45 DC       lea     eax, [ebp-24]
004A059D  |.  8A53 06       mov     dl, [ebx+6]          ;取第7位
004A05A0  |.  E8 DB42F6FF   call    00404880
004A05A5  |.  8B45 DC       mov     eax, [ebp-24]
004A05A8  |.  E8 FF88F6FF   call    00408EAC
004A05AD  |.  8BF0          mov     esi, eax
004A05AF  |.  8D45 D8       lea     eax, [ebp-28]
004A05B2  |.  8A53 09       mov     dl, [ebx+9]          ;取第10位
004A05B5  |.  E8 C642F6FF   call    00404880
004A05BA  |.  8B45 D8       mov     eax, [ebp-28]
004A05BD  |.  E8 EA88F6FF   call    00408EAC
004A05C2  |.  03F0          add     esi, eax             ;第7位+第10位的
004A05C4  |.  8D45 D4       lea     eax, [ebp-2C]
004A05C7  |.  8A53 0C       mov     dl, [ebx+C]          ;取第13位
004A05CA  |.  E8 B142F6FF   call    00404880
004A05CF  |.  8B45 D4       mov     eax, [ebp-2C]
004A05D2  |.  E8 D588F6FF   call    00408EAC             ;上面结果再加上第13位上的值
004A05D7  |.  03F0          add     esi, eax
004A05D9  |.  8D45 D0       lea     eax, [ebp-30]
004A05DC  |.  8A53 0F       mov     dl, [ebx+F]           ;取第16位
004A05DF  |.  E8 9C42F6FF   call    00404880
004A05E4  |.  8B45 D0       mov     eax, [ebp-30]
004A05E7  |.  E8 C088F6FF   call    00408EAC
004A05EC  |.  03F0          add     esi, eax              ;上面结果再加上第16位上的值
004A05EE  |.  A1 B4134B00   mov     eax, [4B13B4]
004A05F3  |.  3B30          cmp     esi, [eax]           ;  这里第7,10,13,16位上的值总共加起来同8比较
004A05F5  |.  74 04         je      short 004A05FB       ;类似前面如果结果不是8就跳走……注册就失败了……
004A05F7  |>  33C0          xor     eax, eax
004A05F9  |.  EB 02         jmp     short 004A05FD
004A05FB  |>  B0 01         mov     al, 1
004A05FD  |>  8BD8          mov     ebx, eax
004A05FF  |.  33C0          xor     eax, eax
004A0601  |.  5A            pop     edx
004A0602  |.  59            pop     ecx
004A0603  |.  59            pop     ecx
004A0604  |.  64:8910       mov     fs:[eax], edx
004A0607  |.  68 21064A00   push    004A0621
004A060C  |>  8D45 D0       lea     eax, [ebp-30]
004A060F  |.  BA 0C000000   mov     edx, 0C
004A0614  |.  E8 A340F6FF   call    004046BC
004A0619  \.  C3            retn
----------------------------------------------------------------------------------------------------------------------------
到这里应该算完了……感觉很讲不清楚……要自己走几遍……才能理解
我们总结一下算法!
1。注册码必须是16位长!不能包含任何非数字字符!
2。我们帮注册码按顺序写成X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12,X13,X14,X15,X16
那么就要满足这样的条件
22=X1+X2+X3+X4
30=X5+X8+X11+X14
8=X7+X10+X13+X16

//////////////////////////////////////////////////////////////////////

第二篇:
【文章标题】: 1st Security Agent V6.4 算法分析 (容易)
【文章作者】: [DCG]PeerLessSoul
【作者邮箱】: PeerLessSoul@Gmail.com
【作者主页】: http://114989149.qzone.qq.com
【作者QQ号】: 114989149
【软件名称】: 1st Security Agent
【软件大小】: 1.08M
【下载地址】: www.download.com
【保护方式】: 注册码验证
【使用工具】: Peid,Ollice
【作者声明】: 本人小菜,请大侠们不要见笑……
最近闲逛Download发现一款用来保护电脑安全的软件1st Security Agent ,主要功能和作用就让一些windows自带的程序运行的时候需要密码否则就不能使用!安装好程序……使用Peid查看为Borland Delphi 6.0 - 7.0.就直接使用ollice了,载入程序!下断 user32.MessageBoxA,OK! F9走!输入伪码1234567890点reg!程序被断下在这里!
-----------------------------------------------------------------------------------------------------------------------------
77D504EC  /.  55            push    ebp                                          ;我们被断在这里!F8走!
77D504ED  |.  8BEC          mov     ebp, esp
77D504EF  |.  833D BC04D777>cmp     dword ptr [77D704BC], 0
77D504F6  |.  74 24         je      short 77D5051C
77D504F8  |.  64:A1 1800000>mov     eax, fs:[18]
77D504FE  |.  6A 00         push    0
77D50500  |.  FF70 24       push    dword ptr [eax+24]
77D50503  |.  68 240BD777   push    77D70B24
77D50508  |.  FF15 C812D177 call    [<&KERNEL32.InterlockedCompareEx>;  kernel32.InterlockedCompareExchange
77D5050E  |.  85C0          test    eax, eax
77D50510  |.  75 0A         jnz     short 77D5051C
77D50512  |.  C705 200BD777>mov     dword ptr [77D70B20], 1
77D5051C  |>  6A 00         push    0                                ; /LanguageID = 0 (LANG_NEUTRAL)
77D5051E  |.  FF75 14       push    dword ptr [ebp+14]               ; |Style
77D50521  |.  FF75 10       push    dword ptr [ebp+10]               ; |Title
77D50524  |.  FF75 0C       push    dword ptr [ebp+C]                ; |Text
77D50527  |.  FF75 08       push    dword ptr [ebp+8]                ; |hOwner
77D5052A  |.  E8 2D000000   call    MessageBoxExA                    ; \MessageBoxExA 这个就是出错的提示地方!
77D5052F  |.  5D            pop     ebp                              ;  0012F3E8
77D50530  \.  C2 1000       retn    10
-----------------------------------------------------------------------------------------------------------------------------
从上面的retn退出到这里!
-----------------------------------------------------------------------------------------------------------------------------
0048A66E  |.  E8 95CEF7FF   call    <jmp.&user32.MessageBoxA>        ; 这里是叫出错提示!
0048A673  |.  8945 F8       mov     [ebp-8], eax                     ;从上面retn处来到这里!
0048A676  |.  33C0          xor     eax, eax
----------------------------------------------------------------------------------------------------------------------------往上下看看……发现上面几个Je不不能跳过这个MessageBoxA,那么就意味着,这一小段已经是注册错误时候必然经过的程序断!我们就想,可能再外面吧!外面有个判断注册的正确与否,然后错误就走我们现在在的这段程序段!我们就往下走~找到retn跳出了段程序……我们来到!
----------------------------------------------------------------------------------------------------------------------------004995E4  /$  55      push    ebp                          ;我们在这里下断!!!
004995E5  |.  8BEC          mov     ebp, esp
004995E7  |.  83C4 F8       add     esp, -8
004995EA  |.  33D2          xor     edx, edx
004995EC  |.  8955 F8       mov     [ebp-8], edx
004995EF  |.  8945 FC       mov     [ebp-4], eax
004995F2  |.  8B45 FC       mov     eax, [ebp-4]
004995F5  |.  E8 66B6F6FF   call    00404C60
004995FA  |.  33C0          xor     eax, eax
004995FC  |.  55            push    ebp
004995FD  |.  68 52964900   push    00499652
00499602  |.  64:FF30       push    dword ptr fs:[eax]
00499605  |.  64:8920       mov     fs:[eax], esp
00499608  |.  6A 40         push    40
0049960A  |.  8D55 F8       lea     edx, [ebp-8]
0049960D  |.  B8 68964900   mov     eax, 00499668                ;  ASCII "L_INFORMATION"
00499612  |.  E8 51F0FFFF   call    00498668
00499617  |.  8B45 F8       mov     eax, [ebp-8]
0049961A  |.  E8 51B6F6FF   call    00404C70
0049961F  |.  50            push    eax
00499620  |.  8B45 FC       mov     eax, [ebp-4]
00499623  |.  E8 48B6F6FF   call    00404C70
00499628  |.  8BD0          mov     edx, eax
0049962A  |.  A1 DCCF4C00   mov     eax, [4CCFDC]
0049962F  |.  8B00          mov     eax, [eax]
00499631  |.  59            pop     ecx
00499632  |.  E8 510FFFFF   call    0048A588         ;  这个就是Call就是CAll我们注册错误的那段代码
00499637  |.  33C0          xor     eax, eax                ;  我们往上一个retn出来到这里!
00499639  |.  5A            pop     edx
0049963A  |.  59            pop     ecx
0049963B  |.  59            pop     ecx
0049963C  |.  64:8910       mov     fs:[eax], edx
0049963F  |.  68 59964900   push    00499659
00499644  |>  8D45 F8       lea     eax, [ebp-8]
00499647  |.  BA 02000000   mov     edx, 2
0049964C  |.  E8 83B1F6FF   call    004047D4
00499651  \.  C3            retn
----------------------------------------------------------------------------------------------------------------------------
我们取消先前的断点,而在004995E4 下断!!!也就是这段代码的开头地方……再一次运行程序!注册~这下就被断在了004995E4 处~我们F8慢慢来……注意看右边的那些寄存器值.就在被断下的一瞬间,我们的寄存器值如下
EAX 012902D4 ASCII "This registration code is invalid"
ECX FFFFFFFE
EDX 004A8348 ASCII "M_BADCODE"
就看这几个了……你看,已经出现了This registration code is invalid,这个又有什么意思?这个表示……这段代码还是为注册出错以后提示做准备,注册验证的代码段还在外面……我们在走到00499651处retn出来!到这里!
----------------------------------------------------------------------------------------------------------------------------
004A821E  |.  50            push    eax
004A821F  |.  8D55 D8       lea     edx, [ebp-28]
004A8222  |.  B8 CC824A00   mov     eax, 004A82CC                ;  ASCII "BF8A83B980"
004A8227  |.  E8 304DFEFF   call    0048CF5C
004A822C  |.  8B45 D8       mov     eax, [ebp-28]
004A822F  |.  50            push    eax
004A8230  |.  8D45 D4       lea     eax, [ebp-2C]
004A8233  |.  50            push    eax
004A8234  |.  B8 E0824A00   mov     eax, 004A82E0                ;  ASCII"BE828B999A8C9F88B1A0848E9F829E828B99B1A9BFA0BFBEB5"
004A8239  |.  5A            pop     edx
004A823A  |.  E8 1D4DFEFF   call    0048CF5C
004A823F  |.  8B55 D4       mov     edx, [ebp-2C]
004A8242  |.  A1 54ED4C00   mov     eax, [4CED54]
004A8247  |.  59            pop     ecx
004A8248  |.  E8 8781FEFF   call    004903D4
004A824D  |>  8D55 D0       lea     edx, [ebp-30]
004A8250  |.  B8 34834A00   mov     eax, 004A8334                ;  ASCII "M_THANKS"
004A8255  |.  E8 0E04FFFF   call    00498668
004A825A  |.  8B45 D0       mov     eax, [ebp-30]
004A825D  |.  E8 8213FFFF   call    004995E4
004A8262  |.  EB 1F         jmp     short 004A8283               ;跳过了注册失败提示
004A8264  |>  B8 4CED4C00   mov     eax, 004CED4C
004A8269  |.  E8 42C5F5FF   call    004047B0
004A826E  |.  8D55 CC       lea     edx, [ebp-34]
004A8271  |.  B8 48834A00   mov     eax, 004A8348                ;  ASCII "M_BADCODE"
004A8276  |.  E8 ED03FFFF   call    00498668
004A827B  |.  8B45 CC       mov     eax, [ebp-34]
004A827E  |.  E8 6113FFFF   call    004995E4                      ;注册失败提示框
004A8283  |>  33C0          xor     eax, eax            ;  又出来到这里!  
004A8285  |.  5A            pop     edx
004A8286  |.  59            pop     ecx
004A8287  |.  59            pop     ecx
004A8288  |.  64:8910       mov     fs:[eax], edx
004A828B  |.  68 BA824A00   push    004A82BA
004A8290  |>  8D45 CC       lea     eax, [ebp-34]
004A8293  |.  BA 0A000000   mov     edx, 0A
004A8298  |.  E8 37C5F5FF   call    004047D4
004A829D  |.  8D45 F4       lea     eax, [ebp-C]
004A82A0  |.  E8 0BC5F5FF   call    004047B0
004A82A5  |.  8D45 F8       lea     eax, [ebp-8]
004A82A8  |.  BA 02000000   mov     edx, 2
004A82AD  |.  E8 22C5F5FF   call    004047D4
004A82B2  \.  C3            retn
----------------------------------------------------------------------------------------------------------------------------
我们从上面的retn出来到04A8283,这里又是新的一个程序段……我们往上看……那么出错提示框就是在004A827E 这个Call,上面有个Jmp跳过了注册失败提示!但是在看看……004A8264  |>  这里有个接受的跳转……说明如果上面有个跳转,如果哪个跳转不实现,那么就有可能经过Jmp从而跳过了注册失败的提示!我们就右击004A8264  选择转到……我们转到这里……
-----------------------------------------------------------------------------------------------------------------------------
004A8134  /$  55            push    ebp
004A8135  |.  8BEC          mov     ebp, esp
004A8137  |.  B9 06000000   mov     ecx, 6
004A813C  |>  6A 00         /push    0
004A813E  |.  6A 00         |push    0
004A8140  |.  49            |dec     ecx
004A8141  |.^ 75 F9         \jnz     short 004A813C
004A8143  |.  51            push    ecx
004A8144  |.  53            push    ebx
004A8145  |.  56            push    esi
004A8146  |.  8BF0          mov     esi, eax
004A8148  |.  33C0          xor     eax, eax
004A814A  |.  55            push    ebp
004A814B  |.  68 B3824A00   push    004A82B3
004A8150  |.  64:FF30       push    dword ptr fs:[eax]
004A8153  |.  64:8920       mov     fs:[eax], esp
004A8156  |.  8D55 F4       lea     edx, [ebp-C]
004A8159  |.  8B86 48030000 mov     eax, [esi+348]
004A815F  |.  E8 5011FCFF   call    004692B4
004A8164  |.  8B45 F4       mov     eax, [ebp-C]                 ;  取出伪码
004A8167  |.  8D55 F8       lea     edx, [ebp-8]
004A816A  |.  E8 6139FEFF   call    0048BAD0
004A816F  |.  8B55 F8       mov     edx, [ebp-8]
004A8172  |.  B8 4CED4C00   mov     eax, 004CED4C
004A8177  |.  E8 88C6F5FF   call    00404804
004A817C  |.  E8 FBFDFFFF   call    004A7F7C                     ;这里就是关键CAll
004A8181  |.  8BD8          mov     ebx, eax
004A8183  |.  84DB          test    bl, bl
004A8185  |.  0F84 D9000000 je      004A8264                     ;这个je关键
-----------------------------------------------------------------------------------------------------------------------------我们取消先前的全部断点……在004A814A下断……F8走~一下……发现关键Call跟进……到这里……
-----------------------------------------------------------------------------------------------------------------------------
004A7F7C  /$  53            push    ebx
004A7F7D  |.  56            push    esi
004A7F7E  |.  57            push    edi
004A7F7F  |.  BF 4CED4C00   mov     edi, 004CED4C
004A7F84  |.  33F6          xor     esi, esi
004A7F86  |.  33DB          xor     ebx, ebx
004A7F88  |.  8B07          mov     eax, [edi]
004A7F8A  |.  E8 E1CAF5FF   call    00404A70
004A7F8F  |.  83F8 0E       cmp     eax, 0E                       ;注册码长度与14比较,不是14不行!
004A7F92  |.  75 67         jnz     short 004A7FFB
004A7F94  |.  8B07          mov     eax, [edi]
004A7F96  |.  8038 36       cmp     byte ptr [eax], 36           ;  第1位与6比
004A7F99  |.  0F94C0        sete    al                           ;如果相同就为true!以下类似
004A7F9C  |.  83E0 7F       and     eax, 7F
004A7F9F  |.  03F0          add     esi, eax
004A7FA1  |.  8B07          mov     eax, [edi]
004A7FA3  |.  8078 02 32    cmp     byte ptr [eax+2], 32         ;  第3位与字符2比
004A7FA7  |.  0F94C0        sete    al
004A7FAA  |.  83E0 7F       and     eax, 7F
004A7FAD  |.  03F0          add     esi, eax
004A7FAF  |.  8B07          mov     eax, [edi]
004A7FB1  |.  8078 03 31    cmp     byte ptr [eax+3], 31         ;  第4位与字符1比
004A7FB5  |.  0F94C0        sete    al
004A7FB8  |.  83E0 7F       and     eax, 7F
004A7FBB  |.  03F0          add     esi, eax
004A7FBD  |.  8B07          mov     eax, [edi]
004A7FBF  |.  8078 04 39    cmp     byte ptr [eax+4], 39         ;  第5位与字符9比
004A7FC3  |.  0F94C0        sete    al
004A7FC6  |.  83E0 7F       and     eax, 7F
004A7FC9  |.  03F0          add     esi, eax
004A7FCB  |.  8B07          mov     eax, [edi]
004A7FCD  |.  8078 07 30    cmp     byte ptr [eax+7], 30         ;  第8位与字符0比
004A7FD1  |.  0F94C0        sete    al
004A7FD4  |.  83E0 7F       and     eax, 7F
004A7FD7  |.  03F0          add     esi, eax
004A7FD9  |.  8B07          mov     eax, [edi]
004A7FDB  |.  8078 08 35    cmp     byte ptr [eax+8], 35         ;  第9位与字符5比
004A7FDF  |.  0F94C0        sete    al
004A7FE2  |.  83E0 7F       and     eax, 7F
004A7FE5  |.  03F0          add     esi, eax
004A7FE7  |.  8B07          mov     eax, [edi]
004A7FE9  |.  8078 0A 33    cmp     byte ptr [eax+A], 33         ;  第11位与字符3比
004A7FED  |.  0F94C0        sete    al
004A7FF0  |.  83E0 7F       and     eax, 7F
004A7FF3  |.  03F0          add     esi, eax
004A7FF5  |.  83FE 07       cmp     esi, 7
004A7FF8  |.  0F94C3        sete    bl
004A7FFB  |>  8BC3          mov     eax, ebx
004A7FFD  |.  5F            pop     edi
004A7FFE  |.  5E            pop     esi
004A7FFF  |.  5B            pop     ebx
004A8000  \.  C3            retn
----------------------------------------------------------------------------------------------------------------------------
当七个比较都吻合时…004A8185 不实现……注册成功!
注册算法总结:
1.注册码长度为14
2.注册码格式为6?219??05?3???

还有他们公司其他软件,也大同小异.就顺便走一下算法了!

我写了个注册机…其中包括

"1st Security Agent V6.4"

"Access Controller V3.1"

"Best Network Security  V1.6"

"Hide Files and Folders V2.5"

"Pc Security Tweaker V6.5"

"Bulletproof Public PC V3.3"

"Outlook Express Privacy  V1.7"

大家可以试试看看……


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 7
支持
分享
最新回复 (3)
雪    币: 223
活跃值: (27)
能力值: ( LV10,RANK:165 )
在线值:
发帖
回帖
粉丝
2
本人是[DCG]的成员,请大家多多支持[DCG].谢谢!
2006-9-15 15:35
0
雪    币: 338
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
支持一下!!
2006-9-15 16:45
0
雪    币: 225
活跃值: (1241)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
原来是昆明的老乡,一定要支持的拉
2006-9-15 18:58
0
游客
登录 | 注册 方可回帖
返回
//