Support latest MC build

This commit is contained in:
de4dot 2012-04-10 19:06:03 +02:00
parent b97dacbc54
commit 1e33610ce8

View File

@ -117,6 +117,7 @@ namespace de4dot.code.deobfuscators.MaxtoCode {
V1,
V2,
V3,
V4,
}
class EncryptionInfo {
@ -169,6 +170,12 @@ namespace de4dot.code.deobfuscators.MaxtoCode {
MagicHi = 0xF28EECA3,
Version = EncryptionVersion.V3,
},
// 4F832868 = Mon, Apr 09 2012 20:20:24
new EncryptionInfo {
MagicLo = 0xAA913B87,
MagicHi = 0xF28EE0A3,
Version = EncryptionVersion.V4,
},
};
static EncryptionInfo[] encryptionInfos_McKey8C0h = new EncryptionInfo[] {
@ -204,6 +211,12 @@ namespace de4dot.code.deobfuscators.MaxtoCode {
MagicHi = 0xD72B891F,
Version = EncryptionVersion.V3,
},
// 4F832868 = Mon, Apr 09 2012 20:20:24
new EncryptionInfo {
MagicLo = 0x6AD31B13,
MagicHi = 0xD72B8A1F,
Version = EncryptionVersion.V4,
},
};
class MethodInfos {
@ -375,6 +388,27 @@ namespace de4dot.code.deobfuscators.MaxtoCode {
}
}
class DecrypterV4 : IDecrypter {
MethodInfos methodInfos;
public DecrypterV4(MethodInfos methodInfos) {
this.methodInfos = methodInfos;
}
public byte[] decrypt(int type, byte[] encrypted) {
switch (type) {
case 1: return methodInfos.decrypt2(encrypted);
case 2: return methodInfos.decrypt1(encrypted);
case 3: return methodInfos.decrypt3(encrypted);
case 4: return methodInfos.decrypt4(encrypted);
case 5: return methodInfos.decrypt5(encrypted);
case 6: return methodInfos.decrypt6(encrypted);
case 7: return methodInfos.decrypt7(encrypted);
default: throw new ApplicationException(string.Format("Invalid encryption type: {0:X2}", type));
}
}
}
void initializeDecrypter() {
switch (getVersion()) {
case EncryptionVersion.V1:
@ -389,6 +423,10 @@ namespace de4dot.code.deobfuscators.MaxtoCode {
decrypter = new DecrypterV3(this);
break;
case EncryptionVersion.V4:
decrypter = new DecrypterV4(this);
break;
case EncryptionVersion.Unknown:
default:
throw new ApplicationException("Unknown MC version");