上次看到 4nil 兄弟放了个MFC的注册机模板,记得我以前没事的时候也用SDK方式写了一个玩的,很简单,高手就不要看了。里面用了一张CCG的LOGO,声明一下,我不是CCG的,只是借用一下他们的LOGO,如你想用这个模板做注册机发布的话,请用别的图片替换CCG的LOGO!要是不用图片的话,编译出来后再用PE工具优化一下只有几KB。代码如下:
//////////////////////////////////////////////////////////////////////////////////////////////////
//预处理
#include "windows.h"
#include "stdio.h"
#include "string.h"
#include "resource.h"
//使用了下面的预处理,编译连接时必须是 Release 方式,否则不能通过
//自定义程序入口,如果要优化,推荐使用这个
#pragma comment(linker, "/ENTRY:EntryPoint")
/////////////////////////////////////////////////////////////////////////////////////////////////
//全局变量
HINSTANCE hInst; //应用程序进程句柄,一般程序中经常用到此变量,故使用全局变量
HWND hwnd; //主窗口句柄,一般程序中经常用到此变量,故使用全局变量
/////////////////////////////////////////////////////////////////////////////////////////////////
//函数声明
LRESULT CALLBACK KeyGen(HWND, UINT, WPARAM, LPARAM);
/////////////////////////////////////////////////////////////////////////////////////////////////
//入口函数
//使用我们自己的入口函数来优化文件大小,而不用连接器默认提供的一大堆程序初始化操作的代码
void EntryPoint()
{
hInst = GetModuleHandle(NULL);
ExitProcess(DialogBoxParam((HINSTANCE)hInst, MAKEINTRESOURCE(IDD_KEYGEN),
0, (DLGPROC)KeyGen, IDD_KEYGEN));
//ExitProcess(WinMain(GetModuleHandle(NULL), NULL, GetCommandLine(), SW_SHOWNORMAL));//一般程序的入口函数
}
/////////////////////////////////////////////////////////////////////////////////////////////////
//主函数
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
DialogBox(hInst,MAKEINTRESOURCE( IDD_KEYGEN ),NULL,(DLGPROC) KeyGen);
return (FALSE);
}
/////////////////////////////////////////////////////////////////////////////////////////////////
//注册机对话框主函数
LRESULT CALLBACK KeyGen(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
char username[255] = "", serial[255] = ""; //定义用户名和注册码
char *sn; //用于临时存放生成的注册码
int namelength; //姓名长度
switch(message)
{
case WM_COMMAND:
switch(LOWORD (wParam))
{
case WM_INITDIALOG:
LoadIcon( hInst , MAKEINTRESOURCE(IDI_ICON)); //设置程序图标
LoadBitmap( hInst , MAKEINTRESOURCE(IDB_CCG)); //设置显示的位图
break;
case IDGEN: //处理输入的用户名
GetDlgItemText( hDlg, IDC_NAME, username, 255);
namelength = strlen (username);
if (namelength < 1) //未输入姓名时提示
{
SetDlgItemText( hDlg , IDC_NAME,TEXT("姓名不能为空!"));
break;
}
//在此放置你的代码
sn = serial;
SetDlgItemText( hDlg , IDC_SN , sn); //把计算后的注册码输出
break;
case IDABOUT:
{
MessageBox( NULL, TEXT("********注册机模板********\n\n********cao_cong 制作********\n******2005年1月26日*****"),
TEXT("关于"),MB_OK);
return 0;
}
break;
case IDEXIT:
EndDialog ( hDlg , IDEXIT);
break;
}
default : return (FALSE);
}
return (TRUE);
}
资源(部分):
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_KEYGEN DIALOG DISCARDABLE 0, 0, 207, 129
STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | WS_CAPTION |
WS_SYSMENU
CAPTION "KeyGen"
FONT 9, "宋体"
BEGIN
EDITTEXT IDC_NAME,45,57,154,16,ES_AUTOHSCROLL
DEFPUSHBUTTON "生成注册码",IDGEN,15,105,50,18
EDITTEXT IDC_SN,45,83,154,16,ES_AUTOHSCROLL
PUSHBUTTON "退 出",IDEXIT,147,105,50,18
PUSHBUTTON "关 于",IDABOUT,81,105,50,18
CTEXT "姓 名:",IDC_STATIC,4,57,34,16,SS_CENTERIMAGE
CTEXT "注册码:",IDC_STATIC,4,83,34,16,SS_CENTERIMAGE
CONTROL 105,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,0,0,
207,57
END
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ICON ICON DISCARDABLE "KeyGen.ico"
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//
IDB_CCG BITMAP DISCARDABLE "CCG.bmp"
#endif // Chinese (P.R.C.) resources
/////////////////////////////////////////////////////////////////////////////
源码作为附件发上来:
附件:key.rar
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法