飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 8173|回复: 9

[原创] 桌面图标任我排v2.10,分析及注册机源码

[复制链接]
  • TA的每日心情
    慵懒
    2024-4-15 20:47
  • 签到天数: 431 天

    [LV.9]以坛为家II

    发表于 2007-2-27 12:04:35 | 显示全部楼层 |阅读模式
    桌面图标任我排v2.10

    DIYDeskTop.exe
    申请码:
    Z3WIL6UF
    注册码:
    123456

    偶尔在PYG看到,分析,发现真是超级简单,不过软件还是很有趣。

    ASPack 2.12 -> Alexey Solodovnikov

    Borland Delphi 6.0 - 7.0

    居然有提示消息:
        注册码错误,请重新输入!

    bpx MessageBoxA
    填入注册信息,会断在这里:

    00464ED0  |.  53            push    ebx                              ; /Style
    00464ED1  |.  57            push    edi                              ; |Title
    00464ED2  |.  56            push    esi                              ; |Text
    00464ED3  |.  8B45 FC       mov     eax, dword ptr [ebp-4]           ; |
    00464ED6  |.  8B40 30       mov     eax, dword ptr [eax+30]          ; |
    00464ED9  |.  50            push    eax                              ; |hOwner
    00464EDA  |.  E8 D526FAFF   call    <jmp.&user32.MessageBoxA>        ; \MessageBoxA


    向上找到关键断点在这里:

    004B1A8B  |.  8B45 FC       mov     eax, dword ptr [ebp-4]           ;  假注册码:123456
    004B1A8E  |.  8A58 01       mov     bl, byte ptr [eax+1]             ;  注册码第二位送BL,BL=32
    004B1A91  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
    004B1A94  |.  E8 9F2EF5FF   call    00404938
    004B1A99  |.  8B55 FC       mov     edx, dword ptr [ebp-4]
    004B1A9C  |.  0FB64402 FE   movzx   eax, byte ptr [edx+eax-2]        ;  注册码倒数第二位,送EAX,EAX=35
    004B1AA1  |.  48            dec     eax                              ;  自减1,EAX=34
    004B1AA2  |.  50            push    eax                              ;  压栈保护结果
    004B1AA3  |.  8D45 FC       lea     eax, dword ptr [ebp-4]
    004B1AA6  |.  E8 DD30F5FF   call    00404B88
    004B1AAB  |.  5A            pop     edx
    004B1AAC  |.  8850 01       mov     byte ptr [eax+1], dl             ;  将刚才压栈保护的结果,弹出到DL,替换假注册码的顺数第二位,假注册码变成:143456
    004B1AAF  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
    004B1AB2  |.  E8 812EF5FF   call    00404938
    004B1AB7  |.  8BF0          mov     esi, eax
    004B1AB9  |.  8D45 FC       lea     eax, dword ptr [ebp-4]
    004B1ABC  |.  E8 C730F5FF   call    00404B88
    004B1AC1  |.  33D2          xor     edx, edx
    004B1AC3  |.  8AD3          mov     dl, bl                           ;  原来的假注册码码的顺数第二位,即32
    004B1AC5  |.  83C2 02       add     edx, 2                           ;  加2,变成34
    004B1AC8  |.  885430 FE     mov     byte ptr [eax+esi-2], dl         ;  还是替换,原来是:分别取假注册码顺数第二位的ASCII码加上2,倒数第二位的ASCII码减1,然后互换而已!!
    004B1ACC  |.  8B87 00030000 mov     eax, dword ptr [edi+300]         ;  假注册码123456变化成:143446
    004B1AD2  |.  8B55 FC       mov     edx, dword ptr [ebp-4]
    004B1AD5  |.  E8 A224F9FF   call    00443F7C
    004B1ADA  |.  8D45 FC       lea     eax, dword ptr [ebp-4]
    004B1ADD  |.  E8 9E2BF5FF   call    00404680
    004B1AE2  |.  8D55 F0       lea     edx, dword ptr [ebp-10]
    004B1AE5  |.  8B87 00030000 mov     eax, dword ptr [edi+300]
    004B1AEB  |.  E8 5C24F9FF   call    00443F4C
    004B1AF0  |.  8B45 F0       mov     eax, dword ptr [ebp-10]
    004B1AF3  |.  E8 402EF5FF   call    00404938
    004B1AF8  |.  8BF0          mov     esi, eax
    004B1AFA  |.  83FE 01       cmp     esi, 1
    004B1AFD  |.  7C 38         jl      short 004B1B37
    004B1AFF  |>  8D55 EC       /lea     edx, dword ptr [ebp-14]
    004B1B02  |.  8B87 00030000 |mov     eax, dword ptr [edi+300]
    004B1B08  |.  E8 3F24F9FF   |call    00443F4C
    004B1B0D  |.  8B45 EC       |mov     eax, dword ptr [ebp-14]         ;  处理变化后的假注册码:143446
    004B1B10  |.  8A5C30 FF     |mov     bl, byte ptr [eax+esi-1]        ;  倒数第一位开始传送。
    004B1B14  |.  33C0          |xor     eax, eax
    004B1B16  |.  8AC3          |mov     al, bl
    004B1B18  |.  83C0 03       |add     eax, 3                          ;  每一位都加3
    004B1B1B  |.  8BD8          |mov     ebx, eax
    004B1B1D  |.  8D45 E8       |lea     eax, dword ptr [ebp-18]
    004B1B20  |.  8BD3          |mov     edx, ebx
    004B1B22  |.  E8 392DF5FF   |call    00404860
    004B1B27  |.  8B55 E8       |mov     edx, dword ptr [ebp-18]
    004B1B2A  |.  8D45 FC       |lea     eax, dword ptr [ebp-4]
    004B1B2D  |.  E8 0E2EF5FF   |call    00404940
    004B1B32  |.  4E            |dec     esi
    004B1B33  |.  85F6          |test    esi, esi
    004B1B35  |.^ 75 C8         \jnz     short 004B1AFF                  ;  循环,循环次数就是注册码的位数
    004B1B37  |>  B8 300D4C00   mov     eax, 004C0D30
    004B1B3C  |.  8B55 FC       mov     edx, dword ptr [ebp-4]           ;  得到结果:977674
    004B1B3F  |.  E8 902BF5FF   call    004046D4
    004B1B44  |.  E8 AFF3FFFF   call    004B0EF8                         ;  比较函数,两个参数,一个是机器码,另一个就是上面用注册码运算的结果:977674

    总结:
    本机机器码:Z3WIL6UF
    对应的ASCII码是:
    5A 33 57 49 4C 36 55 46
    每一位的ASCII码都减3:
    57 30 54 46 49 33 52 43
    然后逆序。
    43 52 33 49 46 54 30 57
    顺数第二位加1,52+1=53
    倒数第二位减2,30-2=2E
    互换:
    43 2E 33 49 46 54 53 57
    转换成字符串形式就是注册码:
    C.3IFTSW

    11:02 2007-2-27
    by wofan[OCN]

    给出KeyGen源码,想来这类软件很少会有人出钱,一并给出注册机得了。

    //-----------------------------------------------------------------------
    //=============  函数,过程,回调函数  ==================================
    //=======================================================================

    procedure wofanKeygen(hdlg:HWND);
    var
      Title,text:string;
    Begin
      Title:='提示';
      Text:='输入机器码了吗?';
      ZeroMemory(@mCode,sizeof(mCode));
      ZeroMemory(@mName,sizeof(mName));
      GetDlgItemText(hDlg,IDC_Name,@mName,sizeof(mName));
      asm
        LEA ESI,mName  //把机器码的地址传到ESI
        test eax,eax   //EAX 是GetDlgItemText函数返回值,它是字串实际长度
        JE @Err        //测试的结果,如果EAX为零,使Flag标志寄存器中的Z标志为零,则出错
        lea edi,mCode  //===========存放注册码=====================
        mov ecx,eax    //存放机器码的位数
        xor edx,edx
      @loop:
        mov al,byte ptr [esi+ecx-1]
        sub al,3
        mov byte ptr [edi+edx],al
        dec ecx
        inc edx
        test ecx,ecx
        jnz @loop
        mov cl,byte ptr[edi+1]
        inc cl
        mov al,byte ptr[edi+edx-2]
        sub al,2
        mov byte ptr[edi+edx-2],cl
        mov byte ptr[edi+1],al
        jmp @End
    @Err:
        push 0
        MOV EAX,DWORD PTR SS:[Title]
        PUSH EAX
        MOV EAX,DWORD PTR SS:[Text]
        PUSH EAX
        PUSH MB_OK
        Call MessageBox      //提示
    @End:
      End;  //End ASM
    End;

    //=======================================================================

    桌面图标任我排v2.10Keygen.rar

    56.81 KB, 下载次数: 35, 下载积分: 飘云币 -2 枚

    桌面图标任我排v2.10Keygen及源码

    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-3-14 22:55:41 | 显示全部楼层
    很不错的算法学习,回个贴支持一下!:victory:
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-3-25 10:33:44 | 显示全部楼层
    很不错,详细算法教程
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-4-1 13:16:39 | 显示全部楼层
    不错,学习了!!
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2018-3-21 14:16
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2007-4-15 21:46:13 | 显示全部楼层
    算法不错,学习!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-4-24 00:53:50 | 显示全部楼层
    还是不会呀。。能不能教教我。。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-5-16 14:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2007-4-24 08:15:01 | 显示全部楼层
    给个原文件连接,练习一下
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-4-28 16:03:11 | 显示全部楼层
    谢谢了已经注册了
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-5-5 19:41:15 | 显示全部楼层
    顶一个,好的东西
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-8-7 17:07
  • 签到天数: 88 天

    [LV.6]常住居民II

    发表于 2009-5-15 09:53:05 | 显示全部楼层
    这个可以用一下呀,觉得不错
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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