首页 > 代码库 > 日常暖手

日常暖手

系统 : Windows xp

程序 : dccrackme1

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

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

使用工具 : OD & DeDe

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

 

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

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

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

 

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

* Reference to: dialogs.ShowMessage(AnsiString);|004431A6   E8A9E6FFFF             call    00441854004431AB   33C0                   xor     eax, eax004431AD   5A                     pop     edx004431AE   59                     pop     ecx004431AF   59                     pop     ecx004431B0   648910                 mov     fs:[eax], edx

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

 

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

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

技术分享

 

。。。。。。

技术分享

 

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

00441C08  /.  55            push    ebp                              ;  Btn_click00441C09  |.  8BEC          mov     ebp, esp00441C0B  |.  33C9          xor     ecx, ecx00441C0D  |.  51            push    ecx00441C0E  |.  51            push    ecx00441C0F  |.  51            push    ecx00441C10  |.  51            push    ecx00441C11  |.  53            push    ebx00441C12  |.  56            push    esi00441C13  |.  8945 FC       mov     dword ptr [ebp-4], eax00441C16  |.  33C0          xor     eax, eax00441C18  |.  55            push    ebp00441C19  |.  68 CD1C4400   push    00441CCD00441C1E  |.  64:FF30       push    dword ptr fs:[eax]00441C21  |.  64:8920       mov     dword ptr fs:[eax], esp00441C24  |.  33F6          xor     esi, esi00441C26  |.  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, eax00441C41  |.  85D2          test    edx, edx                         ;  不能为000441C43  |.  7E 22         jle     short 00441C6700441C45  |.  B9 01000000   mov     ecx, 100441C4A  |>  8B45 F8       /mov     eax, dword ptr [ebp-8]00441C4D  |.  8A4408 FF     |mov     al, byte ptr [eax+ecx-1]        ;  循环迭代用户名字符串00441C51  |.  25 FF000000   |and     eax, 0FF00441C56  |.  8BD8          |mov     ebx, eax00441C58  |.  83EB 17       |sub     ebx, 1700441C5B  |.  83E8 11       |sub     eax, 1100441C5E  |.  0FAFD8        |imul    ebx, eax                        ;  (byte-17)*(byte-11)00441C61  |.  03F3          |add     esi, ebx                        ;  累加00441C63  |.  41            |inc     ecx00441C64  |.  4A            |dec     edx                             ;  循环变量递减00441C65  |.^ 75 E3         \jnz     short 00441C4A00441C67  |>  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    eax00441C7C  |.  8D55 F0       lea     edx, dword ptr [ebp-10]00441C7F  |.  8BC6          mov     eax, esi00441C81  |.  E8 325AFCFF   call    004076B8                         ;  IntToStr00441C86  |.  8B55 F0       mov     edx, dword ptr [ebp-10]          ;  算出的序列号00441C89  |.  58            pop     eax00441C8A  |.  E8 091FFCFF   call    00403B98                         ;  比较00441C8F  |.  75 0C         jnz     short 00441C9D00441C91  |.  A1 30584400   mov     eax, dword ptr [445830]00441C96  |.  E8 B9FBFFFF   call    0044185400441C9B  |.  EB 0A         jmp     short 00441CA700441C9D  |>  A1 34584400   mov     eax, dword ptr [445834]00441CA2  |.  E8 ADFBFFFF   call    0044185400441CA7  |>  33C0          xor     eax, eax00441CA9  |.  5A            pop     edx00441CAA  |.  59            pop     ecx00441CAB  |.  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"));

运行效果:

技术分享

日常暖手