首页
社区
课程
招聘
[旧帖] [求助]请高手指点? 0.00雪花
发表于: 2007-6-26 17:49 3432

[旧帖] [求助]请高手指点? 0.00雪花

2007-6-26 17:49
3432
0051A66F  |.  55            push    ebp
0051A670  |.  68 62A95100   push    0051A962
0051A675  |.  64:FF30       push    dword ptr fs:[eax]
0051A678  |.  64:8920       mov     fs:[eax], esp
0051A67B  |.  B2 01         mov     dl, 1
0051A67D  |.  A1 3CBD4900   mov     eax, [49BD3C]
0051A682  |.  E8 B517F8FF   call    0049BE3C
0051A687  |.  8BF0          mov     esi, eax
0051A689  |.  BA 02000080   mov     edx, 80000002
0051A68E  |.  8BC6          mov     eax, esi
0051A690  |.  E8 4718F8FF   call    0049BEDC
0051A695  |.  B1 01         mov     cl, 1
0051A697  |.  BA 78A95100   mov     edx, 0051A978           ;  software\microsoft\xdhy
0051A69C  |.  8BC6          mov     eax, esi
0051A69E  |.  E8 9D18F8FF   call    0049BF40
0051A6A3  |.  68 80000000   push    80                      ; /BufSize = 80 (128.)
0051A6A8  |.  8D85 7BFFFFFF lea     eax, [ebp-85]           ; |
0051A6AE  |.  50            push    eax                     ; |Buffer
0051A6AF  |.  E8 18CAEEFF   call    <jmp.&kernel32.GetSyste>; \GetSystemDirectoryA
0051A6B4  |.  8D45 FC       lea     eax, [ebp-4]
0051A6B7  |.  8D95 7BFFFFFF lea     edx, [ebp-85]
0051A6BD  |.  B9 81000000   mov     ecx, 81
0051A6C2  |.  E8 65A3EEFF   call    00404A2C
0051A6C7  |.  8D95 74FFFFFF lea     edx, [ebp-8C]
0051A6CD  |.  8B83 08030000 mov     eax, [ebx+308]
0051A6D3  |.  E8 90AFF2FF   call    00445668
0051A6D8  |.  83BD 74FFFFFF>cmp     dword ptr [ebp-8C], 0   ;  是否输入注册码,1234567890
0051A6DF  |.  74 1A         je      short 0051A6FB
0051A6E1  |.  8D95 70FFFFFF lea     edx, [ebp-90]
0051A6E7  |.  8B83 04030000 mov     eax, [ebx+304]
0051A6ED  |.  E8 76AFF2FF   call    00445668
0051A6F2  |.  83BD 70FFFFFF>cmp     dword ptr [ebp-90], 0   ;  是否输入确认码,19790621
0051A6F9  |.  75 0F         jnz     short 0051A70A
0051A6FB  |>  B8 98A95100   mov     eax, 0051A998           ;  注册信息没有填写齐全
0051A700  |.  E8 0B3EF2FF   call    0043E510
0051A705  |.  E9 D6010000   jmp     0051A8E0
0051A70A  |>  8D95 6CFFFFFF lea     edx, [ebp-94]
0051A710  |.  8B83 08030000 mov     eax, [ebx+308]
0051A716  |.  E8 4DAFF2FF   call    00445668
0051A71B  |.  8B85 6CFFFFFF mov     eax, [ebp-94]           ;  输入的假码,eax中看到是10位
0051A721  |.  50            push    eax
0051A722  |.  8D95 64FFFFFF lea     edx, [ebp-9C]
0051A728  |.  8B83 04030000 mov     eax, [ebx+304]
0051A72E  |.  E8 35AFF2FF   call    00445668
0051A733  |.  8B85 64FFFFFF mov     eax, [ebp-9C]           ;  输入的确认码,eax中看到是8位
0051A739  |.  E8 BAEBEEFF   call    004092F8
0051A73E  |.  B9 B1D00000   mov     ecx, 0D0B1              ;  固定值0D0B1
0051A743  |.  99            cdq                             ;  扩展
0051A744  |.  F7F9          idiv    ecx                     ;  除法
0051A746  |.  8BC2          mov     eax, edx                ;  取余数
0051A748  |.  8D95 68FFFFFF lea     edx, [ebp-98]
0051A74E  |.  E8 41EBEEFF   call    00409294                ;  将余数转为10进制,设为X
0051A753  |.  8D85 68FFFFFF lea     eax, [ebp-98]
0051A759  |.  50            push    eax
0051A75A  |.  8D95 58FFFFFF lea     edx, [ebp-A8]           ;  出现固定注册码前5位23371
0051A760  |.  8B83 04030000 mov     eax, [ebx+304]
0051A766  |.  E8 FDAEF2FF   call    00445668
0051A76B  |.  8B85 58FFFFFF mov     eax, [ebp-A8]           ;  输入的确认码8位
0051A771  |.  E8 82EBEEFF   call    004092F8
0051A776  |.  8D95 5CFFFFFF lea     edx, [ebp-A4]
0051A77C  |.  E8 9FFBFFFF   call    0051A320                ;  算法一CALL,F7跟进
0051A781  |.  8B85 5CFFFFFF mov     eax, [ebp-A4]           ;  B值=1932465254
0051A787  |.  E8 6CEBEEFF   call    004092F8                ;  软件自带的确认码
0051A78C  |.  8D95 60FFFFFF lea     edx, [ebp-A0]
0051A792  |.  E8 69FCFFFF   call    0051A400                ;  算法二CALL
0051A797  |.  8B95 60FFFFFF mov     edx, [ebp-A0]              C值=29i3w315|h4529
0051A79D  |.  58            pop     eax
0051A79E  |.  E8 E1A2EEFF   call    00404A84                ;  将X连到C的前面即为注册码
0051A7A3  |.  8B95 68FFFFFF mov     edx, [ebp-98]           ;  堆栈中出现真码
0051A7A9  |.  58            pop     eax
0051A7AA  |.  E8 11A4EEFF   call    00404BC0                ; 典型的明码比较,真假注册码比较
0051A7AF  |.  0F85 07010000 jnz     0051A8BC                ;  关键跳转,修改即可爆破

进入算法CALL一后
0051A320  /$  55            push    ebp
0051A321  |.  8BEC          mov     ebp, esp
0051A323  |.  33C9          xor     ecx, ecx
0051A325  |.  51            push    ecx
0051A326  |.  51            push    ecx
0051A327  |.  51            push    ecx
0051A328  |.  51            push    ecx
0051A329  |.  53            push    ebx
0051A32A  |.  56            push    esi
0051A32B  |.  8BF2          mov     esi, edx
0051A32D  |.  8BD8          mov     ebx, eax
0051A32F  |.  33C0          xor     eax, eax
0051A331  |.  55            push    ebp
0051A332  |.  68 F0A35100   push    0051A3F0
0051A337  |.  64:FF30       push    dword ptr fs:[eax]
0051A33A  |.  64:8920       mov     fs:[eax], esp
0051A33D  |.  81F3 F1250B00 xor     ebx, 0B25F1             ;  确认码与0B25F1相异或
0051A343  |.  8BC3          mov     eax, ebx
0051A345  |.  33D2          xor     edx, edx                ;  清零
0051A347  |.  52            push    edx                     ; /Arg2 => 00000000
0051A348  |.  50            push    eax                     ; |Arg1
0051A349  |.  8D45 FC       lea     eax, [ebp-4]            ; |
0051A34C  |.  E8 73EFEEFF   call    004092C4                ; \异或结果转为10进制,设为A
0051A351  |.  8B45 FC       mov     eax, [ebp-4]
0051A354  |.  0FB600        movzx   eax, byte ptr [eax]     ;  取a的第一位1
0051A357  |.  8B55 FC       mov     edx, [ebp-4]
0051A35A  |.  0FB652 01     movzx   edx, byte ptr [edx+1]   ;  取a的第二位9
0051A35E  |.  03C2          add     eax, edx                ;  第一位和第二位相加
0051A360  |.  B9 05000000   mov     ecx, 5                  ;  赋值5
0051A365  |.  99            cdq
0051A366  |.  F7F9          idiv    ecx                     ;  除以5
0051A368  |.  80C2 34       add     dl, 34                  ;  余数+34
0051A36B  |.  8855 F8       mov     [ebp-8], dl             ;  结果放入【ebp-8】中,设为a1
0051A36E  |.  8B45 FC       mov     eax, [ebp-4]            ;  a值
0051A371  |.  0FB640 02     movzx   eax, byte ptr [eax+2]   ;  取a的第三位3
0051A375  |.  8B55 FC       mov     edx, [ebp-4]
0051A378  |.  0FB652 03     movzx   edx, byte ptr [edx+3]   ;  取a值的第四位2
0051A37C  |.  03C2          add     eax, edx                ;  第三位和第四位相加
0051A37E  |.  B9 05000000   mov     ecx, 5                  ;  赋值5
0051A383  |.  99            cdq
0051A384  |.  F7F9          idiv    ecx                     ;  除以5
0051A386  |.  8BDA          mov     ebx, edx
0051A388  |.  80C3 33       add     bl, 33                  ; 余数+33
0051A38B  |.  885D F9       mov     [ebp-7], bl             ; 结果放入【ebp-7】中,设为a2
0051A38E  |.  8D45 F4       lea     eax, [ebp-C]
0051A391  |.  8A55 F8       mov     dl, [ebp-8]             ; 【ebp-8】的数
0051A394  |.  E8 0BA6EEFF   call    004049A4
0051A399  |.  8B45 F4       mov     eax, [ebp-C]
0051A39C  |.  8D55 FC       lea     edx, [ebp-4]            ; a的值35
0051A39F  |.  B9 1B000000   mov     ecx, 1B
0051A3A4  |.  E8 B3A9EEFF   call    00404D5C                ; 将a1添加到a的末尾,成为新a
0051A3A9  |.  8D45 F0       lea     eax, [ebp-10]
0051A3AC  |.  8BD3          mov     edx, ebx
0051A3AE  |.  E8 F1A5EEFF   call    004049A4
0051A3B3  |.  8B45 F0       mov     eax, [ebp-10]
0051A3B6  |.  8D55 FC       lea     edx, [ebp-4]
0051A3B9  |.  B9 19000000   mov     ecx, 19                 ; 真注册码19位
0051A3BE  |.  E8 99A9EEFF   call    00404D5C                ; 将a2添加在a的末尾,组成的设成B

进入算法CALL二后
0051A400  /$  55            push    ebp
0051A401  |.  8BEC          mov     ebp, esp
0051A403  |.  33C9          xor     ecx, ecx
0051A405  |.  51            push    ecx
0051A406  |.  51            push    ecx
0051A407  |.  51            push    ecx
0051A408  |.  51            push    ecx
0051A409  |.  51            push    ecx
0051A40A  |.  51            push    ecx
0051A40B  |.  53            push    ebx
0051A40C  |.  56            push    esi
0051A40D  |.  8BF2          mov     esi, edx
0051A40F  |.  8BD8          mov     ebx, eax
0051A411  |.  33C0          xor     eax, eax
0051A413  |.  55            push    ebp
0051A414  |.  68 4CA55100   push    0051A54C
0051A419  |.  64:FF30       push    dword ptr fs:[eax]
0051A41C  |.  64:8920       mov     fs:[eax], esp
0051A41F  |.  81F3 8776FBDD xor     ebx, DDFB7687           ;  将B与DDFB7687异或
0051A425  |.  8BC3          mov     eax, ebx
0051A427  |.  33D2          xor     edx, edx
0051A429  |.  52            push    edx                     ; /Arg2 => 00000000
0051A42A  |.  50            push    eax                     ; |Arg1
0051A42B  |.  8D45 FC       lea     eax, [ebp-4]            ; |
0051A42E  |.  E8 91EEEEFF   call    004092C4                ; \将异或结果转为10进制,设为C
0051A433  |.  8B45 FC       mov     eax, [ebp-4]            ;  [ebp-4]的值为C
0051A436  |.  0FB600        movzx   eax, byte ptr [eax]     ;  取C的第一位2
0051A439  |.  8B55 FC       mov     edx, [ebp-4]            ;  [ebp-4]的值为C
0051A43C  |.  0FB652 01     movzx   edx, byte ptr [edx+1]   ;  取c的第二位9
0051A440  |.  03C2          add     eax, edx                ;  将C的第一位与第二位相加
0051A442  |.  B9 05000000   mov     ecx, 5                  ;  赋以5
0051A447  |.  99            cdq
0051A448  |.  F7F9          idiv    ecx                     ;  除以5
0051A44A  |.  80C2 66       add     dl, 66                  ;  余数+66
0051A44D  |.  8855 F8       mov     [ebp-8], dl             ;  结果存入【ebp-8】中,设为C1
0051A450  |.  8B45 FC       mov     eax, [ebp-4]            ;  [ebp-4]的值为C
0051A453  |.  0FB640 02     movzx   eax, byte ptr [eax+2]   ;  取c的第三位3
0051A457  |.  8B55 FC       mov     edx, [ebp-4]            ;  [ebp-4]的值为C
0051A45A  |.  0FB652 03     movzx   edx, byte ptr [edx+3]   ;  取c的第四位3
0051A45E  |.  03C2          add     eax, edx                ;  将C的第三位与第四位相加
0051A460  |.  B9 05000000   mov     ecx, 5                  ;  赋以5
0051A465  |.  99            cdq
0051A466  |.  F7F9          idiv    ecx                     ;  除以5
0051A468  |.  80C2 75       add     dl, 75                  ;  余数+75
0051A46B  |.  8855 F9       mov     [ebp-7], dl             ;  结果存入【ebp-7】中,设为C2
0051A46E  |.  8B45 FC       mov     eax, [ebp-4]            ;  [ebp-4]的值为C
0051A471  |.  0FB640 04     movzx   eax, byte ptr [eax+4]   ;  取c的第五位1
0051A475  |.  8B55 FC       mov     edx, [ebp-4]            ;  [ebp-4]的值为C
0051A478  |.  0FB652 05     movzx   edx, byte ptr [edx+5]   ;  取C的第六位5
0051A47C  |.  03C2          add     eax, edx                ;  将C的第五位与第六位相加
0051A47E  |.  B9 05000000   mov     ecx, 5                  ;  赋以5
0051A483  |.  99            cdq
0051A484  |.  F7F9          idiv    ecx                     ;  除以5
0051A486  |.  80C2 7A       add     dl, 7A                  ;  余数+7A
0051A489  |.  8855 FA       mov     [ebp-6], dl             ;  结果存入【ebp-6】中,设为C3
0051A48C  |.  8B45 FC       mov     eax, [ebp-4]            ;  [ebp-4]的值为C
0051A48F  |.  0FB640 06     movzx   eax, byte ptr [eax+6]   ;  取C的第七位4
0051A493  |.  8B55 FC       mov     edx, [ebp-4]            ;  [ebp-4]的值为C
0051A496  |.  0FB652 07     movzx   edx, byte ptr [edx+7]   ;  取c的第八位5
0051A49A  |.  03C2          add     eax, edx                ;  将第七位与第八位相加
0051A49C  |.  8B55 FC       mov     edx, [ebp-4]            ;  [ebp-4]的值为C
0051A49F  |.  0FB652 08     movzx   edx, byte ptr [edx+8]   ;  取C的第九位2
0051A4A3  |.  03C2          add     eax, edx                ;  将第九位与第十位相加
0051A4A5  |.  B9 05000000   mov     ecx, 5                  ;  赋以5
0051A4AA  |.  99            cdq
0051A4AB  |.  F7F9          idiv    ecx                     ;  除以5
0051A4AD  |.  80C2 69       add     dl, 69                  ;  余数+69
0051A4B0  |.  8855 FB       mov     [ebp-5], dl             ;  结果存入【ebp-5】中,设为C4
0051A4B3  |.  8D45 F4       lea     eax, [ebp-C]
0051A4B6  |.  8A55 F8       mov     dl, [ebp-8]
0051A4B9  |.  E8 E6A4EEFF   call    004049A4
0051A4BE  |.  8B45 F4       mov     eax, [ebp-C]
0051A4C1  |.  8D55 FC       lea     edx, [ebp-4]
0051A4C4  |.  B9 07000000   mov     ecx, 7
0051A4C9  |.  E8 8EA8EEFF   call    00404D5C                ;  将C1添加在C的第七位的位置,组成新C

1:如何将确认码19790621与固定值0D0B1相除取余数,然后转成10进制设为A
   
2:如何将确认码19790621与固定值0B25F1相异或,结果设为B,将B的第一位和第二位相加再除以5,然后取余数+34,将所得字符放在B的后面,再将B的第三位和第四位相加,再除以5,余数+33,再放在B的最后位。结果所得设为C.  
   

3:如何将C与固定值DDFB7687相异或,再将结果的1,2位相加,3,4位相加,7.8位相加再转为字符,分别放在相异或结果的相关位置。结果设为D。
   
4:如何将A与D相连即为注册码。

这是我在PYG破解文章里看到的一篇破文,然后自己动手试了一下,对上面的四点有些不懂,哪位大侠能指点一下吗?

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
唉,还是靠自己吧!
2007-7-11 22:34
0
游客
登录 | 注册 方可回帖
返回
//