zoukankan      html  css  js  c++  java
  • 日常暖手

    系统 : Windows xp

    程序 : dccrackme1

    程序下载地址 :http://pan.baidu.com/s/1bpBlRXH

    要求 : 注册机编写 & 拆解nag窗口

    使用工具 : OD & DeDe

    可在看雪论坛中查找关于此程序的破文,传送门

    DeDe载入程序查看“过程”标签,其中有两个事件:

    1.按钮点击,这肯定就是注册的按钮了

    2.窗口创建,看来程序运行时的msg就是在这里编写的

    首先把双击打开窗口创建的代码,拉到最后发现关键代码:

    * Reference to: dialogs.ShowMessage(AnsiString);
    |
    004431A6   E8A9E6FFFF             call    00441854
    004431AB   33C0                   xor     eax, eax
    004431AD   5A                     pop     edx
    004431AE   59                     pop     ecx
    004431AF   59                     pop     ecx
    004431B0   648910                 mov     fs:[eax], edx

    函数采用eax指向的字符串作为参数,直接nop掉就可以。

    或者也可以默默地帮他加点料:

    鼠标选中内存区域,右击选择二进制-》编辑,在文本框输入一些字符串,再点击继续运行

    。。。。。。

    解决了烦人的窗口,现在来看看注册代码:

    00441C08  /.  55            push    ebp                              ;  Btn_click
    00441C09  |.  8BEC          mov     ebp, esp
    00441C0B  |.  33C9          xor     ecx, ecx
    00441C0D  |.  51            push    ecx
    00441C0E  |.  51            push    ecx
    00441C0F  |.  51            push    ecx
    00441C10  |.  51            push    ecx
    00441C11  |.  53            push    ebx
    00441C12  |.  56            push    esi
    00441C13  |.  8945 FC       mov     dword ptr [ebp-4], eax
    00441C16  |.  33C0          xor     eax, eax
    00441C18  |.  55            push    ebp
    00441C19  |.  68 CD1C4400   push    00441CCD
    00441C1E  |.  64:FF30       push    dword ptr fs:[eax]
    00441C21  |.  64:8920       mov     dword ptr fs:[eax], esp
    00441C24  |.  33F6          xor     esi, esi
    00441C26  |.  8D55 F8       lea     edx, dword ptr [ebp-8]
    00441C29  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
    00441C2C  |.  8B80 C8020000 mov     eax, dword ptr [eax+2C8]
    00441C32  |.  E8 8D16FEFF   call    004232C4                         ;  获取用户名
    00441C37  |.  8B45 F8       mov     eax, dword ptr [ebp-8]
    00441C3A  |.  E8 491EFCFF   call    00403A88                         ;  获取用户名长度
    00441C3F  |.  8BD0          mov     edx, eax
    00441C41  |.  85D2          test    edx, edx                         ;  不能为0
    00441C43  |.  7E 22         jle     short 00441C67
    00441C45  |.  B9 01000000   mov     ecx, 1
    00441C4A  |>  8B45 F8       /mov     eax, dword ptr [ebp-8]
    00441C4D  |.  8A4408 FF     |mov     al, byte ptr [eax+ecx-1]        ;  循环迭代用户名字符串
    00441C51  |.  25 FF000000   |and     eax, 0FF
    00441C56  |.  8BD8          |mov     ebx, eax
    00441C58  |.  83EB 17       |sub     ebx, 17
    00441C5B  |.  83E8 11       |sub     eax, 11
    00441C5E  |.  0FAFD8        |imul    ebx, eax                        ;  (byte-17)*(byte-11)
    00441C61  |.  03F3          |add     esi, ebx                        ;  累加
    00441C63  |.  41            |inc     ecx
    00441C64  |.  4A            |dec     edx                             ;  循环变量递减
    00441C65  |.^ 75 E3         jnz     short 00441C4A
    00441C67  |>  8D55 F4       lea     edx, dword ptr [ebp-C]
    00441C6A  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
    00441C6D  |.  8B80 CC020000 mov     eax, dword ptr [eax+2CC]
    00441C73  |.  E8 4C16FEFF   call    004232C4                         ;  取出密码
    00441C78  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
    00441C7B  |.  50            push    eax
    00441C7C  |.  8D55 F0       lea     edx, dword ptr [ebp-10]
    00441C7F  |.  8BC6          mov     eax, esi
    00441C81  |.  E8 325AFCFF   call    004076B8                         ;  IntToStr
    00441C86  |.  8B55 F0       mov     edx, dword ptr [ebp-10]          ;  算出的序列号
    00441C89  |.  58            pop     eax
    00441C8A  |.  E8 091FFCFF   call    00403B98                         ;  比较
    00441C8F  |.  75 0C         jnz     short 00441C9D
    00441C91  |.  A1 30584400   mov     eax, dword ptr [445830]
    00441C96  |.  E8 B9FBFFFF   call    00441854
    00441C9B  |.  EB 0A         jmp     short 00441CA7
    00441C9D  |>  A1 34584400   mov     eax, dword ptr [445834]
    00441CA2  |.  E8 ADFBFFFF   call    00441854
    00441CA7  |>  33C0          xor     eax, eax
    00441CA9  |.  5A            pop     edx
    00441CAA  |.  59            pop     ecx
    00441CAB  |.  59            pop     ecx

    打开http://www.cnblogs.com/ZRBYYXDM/p/5115596.html中搭建的框架,修改OnBtnDecrypt函数如下:

    void CKengen_TemplateDlg::OnBtnDecrypt() 
    {
        // TODO: Add your control notification handler code here
        CString str;
        GetDlgItemText( IDC_EDIT_NAME,str );                    //获取用户名字串基本信息。
        int len = str.GetLength();
    
        if ( len != 0 ){                                        //格式控制。
            unsigned int res = 0;
            for ( int i = 0 ; i != len ; i++ )
                res += (str[i]-0x17) * (str[i]-0x11);
    
            CString PassWord;
            PassWord.Format( "%d",res );
            SetDlgItemText( IDC_EDIT_PASSWORD,PassWord );
        }
        else
            MessageBox( "用户名格式错误!" );
    }

    再在OnInitDialog中添加此代码修改标题:SetWindowText(_T("Keygen"));

    运行效果:

  • 相关阅读:
    .NET 3.5新特性(转)
    (转)常用正则表达式
    IEC 61850(转)
    好几年了,我又回来了。
    EPR和SAP的一些名词解释(转载)
    为blogs添加风采,添加奥运金牌榜及赛程
    VS2010崩溃重启解决方法.
    C#制作Windows service服务系列二:演示一个定期执行的windows服务及调试(windows service)(转载)
    C#中操作XML (修改完整版) (转)
    C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows service
  • 原文地址:https://www.cnblogs.com/ZRBYYXDM/p/5870159.html
Copyright © 2011-2022 走看看