// ConsoleApplication11.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
#include <iostream>
#include "defs.h"
//#include <Windows.h>
_BYTE DecodeBitMasks[256] = { 0x2A, 0xE7, 0x18, 0x6F, 0x63, 0x9D, 0x48, 0xEA, 0x39 ,0xCD,
0x38, 0xB8, 0xA0, 0xAB, 0xE0, 0x10, 0x35, 0x99 ,0x37, 9, 0xC0, 0x69, 0xB2, 0xA4, 0x67,
0x88, 0x50 ,0x34, 0x7F, 0xFC, 0xB, 0xBE, 0xC, 0x44, 0x59, 0xB6 ,0x5B, 0x9C, 0x65, 0xD6,
0x94, 0xEB, 0xC4, 0x3B, 3 ,0x3C, 0xC9, 0x3E, 0x6B, 0x9A, 0xD4, 0xF6, 0xC3, 0x4D ,0x11,
0x24, 0xAA, 0xFF, 0x4A, 0xED, 0x95, 0x93, 0xD9 ,0x46, 0x5F, 0x96, 0x87, 0x30, 0xBA, 0xCA,
0xCB, 0xFA ,0x8A, 0x1A, 0x68, 0x5C, 0xAC, 7, 0x40, 0x60, 0x29 ,0x70, 0x57, 0x53, 0x41,
0x12, 0xDE, 0x1D, 0x64, 0x14 ,0x97, 0x72, 0xFB, 0x8D, 0x2B, 8, 0xCF, 0xF4, 0x3A ,0, 0xC5,
0x91, 0x56, 0xA9, 0x9E, 0x71, 0xBC, 0xA3 ,0xAF, 0xA6, 0x55, 0xDA, 0x79, 0xBB, 0x33, 0xA5,
0x25 ,0x15, 0x7D, 0xEE, 0xC1, 0x2C, 0xC7, 0xD0, 0x19, 0xD8 ,0x5A, 0xE8, 0x85, 0xFD, 0x2F,
0x6A, 0x78, 0x45, 0xDB ,0xB5, 0xF5, 0x1E, 4, 0x75, 0xB0, 0x7A, 0x20, 0xF2 ,0xDF, 0xD3,
0x83, 0xF3, 0x54, 0x90, 0xA2, 0xC6, 0xF ,0x80, 0x36, 0x4E, 0xC8, 1, 0x82, 0x76, 0xA1, 0x2E
,0x84, 0x86, 0xE, 0x47, 0x8F, 0xE1, 0xF9, 0x7C, 0xC2 ,0x74, 0xDC, 0x26, 0x22, 0xCE, 0x2D,
0x4F, 0xBF, 0xD ,0x73, 0x27, 0x21, 0xB3, 0x98, 0x1F, 0x89, 0xEC, 0xFE ,0x52, 0xA, 0x8C,
0x9F, 0xA8, 0xE5, 0xE6, 6, 0x8B, 0xCC ,0xF7, 0x5E, 0xE3, 0x7B, 0xD2, 5, 0x49, 0x13, 0xE9
,0x66, 0xB7, 0xAD, 0xB4, 0xF8, 0xA7, 0x1C, 0xF1, 2 ,0x7E, 0x6E, 0x17, 0x62, 0x4C, 0x77,
0x8E, 0xDD, 0xF0 ,0x43, 0x28, 0x6D, 0x61, 0xB9, 0xD7, 0xBD, 0x3D, 0x9B ,0x92, 0x16, 0xEF,
0x51, 0x23, 0xE2, 0xB1, 0x81, 0x31,0x32, 0x58, 0xD1, 0x5D, 0xD5, 0x6C, 0x4B, 0xE4, 0xAE
,0x42, 0x1B, 0x3F };
_BYTE EncodeBitMasks[256] = { 0x8C, 0x87, 0xD, 0x85, 0xD4, 0x64, 0x63, 0xE5, 0xBA ,0x7E,
0xB8, 0x68, 0x9D, 0x9F, 0xF5, 0xBC, 0xA0, 0xE3 ,0x3A, 0x22, 0x19, 0x21, 0x39, 0x78, 0xEE,
0x27, 0x36 ,0x15, 0x74, 0xC7, 0x97, 0xC9, 0xCE, 0xE2, 0x7B, 0x4C ,0x98, 0xA1, 0xC2, 0x59,
0x41, 0xC0, 0x1E, 0x2E, 0x95 ,0xEB, 0xDE, 0x69, 0x1D, 0x5B, 0x53, 0xDA, 0xF4, 0xA ,0x4F,
0xBB, 0xB7, 0x24, 0x33, 0xF, 0xC8, 0x84, 0x29 ,0x89, 0x3C, 0x1C, 8, 0x49, 0xC6, 0xFE, 0xCC,
0x23 ,0x3E, 0xE1, 0x4E, 0x8B, 0x13, 0xE7, 0x1A, 0x5D, 0xCF ,0xB1, 0x47, 0x8F, 0xD8, 0x72,
0x4B, 0x93, 0x6E, 0x73 ,0x4D, 0x94, 0xDD, 0x82, 0x14, 0xA7, 3, 0xF9, 0xF1 ,0xC5, 0x8D,
0x79, 0x2A, 0xC4, 0xDC, 0x60, 0x5F, 0xD7 ,0x62, 0xB5, 0xE9, 0xB3, 0xB6, 0x12, 0xA8, 0x32,
0xD9 ,0xC3, 0x6A, 0x75, 0x4A, 0xA2, 0xC, 0x26, 0x91, 0x5A ,0xAD, 0x6D, 0x44, 0x10, 0xB4,
0x46, 0x1B, 0x66, 0x81 ,0x20, 0xFD, 0x7F, 0x88, 0x25, 0x9C, 0x71, 0xD3, 0xE6 ,0x80, 0xE4,
0xFA, 0x42, 0x9B, 0x37, 1, 0xFC, 0xDB ,0x45, 0x6B, 0xFB, 0x56, 0xF0, 0xAF, 0x9A, 0xBF, 0xAB
,0xD6, 0xCD, 2, 0xF2, 0x7C, 0xAA, 0xB2, 0x92, 0xFF ,0x57, 0x2F, 0x86, 0xA6, 0x7D, 0x35,
0x17, 0x34, 0xD5 ,0xE, 0x65, 9, 5, 0x28, 0xCA, 0x48, 0x31, 0x8E, 0x2D ,0xDF, 0x52, 0xF6,
0x1F, 0xA4, 0x50, 0x76, 0x40, 0x18,4, 0x8A, 0x16, 0x2B, 0xAE, 0x43, 0x3F, 0xD0, 0xCB ,0x6C,
0x55, 0x54, 0x96, 0x99, 0x30, 0x67, 0x5E, 0x2C ,0xAC, 0xE0, 0x7A, 0xE8, 0x58, 0x90, 0xBE,
0xA5, 0x6F ,0xB0, 0x70, 0xEC, 0x61, 0x5C,6, 0x3B, 0x77, 0xC1,7,0xEA, 0xA9, 0xF8, 0x11,
0xBD, 0xF3, 0, 0xED, 0x83,0xEF, 0x3D, 0xA3, 0x51, 0x9E, 0x38, 0xF7, 0xB, 0xB9,0xD2, 0xD1 };
unsigned __int8* __fastcall EncryptData(unsigned __int8* result, int a2, int a3, _DWORD*
a4)
{
int v4; // r8
int v5; // r5
int v6; // r12
unsigned int v7; // r7
int v8; // r6
bool v9; // nf
unsigned __int8 v10; // vf
char v11; // r4
int v12; // r5
if (a3)
{
LOBYTE(v4 = 0);
v5 = 0;
v6 = 0;
do
{
v7 = EncodeBitMasks[*result] ^ 9;
v8 = v5 + 2;
v10 = __OFSUB__(v5 + 2, 6);
v9 = v5 - 4 < 0;
*(_BYTE*)(a2 + v6) = (((v7 >> (v5 + 2)) | v4) & 0x3F) + 60;
v11 = 6 - v5;
v12 = v6 + 1;
v4 = (unsigned __int8)(v7 << v11) >> 2;
if (v9 ^ v10)
{
++v6;
v5 = v8;
}
else
{
v6 += 2;
*(_BYTE*)(a2 + v12) = v4 + 60;
v5 = 0;
v4 = 0;
}
--a3;
++result;
} while (a3);
if (v5 > 0)
{
result = (unsigned __int8*)(v4 + 60);
*(_BYTE*)(a2 + v6++) = v4 + 60;
}
}
else
{
v6 = 0;
}
*a4 = v6;
return result;
}
char byte_138BCD8[1048576];
unsigned __int8 byte_11533F0[5] = { 0xFC, 0xF8, 0xF0, 0xE0, 0xC0 };
int __fastcall DecryptData(int result, char* a2, unsigned int a3, unsigned int* a4)
{
int v4; // r12
signed int v5; // r4
int v6; // r10
unsigned int v7; // lr
int v8; // r6
unsigned int v9; // r5
unsigned __int8 v10; // r5
if (a3)
{
v4 = 0;
v5 = 2;
LOBYTE(v6 = 0);
v7 = 0;
v8 = 0;
while (1)
{
v9 = *(unsigned __int8*)(result + v4);
if (v9 < 0x3C)
goto LABEL_12;
v10 = v9 - 60;
if (v8 >= 2)
{
a2[v7++] = DecodeBitMasks[(unsigned __int8)(((v10 & 0x3Fu) >> (6 - v5)) |
v6) ^ 0x9E] ^ 0x34;
if (v5 > 5)
{
v5 = 2;
v8 = 0;
goto LABEL_9;
}
v5 += 2;
v8 = 0;
}
v6 = byte_11533F0[v5 - 2] & (v10 << v5);
v8 = v8 + 8 - v5;
LABEL_9:
if (++v4 >= a3)
goto LABEL_12;
}
}
v7 = 0;
LABEL_12:
*a4 = v7;
return result;
}
以上的C++代码。。。。
|