• 搭建注册机模板


      之前破文使用的都是http://www.cnblogs.com/ZRBYYXDM/p/5002789.html这篇博文中编写的注册机模板,这篇文章里前面大半部分都在分析KeygenMe_1_by_boonz程序的关键算法,乍一看让人摸不着头脑。这次我结合破解的经验,专门写一篇搭建注册机模板的教程。

      这次还是使用MFC编写程序,新建基于对话框的应用程序,工程取名为Kengen_Template,并删除自动产生的对话框资源上已有的控件,然后在其上放置两个静态文本控件,标题分别为:“用户名”、“序列号”,并在其后添加两个编辑框控件、其ID分别为:IDC_EDIT_NAME、IDC_EDIT_PASSWORD。再在其后分别放置一个按钮。标题分别设置为:“马上解密!”、“拷贝用户名”。ID分别设置为:IDC_BTN_DECRYPT和IDC_BTN_COPY。最后,在拷贝用户名按钮下面添加一个静态文本,ID设置为IDC_STC_MSG并清空标题属性。设计完成的对话框资源如图所示:

    双击界面上的“马上解密!”按钮,添加消息响应函数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 <= 64 ){                                        //格式控制。
            SetDlgItemText( IDC_EDIT_PASSWORD,str );
        }
        else
            MessageBox( "用户名格式错误!" );
    }

    继续双击界面上的“拷贝用户名”按钮,添加消息响应函数OnBtnCopy,然后添加代码实现将字串拷贝到剪贴板的功能:

    void CKengen_TemplateDlg::OnBtnCopy() 
    {
        // TODO: Add your control notification handler code here
        CString cmd;
        GetDlgItemText( IDC_BTN_COPY,cmd );
    
        if ( OpenClipboard() ){                                        //打开剪贴板
            CString str;
            HANDLE hClip;
            char *pBuf;
    
            EmptyClipboard();
            
            if ( cmd == "拷贝用户名" )                                //如果命令是拷贝用户名
                GetDlgItemText( IDC_EDIT_NAME,str );
            else
                GetDlgItemText( IDC_EDIT_PASSWORD,str );
    
            hClip = GlobalAlloc( GMEM_MOVEABLE,str.GetLength() + 1 );
            pBuf = (char*)GlobalLock( hClip );
            strcpy( pBuf,str );
            GlobalUnlock( hClip );
            SetClipboardData( CF_TEXT,hClip );
            CloseClipboard();
    
            if ( cmd == "拷贝用户名" ){                                //变换命令
                SetDlgItemText( IDC_BTN_COPY,"拷贝序列号" );
                SetDlgItemText( IDC_STC_MSG,"拷贝用户名成功!" );    //提示成功
            }
            else{
                SetDlgItemText( IDC_BTN_COPY,"拷贝用户名" );
                SetDlgItemText( IDC_STC_MSG,"拷贝序列号成功!" );
            }
        }
        else
            SetDlgItemText( IDC_STC_MSG,"拷贝失败!" );
    }

    编译运行程序,效果如图:

    我们一路奋战,不是为了改变世界,而是不让世界改变我们 ——《熔炉》
  • 相关阅读:
    what's the python之异常处理
    what's the python之面向对象(进阶)
    what's the python之面向对象
    what's the python之自定义模块和包
    Java并发编程-并发工具包(java.util.concurrent)使用指南(全)
    Java之JUC系列:外部Tools
    java CS结构软件自动升级的实现
    史上最全最强SpringMVC详细示例实战教程
    搭建最简单的SpringMVC框架(使用maven)
    小心对待query_cache_size
  • 原文地址:https://www.cnblogs.com/ZRBYYXDM/p/5115596.html
Copyright © 2020-2023  润新知