//----- (00842A80) --------------------------------------------------------
char __thiscall sub_842A80(void *this, int a2, unsigned int a3)
{
char result; //
unsigned int i; //
char v5; //
if ( a2 )
{
for ( i = 0; i < a3; ++i )
{
if ( *(_BYTE *)(i + a2) )
{
v5 = *((_BYTE *)this + i % 0xB) ^ *(_BYTE *)(i + a2);
if ( v5 )
*(_BYTE *)(i + a2) = v5;
}
}
result = 1;
}
else
{
result = 0;
}
return result;
}
void CCrypto::cypto( unsigned char* buffer, unsigned size )
{
for ( unsigned i = 5; i < size; i++)
{
buffer[i] = (byte)(buffer[i]^0xB );
}
}
BYTE bVal(int addr) { return *(BYTE*)addr; }
bool Poop(void* this, int offset, uint len)
{
if (offset > 0)
{
for (int i = 0; i < len; i++)
{
if (bVal(i + offset) > 0)
{
char t = bVal((this + i % Bh) ^ bVal(i + offset));
if (t > 0)
*(_BYTE *)(i + offset) = t; // Err... assignment operation invalid for rvalue ...
}
}
}
else
return false;
return true;
}
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_1 = byte ptr -1
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
mov [ebp+var_C], ecx
cmp [ebp+arg_0], 0
jnz short loc_842A94
xor al, al
jmp short loc_842AF7
; ---------------------------------------------------------------------------
loc_842A94: ; CODE XREF: sub_842A80+Ej
mov [ebp+var_1], 0
mov [ebp+var_8], 0
jmp short loc_842AAA
; ---------------------------------------------------------------------------
loc_842AA1: ; CODE XREF: sub_842A80:loc_842AF3j
mov eax, [ebp+var_8]
add eax, 1
mov [ebp+var_8], eax
loc_842AAA: ; CODE XREF: sub_842A80+1Fj
mov ecx, [ebp+var_8]
cmp ecx, [ebp+arg_4]
jnb short loc_842AF5
mov edx, [ebp+arg_0]
add edx, [ebp+var_8]
movzx eax, byte ptr [edx]
test eax, eax
jz short loc_842AF3
mov ecx, [ebp+arg_0]
add ecx, [ebp+var_8]
movzx ecx, byte ptr [ecx]
mov eax, [ebp+var_8]
xor edx, edx
mov esi, 0Bh
div esi
mov eax, [ebp+var_C]
movsx edx, byte ptr [eax+edx]
xor ecx, edx
mov [ebp+var_1], cl
movzx eax, [ebp+var_1]
test eax, eax
jz short loc_842AF3
mov ecx, [ebp+arg_0]
add ecx, [ebp+var_8]
mov dl, [ebp+var_1]
mov [ecx], dl
loc_842AF3: ; CODE XREF: sub_842A80+3Dj
; sub_842A80+66j
jmp short loc_842AA1
; ---------------------------------------------------------------------------
loc_842AF5: ; CODE XREF: sub_842A80+30j
mov al, 1
loc_842AF7: ; CODE XREF: sub_842A80+12j
pop esi
mov esp, ebp
pop ebp
retn 8
sub_842A80 endp
void CCrypto::cypto( unsigned char* buffer, unsigned size )
{
for ( unsigned i = 5; i < size; i++)
{
buffer[i] = (byte)(buffer[i] % 0xB )^ (byte)(buffer[i] + 0);
}
}
//unsigned char unknown_key[10];
bool CCrypto::Encrypt(unsigned char* buffer, unsigned int size)
{
if (buffer == null)
return false;
for (unsigned int i = 0; i < size; i++)
{
if (buffer[i] != 0)
{
unsigned char ch = unknown_key[i % 0xB] ^ buffer[i];
if (ch)
buffer[i] = ch;
}
}
return true;
}
21 00 01 00 5d 6c 00 00 7a 7c 6f 00 00 00 00 00 5b 51 4f 59 44 5f 5e 52 5d 5d 40 5e 52 00 00 00 00