⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keygen.cpp

📁 ASProtect的2.4版
💻 CPP
字号:
// keygen.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "resource.h"
#include "include\aspr_keygen.h"

#define MAX_LOADSTRING                                  100
#define RegistrationKeyGenerateName             "RegistrationKeyGenerate"

typedef DWORD (__stdcall *ASPRegistrationKeyGenerate)(IN OUT PARAMS *Params);

HINSTANCE						KeyGenDll;
ASPRegistrationKeyGenerate		RegKeyGenerate;

//---------------------------------------------------------------------

// Source Code Template, KeyGen v0.01
BOOL GenerateKey( LPSTR* KeyStr, LPSTR NameStr, DWORD& Res )
{
        PARAMS  P;

        memset(&P, 0, sizeof(PARAMS));

    // Registration name

    P.RegName = NameStr;

    // Mode number (1..15)

    P.ModeID  = 2;

    // Expiration date

    P.ExpirationDate.Day   = 0;
    P.ExpirationDate.Month = 0;
    P.ExpirationDate.Year  = 0;

    // Constant for encryption

    P.EncryptionConst = 699935518;

    // HardwareID

    P.HardwareID      = "";

    // Signature size in bits

    P.SignatureBits   = 96;

    // Constants from project file

    P.C1 = 
     "AC08B45461D28EB";
    P.C3 = 
     "A93A5FB8C78D04F1";
    P.C6 = 
     "26D6BB434014649375231C68A655B81D314AEAF3CE32C6DC8BD"\
     "CBCB9EEDC61EBA3C4A2119685E22205B782C88BFAF21FE98D4"\
     "474FBDB1AFA539B05F09EF60DDF5BA8224161942B9582D37DD"\
     "D624A97C373E5BB33BFC2335A674E4839D72253BA62B97F0B3"\
     "6BCA5B4001353FED5D28FED31FA53C343F381BE121E106F669"\
     "5B3CB";
    P.C7 = 
     "1726DAE1BD153379F1FB0F4F2E00C06D39A733B7715D108EF0C"\
     "518A11DF528394E37F744E1CEE1B4B411FEAFD7DDE0E281042"\
     "A728F85FEDB91C8C2ECECF31873C77D68053D550EB8549FDE2"\
     "C1885F40B68E1F0FF3383B747882AA517EB6F9061E23650222"\
     "85F1B1BEA91F83E2C4CD66BF0C636FC79B81A738D65D6F5BF8"\
     "0234D7";

        memset(KeyStr, 0, 100 );
        P.RegKey = (LPTSTR)KeyStr;      // Buffer for registration key
        P.RegKeySize = 100;             // Size of a buffer for reg. key

    // Generating...

                Res = RegKeyGenerate(&P);
        if(Res == kgERROR_SUCCESS)
        {
                memcpy(KeyStr, P.RegKey, P.RealKeySize);
                return TRUE;
        }
        else return FALSE;
}

//---------------------------------------------------------------------
void ProcessRegistration( HWND hwnd )
{

        DWORD   Res;
        char*   ResStr;
		char	KeyStr[256];

		char	NameStr[256];
		int		size;

		size = GetDlgItemText(hwnd, IDC_REGNAME_EDIT, NameStr, 256);
		if (size > 0) NameStr[size] = 0;

        memset(&KeyStr, 0, sizeof(KeyStr));

        if(GenerateKey( (LPSTR*)KeyStr, (LPSTR)NameStr, Res ) == FALSE)
        {
                switch (Res)
                {
                        case kgERROR_KG_ERROR            : ResStr = "Key generator error!"; break;
                        case kgERROR_MODE_UNKNOWN        : ResStr = "Unknown mode number!"; break;
                        case kgERROR_REGNAME_ERROR       : ResStr = "Incorrect registration name!"; break;
                        case kgERROR_SIGNATURE_ERROR     : ResStr = "Unknown mode signature!"; break;
                        case kgERROR_BUFFER_TOO_SMALL    : ResStr = "Result buffer too small!"; break;
                        case kgERROR_CONSTANTS_UNDEFINED : ResStr = "Incorrect constants!"; break;
                        case kgERROR_HARDWAREID_ERROR    : ResStr = "Invalid HardwareID key!"; break;
                }

                MessageBox(hwnd, ResStr, "Error", MB_ICONINFORMATION);
        }
        else
        {
                SetDlgItemText(hwnd, IDC_REGKEY_EDIT, KeyStr);
        }

}

//---------------------------------------------------------------------
BOOL APIENTRY DlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{

        switch (msg) {


                // Cmd

		case WM_INITDIALOG:

			SetDlgItemText(hwnd, IDC_REGNAME_EDIT, "Registered User");
			return TRUE;

        case WM_COMMAND:

			switch (LOWORD(wParam)) {

				case IDC_GENERATE:
					ProcessRegistration( hwnd );
					break;

                case IDC_EXIT:
                    EndDialog(hwnd, IDC_EXIT);
                    break;

                case IDCANCEL:
                    EndDialog(hwnd, IDCANCEL);
                    break;

            }

            break;
    }

    return FALSE;
}
//---------------------------------------------------------------------
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow){

        // LoadLibrary "keygen.dll"

        KeyGenDll = LoadLibrary("keygen.dll");
        if(KeyGenDll == NULL)
        {
                MessageBox(0, "keygen.dll not found!", "Error", MB_ICONSTOP);
                return 0;
        }

        // GetProcAddress "ASPRegistrationKeyGenerate"

        RegKeyGenerate = (ASPRegistrationKeyGenerate)GetProcAddress(KeyGenDll, RegistrationKeyGenerateName);
        if(RegKeyGenerate == NULL)
        {
                MessageBox(0, "`ASPRegistrationKeyGenerate` function not found!", "Error", MB_ICONSTOP);
                FreeLibrary(KeyGenDll);
                return 0;
        }

        // DialogBox "IDD_DIALOG"

        DialogBox(NULL,(LPSTR)MAKEINTRESOURCE(IDD_DIALOG),NULL,(DLGPROC/*WNDPROC*/)DlgProc);
        if(KeyGenDll != NULL) FreeLibrary(KeyGenDll);
        return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -