Support the latest CryptoObfuscator build

This commit is contained in:
de4dot 2013-01-15 01:37:21 +01:00
parent 8225f79f3c
commit 9ac79e253e
4 changed files with 8 additions and 5 deletions

View File

@ -67,7 +67,8 @@ namespace de4dot.code.deobfuscators.CryptoObfuscator {
!containsString(method, "Debugger detected") &&
!containsString(method, "Debugger was detected") &&
!containsString(method, "{0} was detected") &&
!containsString(method, "run under"))
!containsString(method, "run under") &&
!containsString(method, "run with"))
continue;
antiDebuggerType = type;

View File

@ -110,7 +110,7 @@ namespace de4dot.code.deobfuscators.CryptoObfuscator {
MethodDef getProxyCreateMethod(TypeDef type) {
if (DotNetUtils.findFieldType(type, "System.ModuleHandle", true) == null)
return null;
if (type.Fields.Count < 1 || type.Fields.Count > 14)
if (type.Fields.Count < 1 || type.Fields.Count > 16)
return null;
MethodDef createMethod = null;

View File

@ -79,9 +79,9 @@ namespace de4dot.code.deobfuscators.CryptoObfuscator {
bool findDesktopOrCompactFramework() {
resourceDecrypterType = null;
foreach (var type in module.Types) {
if (type.Fields.Count != 5)
if (type.Fields.Count < 5)
continue;
if (!new FieldTypes(type).exactly(requiredTypes))
if (!new FieldTypes(type).all(requiredTypes))
continue;
var cctor = type.FindStaticConstructor();
@ -300,6 +300,8 @@ namespace de4dot.code.deobfuscators.CryptoObfuscator {
foreach (var method in type.Methods) {
if (DotNetUtils.isMethod(method, "System.Byte[]", "(System.IO.Stream)"))
yield return method;
else if (DotNetUtils.isMethod(method, "System.Byte[]", "(System.Int64,System.IO.Stream)"))
yield return method;
else if (DotNetUtils.isMethod(method, "System.Byte[]", "(System.Int32,System.IO.Stream)"))
yield return method;
else if (DotNetUtils.isMethod(method, "System.Byte[]", "(System.Int16,System.IO.Stream)"))

View File

@ -84,7 +84,7 @@ namespace de4dot.code.deobfuscators.CryptoObfuscator {
if (!method.IsStatic || !DotNetUtils.isMethod(method, "System.Void", "()"))
return false;
if (type.Methods.Count < 3 || type.Methods.Count > 20)
if (type.Methods.Count < 3 || type.Methods.Count > 24)
return false;
if (DotNetUtils.getPInvokeMethod(type, "mscoree", "StrongNameSignatureVerificationEx") != null) {
}