本帖最后由 CCKmax123 于 2026-2-27 15:23 编辑
补丁源码:
[C++] 纯文本查看 复制代码 // dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"
#include "include/MinHook.h"
#include <Windows.h>
#include <iostream>
#include <cstdio>
typedef char* ( *Get_Data)();
Get_Data fpGetData = nullptr;
#define devicecode "1d95eacc5b4bf64d" //这里是你的机器码
//账号名:CCK 密码:CCK_Max666
char data2[] = "$$##ABC##$$|CCK|cec270d2a30c136db4b6c6f3a77328ea|" devicecode "|588663412F88370ED5CB2B3F1A723931D3D9E819160028663C72E2350E0458EBE6164AC3057863364560E1CC0381527D|$$##ABC##$$";
char* GetData() {
char* data = fpGetData();
printf("%s\n", data);
memcpy(data, data2, sizeof(data2));
return data;
}
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
CreateThread(NULL, NULL, [](LPVOID lpThreadParameter) -> DWORD {
// 初始化控制台
if (!AllocConsole()) {
// 如果控制台已存在(错误码5),这不是问题
DWORD err = GetLastError();
if (err != ERROR_ACCESS_DENIED) {
return 1;
}
}
SetConsoleTitleA("Crack Debug Console");
// 重定向标准输出
FILE* f;
freopen_s(&f, "CONOUT$", "w", stdout);
freopen_s(&f, "CONOUT$", "w", stderr);
freopen_s(&f, "CONIN$", "r", stdin);
// 设置控制台缓冲区大小
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFOEX csbi = { sizeof(csbi) };
GetConsoleScreenBufferInfoEx(hConsole, &csbi);
csbi.dwSize.Y = 1000; // 1000行缓冲区
SetConsoleScreenBufferInfoEx(hConsole, &csbi);
MessageBoxA(
NULL,
"输入任意不为空的账号密码即可登录成功 \n Crack By CCKa_Max",
"注入成功",
MB_OK | MB_ICONINFORMATION | MB_SYSTEMMODAL | MB_SETFOREGROUND
);
printf("========================================\n");
printf(" 52pojie.com CrackMe Patch - Debug Mode \n");
printf("========================================\n");
printf("PID: %lu, TID: %lu\n", GetCurrentProcessId(), GetCurrentThreadId());
printf("Time: %llu\n", GetTickCount64());
printf("========================================\n\n");
// 初始化 MinHook
MH_STATUS status = MH_Initialize();
if (status != MH_OK) {
printf("[ERROR] MinHook initialization failed: %d\n", status);
return 1;
}
printf("[INFO] MinHook initialized successfully\n");
//初始化MinHook
if (!MH_Initialize()) {
return 0;
}
std::cout << "Success To Load" << std::endl;
MH_CreateHook((LPVOID)0x00409B78, GetData, (void**)&fpGetData);
MH_EnableHook(MH_ALL_HOOKS);
}, hModule, 0, NULL);
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
这个补丁的原理是拦截程序获取数据的函数 来达到破解 注明:账户名是CCK 密码我改了新的密码是CCK_Max666
程序中的密码做了Hash加密 |