Created
September 1, 2020 02:28
-
-
Save RolfRolles/5b9268860f98b0e8d0975274b079e518 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
unsigned char dscrc_table[] = | |
{ | |
0x00, 0x5E, 0xBC, 0xE2, 0x61, 0x3F, 0xDD, 0x83, 0xC2, 0x9C, | |
0x7E, 0x20, 0xA3, 0xFD, 0x1F, 0x41, 0x9D, 0xC3, 0x21, 0x7F, | |
0xFC, 0xA2, 0x40, 0x1E, 0x5F, 0x01, 0xE3, 0xBD, 0x3E, 0x60, | |
0x82, 0xDC, 0x23, 0x07, 0x9F, 0xC1, 0x42, 0x1C, 0xFE, 0xA0, | |
0xE1, 0xBF, 0x5D, 0x03, 0x80, 0xDE, 0x3C, 0x62, 0xBE, 0xE0, | |
0x02, 0x5C, 0xDF, 0x81, 0x63, 0x3D, 0x7C, 0x22, 0xC0, 0x9E, | |
0x1D, 0x43, 0xA1, 0xFF, 0x46, 0x18, 0xFA, 0xA4, 0x27, 0x79, | |
0x9B, 0xC5, 0x84, 0xDA, 0x38, 0x66, 0xE5, 0xBB, 0x59, 0x07, | |
0xDB, 0x85, 0x67, 0x39, 0xBA, 0xE4, 0x06, 0x58, 0x19, 0x47, | |
0xA5, 0xFB, 0x78, 0x26, 0xC4, 0x9A, 0x65, 0x3B, 0xD9, 0x87, | |
0x04, 0x5A, 0xB8, 0xE6, 0xA7, 0xF9, 0x1B, 0x45, 0xC6, 0x98, | |
0x7A, 0x24, 0xF8, 0xA6, 0x44, 0x1A, 0x99, 0xC7, 0x25, 0x7B, | |
0x3A, 0x64, 0x86, 0xD8, 0x5B, 0x05, 0xE7, 0xB9, 0x8C, 0xD2, | |
0x30, 0x6E, 0xED, 0xB3, 0x51, 0x0F, 0x4E, 0x10, 0xF2, 0xAC, | |
0x2F, 0x71, 0x93, 0xCD, 0x11, 0x4F, 0xAD, 0xF3, 0x70, 0x2E, | |
0xCC, 0x92, 0xD3, 0x8D, 0x6F, 0x31, 0xB2, 0xEC, 0x0E, 0x50, | |
0xAF, 0xF1, 0x13, 0x4D, 0xCE, 0x90, 0x72, 0x2C, 0x6D, 0x33, | |
0xD1, 0x8F, 0x0C, 0x52, 0xB0, 0xEE, 0x32, 0x6C, 0x8E, 0xD0, | |
0x53, 0x0D, 0xEF, 0xB1, 0xF0, 0xAE, 0x4C, 0x12, 0x91, 0xCF, | |
0x2D, 0x73, 0xCA, 0x94, 0x76, 0x28, 0xAB, 0xF5, 0x17, 0x49, | |
0x08, 0x56, 0xB4, 0xEA, 0x69, 0x37, 0xD5, 0x8B, 0x57, 0x09, | |
0xEB, 0xB5, 0x36, 0x68, 0x8A, 0xD4, 0x95, 0xCB, 0x29, 0x77, | |
0xF4, 0xAA, 0x48, 0x16, 0xE9, 0xB7, 0x55, 0x0B, 0x88, 0xD6, | |
0x34, 0x6A, 0x2B, 0x75, 0x97, 0xC9, 0x4A, 0x14, 0xF6, 0xA8, | |
0x74, 0x2A, 0xC8, 0x96, 0x15, 0x4B, 0xA9, 0xF7, 0xB6, 0xE8, | |
0x0A, 0x54, 0xD7, 0x89, 0x6B, 0x35 | |
}; | |
jbyteArray __cdecl Java_com_scaf_android_client_CodecUtils_decodeWithEncrypt(JNIEnv *this, int a2Unused, jarray a3Array, char a4KeyByte) | |
{ | |
jsize vArgByteArrayLen; // ebp | |
jbyteArray vNewByteArray; // edi | |
jsize vNewByteArrayLen; // eax MAPDST | |
jbyte *vPtrCurByteArrayElt; // eax | |
jbyte vCurXoredByte; // dl | |
jbyte *vArgByteArrayElts; // [esp+20h] [ebp-2Ch] | |
jbyte *vNewByteArrayElts; // [esp+24h] [ebp-28h] MAPDST | |
jbyteArray vOutByteArray; // [esp+24h] [ebp-28h] | |
// Copy the argument byte array into a new byte array, called vNewByteArray | |
vArgByteArrayElts = (*this)->GetByteArrayElements(this, a3Array, 0); | |
vArgByteArrayLen = (*this)->GetArrayLength(this, a3Array); | |
vNewByteArray = (*this)->NewByteArray(this, vArgByteArrayLen); | |
(*this)->SetByteArrayRegion(this, vNewByteArray, 0, vArgByteArrayLen, vArgByteArrayElts); | |
// Get the byte array pointer and length from vNewByteArray | |
vNewByteArrayElts = (*this)->GetByteArrayElements(this, vNewByteArray, 0); | |
vNewByteArrayLen = (*this)->GetArrayLength(this, vNewByteArray); | |
// Decryption loop | |
for( int i = 0; i < vNewByteArrayLen; ++i ) | |
vNewByteArrayElts[i] ^= a4KeyByte ^ dscrc_table[vNewByteArrayLen]; | |
// Allocate a new byte array for the output, and copy vNewByteArray into it | |
vOutByteArray = (*this)->NewByteArray(this, vNewByteArrayLen); | |
(*this)->SetByteArrayRegion(this, vOutByteArray, 0, vNewByteArrayLen, vNewByteArrayElts); | |
(*this)->ReleaseByteArrayElements(this, a3Array, vArgByteArrayElts, 0); | |
// Return the final byte array. There's a memory leak on vNewByteArray | |
return vOutByteArray; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment