Across软件破解

大类
Crack
技术标签
逆向-Windows
优先级
Low
开始日期
Apr 12, 2021
状态
Finalized
Public
Public
最后更新
Apr 12, 2021
Across用的TurboActivate这个激活SDK,有联网验证,并且有两个可执行文件(AcrossCenter和AcrossUniverse)
只要把他们的license id换成我的license id,然后自己给自己生成序列号并注册就行了
 
我给libssl做了一个wrapper,然后在里面直接搜索它们原来的id,替换成我的id
#include <windows.h> #include <psapi.h> struct construct { construct(void (*f)(void)) { f(); } }; #define constructor(fn) \ void fn(void); static construct constructor_##fn(fn) const void* memmem(const void* haystack, size_t haystack_len, const void* const needle, const size_t needle_len) { if (haystack == NULL) return NULL; // or assert(haystack != NULL); if (haystack_len == 0) return NULL; if (needle == NULL) return NULL; // or assert(needle != NULL); if (needle_len == 0) return NULL; for (const char* h = (const char *)haystack; haystack_len >= needle_len; ++h, --haystack_len) { if (!memcmp(h, needle, needle_len)) { return h; } } return NULL; } static wchar_t oriLicId[] = L"5c8957815509cb0d1c92d6.88616682"; static wchar_t newLicId[] = L"mmteo5kfshcj4jmqpkepxgu3rl34u2q"; static constructor(foo); void foo() { OutputDebugStringA("Loaded misty crack for across!"); HMODULE mainMod = GetModuleHandle(NULL); MODULEINFO modinfo = { 0 }; if (!GetModuleInformation(GetCurrentProcess(), mainMod, &modinfo, sizeof(modinfo))) { exit(100); } size_t modSize = modinfo.SizeOfImage; void *pLicId = (void *)memmem(mainMod, modSize, oriLicId, sizeof(oriLicId)); DWORD oldProtect = 0; if (!VirtualProtect(pLicId, sizeof(newLicId), PAGE_READWRITE, &oldProtect)) { exit(101); } memcpy(pLicId, newLicId, sizeof(newLicId)); if (!VirtualProtect(pLicId, sizeof(newLicId), oldProtect, &oldProtect)) { exit(102); } OutputDebugStringA("Finished Misty crack for across!"); }