用C语言写了个超难的Crackme,欢迎高手来破
本帖最后由 iTruth 于 2020-2-24 11:05 编辑这个程序如果输入错误会直接退出,输入正确会弹出对话框提示你破解成功了
如果哪位大佬破解完觉得简单请轻喷..
C语言编写 无壳 只有写出注册机才算破解成功
现在时间到了,还没有人能写出注册机所以放出源码
第一次发这种帖子Keygenme没控制好难度还请各位大佬海涵
本帖最后由 iTruth 于 2020-2-24 11:06 编辑
我再追加一组正确的用户名和序列号来给你们做参考
username:----涉嫌联系方式----
regcode:+z0GJdRGsw13sepb char* charmap = "CbcdefghGjkl+mYopLr6tOvwxyzA/BaD0FiHIJKqMNuPQRSTUV7XnZ12345sW98E";
void *__cdecl date(int a1, void *Name, int len)
{
unsigned int p;
int k;
int i;
k = (*(DWORD *)a1 >> 3) & 0x3F;
p = 64 - k;
*(DWORD *)a1 += 8 * len;
if (*(DWORD *)a1 < (unsigned int)(8 * len))
++*(DWORD *)(a1 + 4);
*(DWORD *)(a1 + 4) += (unsigned int)len >> 29;
if (len < p)
{
i = 0;
}
else
{
memcpy((void *)(k + 16 + a1 + 8), Name, p);
Transform((int *)(a1 + 8), a1 + 24);
for (i = 64 - k; len >= (unsigned int)(i + 64); i += 64)
Transform((int *)(a1 + 8), (int)Name + i);
k = 0;
}
return memcpy((void *)(k + 16 + a1 + 8), (char *)Name + i, len - i);
}
unsigned int __cdecl Encode(int a1, int a2, unsigned int a3)
{
unsigned int result; // eax
unsigned int i; //
int v5; //
v5 = 0;
for (i = 0; ; i += 4)
{
result = i;
if (i >= a3)
break;
*(BYTE *)(a1 + i) = *(DWORD *)(4 * v5 + a2);
*(BYTE *)(i + 1 + a1) = *(WORD *)(4 * v5 + a2) >> 8;
*(BYTE *)(i + 2 + a1) = *(DWORD *)(4 * v5 + a2) >> 16;
*(BYTE *)(i + 3 + a1) = *(DWORD *)(4 * v5++ + a2) >> 24;
}
return result;
}
unsigned int __cdecl Final(DWORD *a1, int a2)
{
int v2;
char v4;
int v5;
unsigned int v6;
v6 = 0;
v5 = 0;
v6 = (*a1 >> 3) & 0x3F;
if (v6 > 0x37)
v2 = 120 - v6;
else
v2 = 56 - v6;
v5 = v2;
Encode((int)&v4, (int)a1, 8u);
Update((int)a1, &PADDING, v5);
Update((int)a1, &v4, 8);
return Encode(a2, (int)(a1 + 2), 0x10u);
}
void 初始化(Name)
{
pi = malloc(0x10u);
*j = 0;
j = 0;
j = 1732584193;
j = -271733879;
j = -1732584194;
result = a1;
a1 = 271733878;
NameLen = strlen(Name)
date(&j,Name,NameLen)
Final(&j, pi);
}
if(NameLen> 7 && NameLen <= 30)
{
temp = (char *)malloc(0x20u);
for(int i = null, i <= 5 ; i++)
{
LOC = 4;
LOC = getLoc(temp);
{
for (j = 0; j <= 15; ++j)
key = (char *)malloc(0x11u);
memset(key, 0, 0x11u);
key = charmap[abs(
(signed int)(*(char *)(LOC + j) ^ ((*(char *)(LOC + j) & (*(char *)(LOC + j) | *(char *)(LOC + j) ^ 0xFFFFF123))
- *(char *)(LOC + j))
* *(char *)(LOC + j))
% 64)];
}
}
}
}
全是手打 电脑没装vs huzpsb 发表于 2020-2-22 21:35
for ( j = 0; j
我将会在后天中午公布源代码,在此期间只要有人写出注册机我都会直接公布 本帖最后由 huzpsb 于 2020-2-23 12:44 编辑
for ( j = 0; j <= 15; ++j )
v6 = charmap[abs(
(signed int)(*(char *)(v8 + j) ^ ((*(char *)(v8 + j) & (*(char *)(v8 + j) | *(char *)(v8 + j) ^ 0xFFFFF123))
- *(char *)(v8 + j))
* *(char *)(v8 + j))
% 64)];
Nice Try.
不过我想知道magicube.h是啥...
User:----涉嫌联系方式----
Pass:xC7NIMhhKMEyuBtX
又:我刚开始以为用户名好像必须是邮箱,现在看来好像不是... User:123456789
Pass:o3jeO4Y29BJXDwUf
huzpsb 发表于 2020-2-22 21:35
for ( j = 0; j
还有,用户名不一定是邮箱 直接爆破不算吧!{:301_998:} crack5 发表于 2020-2-22 21:41
User:123456789
Pass:o3jeO4Y29BJXDwUf
大佬能讲一下破解思路?{:301_997:} crack5 发表于 2020-2-22 22:05
char* charmap = "CbcdefghGjkl+mYopLr6tOvwxyzA/BaD0FiHIJKqMNuPQRSTUV7XnZ12345sW ...
- - 我说我没C++ 其他都可以贴出来IDA 一看就能看出来了
页:
[1]
2