能力值:
( LV7,RANK:100 )
10 楼
#include <stdio.h>
#include <windows.h>
DWORD G_SEEDS[]=
{
0x39CB44B8,0x23754F67,0x5F017211,0x3EBB24DA
,0x351707C6,0x63F9774B,0x17827288,0x0FE74821
,0x5B5F670F,0x48315AE8,0x785B7769,0x2B7A1547
,0x38D11292,0x42A11B32,0x35332244,0x77437B60
,0x1EAB3B10,0x53810000,0x1D0212AE,0x6F0377A8
,0x43C03092,0x2D3C0A8E,0x62950CBF,0x30F06FFA
,0x34F710E0,0x28F417FB,0x350D2F95,0x5A361D5A
,0x15CC060B,0x0AFD13CC,0x28603BCF,0x3371066B
,0x30CD14E4,0x175D3A67,0x6DD66A13,0x2D3409F9
,0x581E7B82,0x76526B99,0x5C8D5188,0x2C857971
,0x15F51FC0,0x68CC0D11,0x49F55E5C,0x275E4364
,0x2D1E0DBC,0x4CEE7CE3,0x32555840,0x112E2E08
,0x6978065A,0x72921406,0x314578E7,0x175621B7
,0x40771DBF,0x3FC238D6,0x4A31128A,0x2DAD036E
,0x41A069D6,0x25400192,0x00DD4667,0x6AFC1F4F
,0x571040CE,0x62FE66DF,0x41DB4B3E,0x3582231F
,0x55F6079A,0x1CA70644,0x1B1643D2,0x3F7228C9
,0x5F141070,0x3E1474AB,0x444B256E,0x537050D9
,0x0F42094B,0x2FD820E6,0x778B2E5E,0x71176D02
,0x7FEA7A69,0x5BB54628,0x19BA6C71,0x39763A99
,0x178D54CD,0x01246E88,0x3313537E,0x2B8E2D17
,0x2A3D10BE,0x59D10582,0x37A163DB,0x30D6489A
,0x6A215C46,0x0E1C7A76,0x1FC760E7,0x79B80C65
,0x27F459B4,0x799A7326,0x50BA1782,0x2A116D5C
,0x63866E1B,0x3F920E3C,0x55023490,0x55B56089
,0x2C391FD1,0x2F8035C2,0x64FD2B7A,0x4CE8759A
,0x518504F0,0x799501A8,0x3F5B2CAD,0x38E60160
,0x637641D8,0x33352A42,0x51A22C19,0x085C5851
,0x032917AB,0x2B770AC7,0x30AC77B3,0x2BEC1907
,0x035202D0,0x0FA933D3,0x61255DF3,0x22AD06BF
,0x58B86971,0x5FCA0DE5,0x700D6456,0x56A973DB
,0x5AB759FD,0x330E0BE2,0x5B3C0DDD,0x495D3C60
,0x53BD59A6,0x4C5E6D91,0x49D9318D,0x103D5079
,0x61CE42E3,0x7ED5121D,0x14E160ED,0x212D4EF2
,0x270133F0,0x62435A96,0x1FA75E8B,0x6F092FBE
,0x4A000D49,0x57AE1C70,0x004E2477,0x561E7E72
,0x468C0033,0x5DCC2402,0x78507AC6,0x58AF24C7
,0x0DF62D34,0x358A4708,0x3CFB1E11,0x2B71451C
,0x77A75295,0x56890721,0x0FEF75F3,0x120F24F1
,0x01990AE7,0x339C4452,0x27A15B8E,0x0BA7276D
,0x60DC1B7B,0x4F4B7F82,0x67DB7007,0x4F4A57D9
,0x621252E8,0x20532CFC,0x6A390306,0x18800423
,0x19F3778A,0x462316F0,0x56AE0937,0x43C2675C
,0x65CA45FD,0x0D604FF2,0x0BFD22CB,0x3AFE643B
,0x3BF67FA6,0x44623579,0x184031F8,0x32174F97
,0x4C6A092A,0x5FB50261,0x01650174,0x33634AF1
,0x712D18F4,0x6E997169,0x5DAB7AFE,0x7C2B2EE8
,0x6EDB75B4,0x5F836FB6,0x3C2A6DD6,0x292D05C2
,0x052244DB,0x149A5F4F,0x5D486540,0x331D15EA
,0x4F456920,0x483A699F,0x3B450F05,0x3B207C6C
,0x749D70FE,0x417461F6,0x62B031F1,0x2750577B
,0x29131533,0x588C3808,0x1AEF3456,0x0F3C00EC
,0x7DA74742,0x4B797A6C,0x5EBB3287,0x786558B8
,0x00ED4FF2,0x6269691E,0x24A2255F,0x62C11F7E
,0x2F8A7DCD,0x643B17FE,0x778318B8,0x253B60FE
,0x34BB63A3,0x5B03214F,0x5F1571F4,0x1A316E9F
,0x7ACF2704,0x28896838,0x18614677,0x1BF569EB
,0x0BA85EC9,0x6ACA6B46,0x1E43422A,0x514D5F0E
,0x413E018C,0x307626E9,0x01ED1DFA,0x49F46F5A
,0x461B642B,0x7D7007F2,0x13652657,0x6B160BC5
,0x65E04849,0x1F526E1C,0x5A0251B6,0x2BD73F69
,0x2DBF7ACD,0x51E63E80,0x5CF2670F,0x21CD0A03
,0x5CFF0261,0x33AE061E,0x3BB6345F,0x5D814A75
,0x257B5DF4,0x0A5C2C5B,0x16A45527,0x16F23945
,0xB3CBCD26,0xA1C800F6,0x2628FBCF,0xEBC70043
};
WORD _G_BYTESEEDS[]=
{
0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020
,0x0020,0x0028,0x0028,0x0028,0x0028,0x0028,0x0020,0x0020
,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020
,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020
,0x0048,0x0010,0x0010,0x0010,0x0010,0x0010,0x0010,0x0010
,0x0010,0x0010,0x0010,0x0010,0x0010,0x0010,0x0010,0x0010
,0x0084,0x0084,0x0084,0x0084,0x0084,0x0084,0x0084,0x0084
,0x0084,0x0084,0x0010,0x0010,0x0010,0x0010,0x0010,0x0010
,0x0010,0x0181,0x0181,0x0181,0x0181,0x0181,0x0181,0x0101
,0x0101,0x0101,0x0101,0x0101,0x0101,0x0101,0x0101,0x0101
,0x0101,0x0101,0x0101,0x0101,0x0101,0x0101,0x0101,0x0101
,0x0101,0x0101,0x0101,0x0010,0x0010,0x0010,0x0010,0x0010
,0x0010,0x0182,0x0182,0x0182,0x0182,0x0182,0x0182,0x0102
,0x0102,0x0102,0x0102,0x0102,0x0102,0x0102,0x0102,0x0102
,0x0102,0x0102,0x0102,0x0102,0x0102,0x0102,0x0102,0x0102
,0x0102,0x0102,0x0102,0x0010,0x0010,0x0010,0x0010,0x0020
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
};
PBYTE G_BYTESEEDS = (PBYTE)_G_BYTESEEDS; DWORD __declspec( naked ) GetCalc_Count(char *username)
{
_asm
{
/*00555F7C*/ MOV EAX,DWORD PTR SS:[ESP+4] // EAX = USER_NAME
/*00555F80*/ TEST AL,3
/*00555F82*/ JNZ AA555FB1 //NO JUMP
AA555F84:
/*00555F84*/ MOV EDX,DWORD PTR DS:[EAX]
/*00555F86*/ ADD EAX,4
/*00555F89*/ MOV ECX,EDX
/*00555F8B*/ SUB EDX,1010101h
/*00555F91*/ AND EDX,80808080h
/*00555F97*/ JE AA555F84
/*00555F99*/ NOT ECX
/*00555F9B*/ AND EDX,ECX
/*00555F9D*/ JE AA555F84
/*00555F9F*/ TEST DL,DL
/*00555FA1*/ JNZ AA555FCB
/*00555FA3*/ TEST DH,DH
/*00555FA5*/ JNZ AA555FCC
/*00555FA7*/ TEST EDX,0FF0000h
/*00555FAD*/ JNZ AA555FCD
/*00555FAF*/ JMP AA555FCE
AA555FB1:
/*00555FB1*/ ADD EAX,4
/*00555FB4*/ TEST BYTE PTR DS:[EAX-4],0FFh
/*00555FB8*/ JE AA555FCB
/*00555FBA*/ TEST BYTE PTR DS:[EAX-3],0FFh
/*00555FBE*/ JE AA555FCC
/*00555FC0*/ TEST BYTE PTR DS:[EAX-2],0FFh
/*00555FC4*/ JE AA555FCD
/*00555FC6*/ DEC EAX
/*00555FC7*/ AND AL,0FCh
/*00555FC9*/ JMP AA555F84
AA555FCB:
/*00555FCB*/ DEC EAX
AA555FCC:
/*00555FCC*/ DEC EAX
AA555FCD:
/*00555FCD*/ DEC EAX
AA555FCE:
/*00555FCE*/ MOV ECX,DWORD PTR SS:[ESP+4]
/*00555FD2*/ DEC EAX
/*00555FD3*/ SUB EAX,ECX
/*00555FD5*/ RETN
}
}
BYTE __declspec( naked ) GetCalcSeed(char seed)
{
_asm{
/*0055C9D4*/ PUSH EBP
/*0055C9D5*/ MOV EBP,ESP
/*0055C9D7*/ MOV EAX,DWORD PTR SS:[EBP+8] //MOVE EAX,PARAM1
/*0055C9DA*/ CMP EAX,-1 //IF EAX != FF
/*0055C9DD*/ JNZ AA55C9E4
/*0055C9DF*/ OR EAX,0xFFFFFFFF
/*0055C9E2*/ POP EBP
/*0055C9E3*/ RETN
AA55C9E4:
/*0055C9E4*/ XOR EDX,EDX //EDX = 0
/*0055C9E6*/ MOV DL,AL
/*0055C9E8*/ TEST BYTE PTR DS:[EDX*2+G_BYTESEEDS],2 //IF (! (59EF36(PARAM1*2) & 2) )
/*0055C9F0*/ JE AA55C9F9 // RETURN PARAM1;
/*0055C9F2*/ ADD EDX,-20h
/*0055C9F5*/ MOV EAX,EDX // RETURN PARAM1-20
/*0055C9F7*/ POP EBP
/*0055C9F8*/ RETN
AA55C9F9:
/*0055C9F9*/ MOV EAX,EDX
/*0055C9FB*/ POP EBP
/*0055C9FC*/ RETN
}
} DWORD calckey(char * USER_NAME,BOOL bSth,BOOL CTRL1, BOOL CTRL2)
{
DWORD tmpEDX,CALC_COUNT;
DWORD RESULT = 0;
DWORD tmp1,tmp2;
BYTE SEED_BYTE;
DWORD i;
CALC_COUNT = GetCalc_Count(USER_NAME);
if(CALC_COUNT <= 0)
return 0;
for(i=0;i<CALC_COUNT;i++)
{
SEED_BYTE = GetCalcSeed(USER_NAME[i]);
if(bSth ==0)
{
}
else
{
tmpEDX = G_SEEDS[SEED_BYTE]; //1
tmpEDX += RESULT; //2
tmpEDX ^=G_SEEDS[(SEED_BYTE +0x0D)&0xFF ];//3
tmpEDX *=G_SEEDS[(SEED_BYTE +0x2F)&0xFF];//4
tmp1 = (i*0x13) & 0xff;
tmpEDX +=G_SEEDS[tmp1];//5;
tmp1 = i+i*8;
tmp2 = CTRL1;
tmp2 = tmp2 <<4;
tmp2 += CTRL1;
tmp1 += tmp2;
tmp1 &= 0xff;
tmpEDX +=G_SEEDS[tmp1];//6
tmp1 = (i*0x0D) & 0xff;
tmp2 = CTRL2;
tmp2 = tmp2 <<4;
tmp2 -= CTRL2;
tmp1 += tmp2;
tmpEDX +=G_SEEDS[tmp1];//7
RESULT = tmpEDX;
}
}
return RESULT;
}
BYTE __declspec( naked ) CALC_CTRL1(BYTE seedb)
{
_asm{
/*004527B2*/ PUSH EBP
/*004527B3*/ MOV EBP,ESP
/*004527B5*/ PUSH ECX
/*004527B6*/ MOV AL,BYTE PTR SS:[EBP+8]
/*004527B9*/ XOR AL,0x18
/*004527BB*/ ADD AL,0x3D
/*004527BD*/ XOR AL,0xA7
/*004527BF*/ MOV BYTE PTR SS:[EBP-1],AL
/*004527C2*/ MOV AL,BYTE PTR SS:[EBP-1]
/*004527C5*/ POP ECX
/*004527C6*/ POP EBP
/*004527C7*/ RETN
}
}
WORD __declspec( naked ) CALC_CTRL2(WORD seedw)
{
_asm
{
/*004527C8*/ PUSH EBP
/*004527C9*/ MOV EBP,ESP
/*004527CB*/ PUSH ECX
/*004527CC*/ MOV AX,WORD PTR SS:[EBP+8] //param1
/*004527D0*/ XOR AX,7892h
/*004527D4*/ ADD AX,4D30h
/*004527D8*/ XOR AX,3421h
/*004527DC*/ MOV WORD PTR SS:[EBP-2],AX
/*004527E0*/ MOVZX EAX,WORD PTR SS:[EBP-2] //被除数
/*004527E4*/ MOV ECX,0Bh //除数
/* */
/*004527E9*/ CDQ
/*004527EA*/ IDIV ECX
/*004527EC*/ TEST EDX,EDX
/*004527EE*/ JNZ AA4527FF
/*004527F0*/ MOVZX EAX,WORD PTR SS:[EBP-2]
/*004527F4*/ MOV ECX,0Bh
/*004527F9*/ CDQ
/*004527FA*/ IDIV ECX //
/*004527FC*/ POP ECX //返回倍数,
/*004527FD*/ POP EBP
/*004527FE*/ RETN
AA4527FF:
/*004527FF*/ XOR EAX,EAX
/*00452801*/ POP ECX
/*00452802*/ POP EBP
/*00452803*/ RETN
}
}
CHAR INFO[][255]=
{
"*********************************************\n",
"** **\n",
"** KEYGEN FOR 010 Editor V1.3 **\n",
"** **\n",
"** BY YANG**\n",
"** 2004.5.15**\n",
"** ANY QUESTION ABOUT THIS KEYGEN**\n",
"** PLEASE MAIL TO YHF@CHINAWEAL.COM**\n"
"*********************************************\n",
"GOT THE KEY SUCCESSFULLY,ENJOY IT! :) \n"
}; int main(int argc,char *arg[])
{
DWORD KEYGEN = 0;
CHAR USER_NAME[255]="";
BYTE KEYS[8]={0};
BYTE i,j,tmpa;
WORD testword,tmpb;
if(argc <2)
{
printf("Input A user Name please!\n");
return 0;
}
for(i=1;i<argc;i++)
{
if(lstrlen(USER_NAME)!=0)
{
lstrcat(USER_NAME," ");
}
lstrcat(USER_NAME,arg[i]);
}
KEYGEN = calckey(USER_NAME,1,1,1);
//printf("%X\n",KEYGEN);
memcpy(&KEYS[4],&KEYGEN,sizeof(KEYGEN));
KEYS[3] = 0x9C;
for(i=0;i<255;i++)
{
tmpa = i;
tmpa ^= KEYS[6]; //1ST XOR 7TH
if(CALC_CTRL1(tmpa) == 1)
{
KEYS[0] = i;
break;
}
} for(i=0;i<255;i++)
{
for(j=0;j<255;j++)
{
tmpa = i;
tmpb = j;
tmpa ^= KEYS[7]; //2ND XOR 8TH
testword = 0;
testword = tmpa;
testword <<=8;
tmpb ^= KEYS[5]; //3rd xor 6th
testword |= tmpb;
if(CALC_CTRL2(testword)==1)
{
KEYS[1] = i;
KEYS[2] = j;
for(j=0;j<10;j++)
{
printf("%s",INFO[j]);
}
printf("NAME: %s\n",USER_NAME);
printf("KEYS: ");
for(j = 0;j<8;j++)
{
if(KEYS[j]<0x10)
{
printf("0");
}
printf("%X",KEYS[j]);
if((j+1)%2 == 0 && j!=7)
{
printf("-");
}
}
printf("\n");
return 0;
}
}
}
return 0;
}
这个应该是完整的啊。用VC建立一个CPP文件。贴进去。编译看看~