Rename some fields, and only remove types/etc if users wants it
This commit is contained in:
parent
045e6ecf73
commit
a94d1406db
|
@ -27,13 +27,13 @@ namespace de4dot.deobfuscators.CliSecure {
|
||||||
public const string THE_NAME = "CliSecure";
|
public const string THE_NAME = "CliSecure";
|
||||||
const string DEFAULT_REGEX = @"[a-zA-Z_0-9>}$]$";
|
const string DEFAULT_REGEX = @"[a-zA-Z_0-9>}$]$";
|
||||||
BoolOption decryptMethods;
|
BoolOption decryptMethods;
|
||||||
BoolOption fixResources;
|
BoolOption decryptResources;
|
||||||
BoolOption removeStackFrameHelper;
|
BoolOption removeStackFrameHelper;
|
||||||
|
|
||||||
public DeobfuscatorInfo()
|
public DeobfuscatorInfo()
|
||||||
: base(DEFAULT_REGEX) {
|
: base(DEFAULT_REGEX) {
|
||||||
decryptMethods = new BoolOption(null, makeArgName("methods"), "Decrypt methods", true);
|
decryptMethods = new BoolOption(null, makeArgName("methods"), "Decrypt methods", true);
|
||||||
fixResources = new BoolOption(null, makeArgName("rsrc"), "Decrypt resources", true);
|
decryptResources = new BoolOption(null, makeArgName("rsrc"), "Decrypt resources", true);
|
||||||
removeStackFrameHelper = new BoolOption(null, makeArgName("stack"), "Remove all StackFrameHelper code", true);
|
removeStackFrameHelper = new BoolOption(null, makeArgName("stack"), "Remove all StackFrameHelper code", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ namespace de4dot.deobfuscators.CliSecure {
|
||||||
return new Deobfuscator(new Deobfuscator.Options {
|
return new Deobfuscator(new Deobfuscator.Options {
|
||||||
ValidNameRegex = validNameRegex.get(),
|
ValidNameRegex = validNameRegex.get(),
|
||||||
DecryptMethods = decryptMethods.get(),
|
DecryptMethods = decryptMethods.get(),
|
||||||
FixResources = fixResources.get(),
|
DecryptResources = decryptResources.get(),
|
||||||
RemoveStackFrameHelper = removeStackFrameHelper.get(),
|
RemoveStackFrameHelper = removeStackFrameHelper.get(),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ namespace de4dot.deobfuscators.CliSecure {
|
||||||
protected override IEnumerable<Option> getOptionsInternal() {
|
protected override IEnumerable<Option> getOptionsInternal() {
|
||||||
return new List<Option>() {
|
return new List<Option>() {
|
||||||
decryptMethods,
|
decryptMethods,
|
||||||
fixResources,
|
decryptResources,
|
||||||
removeStackFrameHelper,
|
removeStackFrameHelper,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -76,7 +76,7 @@ namespace de4dot.deobfuscators.CliSecure {
|
||||||
|
|
||||||
internal class Options : OptionsBase {
|
internal class Options : OptionsBase {
|
||||||
public bool DecryptMethods { get; set; }
|
public bool DecryptMethods { get; set; }
|
||||||
public bool FixResources { get; set; }
|
public bool DecryptResources { get; set; }
|
||||||
public bool RemoveStackFrameHelper { get; set; }
|
public bool RemoveStackFrameHelper { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,8 +157,6 @@ namespace de4dot.deobfuscators.CliSecure {
|
||||||
base.deobfuscateBegin();
|
base.deobfuscateBegin();
|
||||||
|
|
||||||
addAttributeToBeRemoved(cliSecureAttribute, "Obfuscator attribute");
|
addAttributeToBeRemoved(cliSecureAttribute, "Obfuscator attribute");
|
||||||
addTypeToBeRemoved(stringDecrypter.Type, "Obfuscator string decrypter type");
|
|
||||||
findPossibleNamesToRemove(cliSecureRtType.LoadMethod);
|
|
||||||
|
|
||||||
resourceDecrypter = new ResourceDecrypter(module);
|
resourceDecrypter = new ResourceDecrypter(module);
|
||||||
resourceDecrypter.find();
|
resourceDecrypter.find();
|
||||||
|
@ -174,9 +172,12 @@ namespace de4dot.deobfuscators.CliSecure {
|
||||||
|
|
||||||
staticStringDecrypter.add(stringDecrypter.Method, (method, args) => stringDecrypter.decrypt((string)args[0]));
|
staticStringDecrypter.add(stringDecrypter.Method, (method, args) => stringDecrypter.decrypt((string)args[0]));
|
||||||
|
|
||||||
addCctorInitCallToBeRemoved(cliSecureRtType.InitializeMethod);
|
if (options.DecryptMethods) {
|
||||||
addCctorInitCallToBeRemoved(cliSecureRtType.PostInitializeMethod);
|
addCctorInitCallToBeRemoved(cliSecureRtType.InitializeMethod);
|
||||||
if (options.FixResources)
|
addCctorInitCallToBeRemoved(cliSecureRtType.PostInitializeMethod);
|
||||||
|
findPossibleNamesToRemove(cliSecureRtType.LoadMethod);
|
||||||
|
}
|
||||||
|
if (options.DecryptResources)
|
||||||
addCctorInitCallToBeRemoved(resourceDecrypter.RsrcRrrMethod);
|
addCctorInitCallToBeRemoved(resourceDecrypter.RsrcRrrMethod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -195,17 +196,22 @@ namespace de4dot.deobfuscators.CliSecure {
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void deobfuscateEnd() {
|
public override void deobfuscateEnd() {
|
||||||
if (options.FixResources)
|
if (options.DecryptResources)
|
||||||
decryptResources();
|
decryptResources();
|
||||||
removeProxyDelegates(proxyDelegateFinder);
|
removeProxyDelegates(proxyDelegateFinder);
|
||||||
if (options.RemoveStackFrameHelper) {
|
if (options.RemoveStackFrameHelper) {
|
||||||
if (stackFrameHelper.ExceptionLoggerRemover.NumRemovedExceptionLoggers > 0)
|
if (stackFrameHelper.ExceptionLoggerRemover.NumRemovedExceptionLoggers > 0)
|
||||||
addTypeToBeRemoved(stackFrameHelper.Type, "StackFrameHelper type");
|
addTypeToBeRemoved(stackFrameHelper.Type, "StackFrameHelper type");
|
||||||
}
|
}
|
||||||
if (Operations.DecryptStrings != OpDecryptString.None)
|
if (Operations.DecryptStrings != OpDecryptString.None) {
|
||||||
addTypeToBeRemoved(cliSecureRtType.Type, "Obfuscator type");
|
addTypeToBeRemoved(stringDecrypter.Type, "Obfuscator string decrypter type");
|
||||||
addResources("Obfuscator protection files");
|
if (options.DecryptMethods)
|
||||||
addModuleReferences("Obfuscator protection files");
|
addTypeToBeRemoved(cliSecureRtType.Type, "Obfuscator type");
|
||||||
|
}
|
||||||
|
if (options.DecryptMethods) {
|
||||||
|
addResources("Obfuscator protection files");
|
||||||
|
addModuleReferences("Obfuscator protection files");
|
||||||
|
}
|
||||||
|
|
||||||
base.deobfuscateEnd();
|
base.deobfuscateEnd();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user