Use the correct file extension when saving the main module

This commit is contained in:
de4dot 2012-08-09 14:14:15 +02:00
parent 291040abfe
commit 95b6041788
2 changed files with 7 additions and 5 deletions

View File

@ -286,7 +286,7 @@ namespace de4dot.code.deobfuscators.Confuser {
if (unpacker != null && unpacker.Detected) {
if (options.DecryptMainAsm) {
decryptState |= DecryptState.CanDecryptMethods | DecryptState.CanUnpack;
var mainInfo = unpacker.unpackMainAssembly();
var mainInfo = unpacker.unpackMainAssembly(true);
newFileData = mainInfo.data;
realAssemblyInfo = mainInfo.realAssemblyInfo;
embeddedAssemblyInfos.AddRange(unpacker.getEmbeddedAssemblyInfos());
@ -296,7 +296,7 @@ namespace de4dot.code.deobfuscators.Confuser {
}
else {
decryptState &= ~DecryptState.CanUnpack;
mainAsmInfo = unpacker.unpackMainAssembly();
mainAsmInfo = unpacker.unpackMainAssembly(false);
embeddedAssemblyInfos.AddRange(unpacker.getEmbeddedAssemblyInfos());
return false;
}
@ -395,7 +395,9 @@ namespace de4dot.code.deobfuscators.Confuser {
void dumpEmbeddedAssemblies() {
if (mainAsmInfo != null) {
DeobfuscatedFile.createAssemblyFile(mainAsmInfo.data, mainAsmInfo.asmSimpleName + "_real", mainAsmInfo.extension);
var asm = module.Assembly;
var name = asm == null ? module.Name : asm.Name.Name;
DeobfuscatedFile.createAssemblyFile(mainAsmInfo.data, name + "_real", mainAsmInfo.extension);
addResourceToBeRemoved(mainAsmInfo.resource, string.Format("Embedded assembly: {0}", mainAsmInfo.asmFullName));
}
foreach (var info in embeddedAssemblyInfos) {

View File

@ -397,13 +397,13 @@ namespace de4dot.code.deobfuscators.Confuser {
return null;
}
public EmbeddedAssemblyInfo unpackMainAssembly() {
public EmbeddedAssemblyInfo unpackMainAssembly(bool createAssembly) {
if (mainAsmResource == null)
return null;
var info = createEmbeddedAssemblyInfo(mainAsmResource, decrypt(mainAsmResource));
var asm = module.Assembly;
if (asm != null && entryPointToken != 0 && info.kind == ModuleKind.NetModule) {
if (createAssembly && asm != null && entryPointToken != 0 && info.kind == ModuleKind.NetModule) {
info.extension = DeobUtils.getExtension(module.Kind);
info.kind = module.Kind;