Fix problems found while testing
This commit is contained in:
parent
b27e1b36af
commit
44fea8f185
|
@ -32,6 +32,7 @@ namespace de4dot.code {
|
||||||
INameChecker NameChecker { get; }
|
INameChecker NameChecker { get; }
|
||||||
bool RenameResourcesInCode { get; }
|
bool RenameResourcesInCode { get; }
|
||||||
bool RemoveNamespaceWithOneType { get; }
|
bool RemoveNamespaceWithOneType { get; }
|
||||||
|
bool RenameResourceKeys { get; }
|
||||||
|
|
||||||
void deobfuscateBegin();
|
void deobfuscateBegin();
|
||||||
void deobfuscate();
|
void deobfuscate();
|
||||||
|
|
|
@ -95,7 +95,7 @@ namespace de4dot.code.renamer {
|
||||||
|
|
||||||
void renameResourceKeys() {
|
void renameResourceKeys() {
|
||||||
foreach (var module in modules.TheModules) {
|
foreach (var module in modules.TheModules) {
|
||||||
if (!module.ObfuscatedFile.RenameResourcesInCode)
|
if (!module.ObfuscatedFile.RenameResourceKeys)
|
||||||
continue;
|
continue;
|
||||||
new ResourceKeysRenamer(module.ModuleDefinition, module.ObfuscatedFile.NameChecker).rename();
|
new ResourceKeysRenamer(module.ModuleDefinition, module.ObfuscatedFile.NameChecker).rename();
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,15 +40,15 @@ namespace de4dot.code.renamer {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void rename() {
|
public void rename() {
|
||||||
Log.v("Renaming resource keys...");
|
Log.v("Renaming resource keys ({0})", module);
|
||||||
Log.indent();
|
Log.indent();
|
||||||
foreach (var type in module.GetTypes()) {
|
foreach (var type in module.GetTypes()) {
|
||||||
string resourceName = getResourceName(type);
|
string resourceName = getResourceName(type);
|
||||||
if (resourceName == null)
|
if (resourceName == null)
|
||||||
continue;
|
continue;
|
||||||
var resource = DotNetUtils.getResource(module, resourceName) as EmbeddedResource;
|
var resource = getResource(resourceName);
|
||||||
if (resource == null) {
|
if (resource == null) {
|
||||||
Log.w("Could not find resource {0}", Utils.removeNewlines(resource));
|
Log.w("Could not find resource {0}", Utils.removeNewlines(resourceName));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Log.v("Resource: {0}", Utils.toCsharpString(resource.Name));
|
Log.v("Resource: {0}", Utils.toCsharpString(resource.Name));
|
||||||
|
@ -59,6 +59,23 @@ namespace de4dot.code.renamer {
|
||||||
Log.deIndent();
|
Log.deIndent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EmbeddedResource getResource(string resourceName) {
|
||||||
|
var resource = DotNetUtils.getResource(module, resourceName + ".resources") as EmbeddedResource;
|
||||||
|
if (resource != null)
|
||||||
|
return resource;
|
||||||
|
|
||||||
|
string name = "";
|
||||||
|
var pieces = resourceName.Split('.');
|
||||||
|
Array.Reverse(pieces);
|
||||||
|
foreach (var piece in pieces) {
|
||||||
|
name = piece + name;
|
||||||
|
resource = DotNetUtils.getResource(module, name + ".resources") as EmbeddedResource;
|
||||||
|
if (resource != null)
|
||||||
|
return resource;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
static string getResourceName(TypeDefinition type) {
|
static string getResourceName(TypeDefinition type) {
|
||||||
foreach (var method in type.Methods) {
|
foreach (var method in type.Methods) {
|
||||||
if (method.Body == null)
|
if (method.Body == null)
|
||||||
|
@ -81,7 +98,7 @@ namespace de4dot.code.renamer {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
return resourceName + ".resources";
|
return resourceName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -174,10 +191,8 @@ namespace de4dot.code.renamer {
|
||||||
}
|
}
|
||||||
|
|
||||||
RenameInfo info;
|
RenameInfo info;
|
||||||
if (!nameToInfo.TryGetValue(name, out info)) {
|
if (!nameToInfo.TryGetValue(name, out info))
|
||||||
Log.w("Could not find resource key '{0}'", Utils.removeNewlines(name));
|
continue; // should not be renamed
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
ldstr.Operand = info.newName;
|
ldstr.Operand = info.newName;
|
||||||
Log.v("Renamed resource key {0} => {1}", Utils.toCsharpString(info.element.Name), Utils.toCsharpString(info.newName));
|
Log.v("Renamed resource key {0} => {1}", Utils.toCsharpString(info.element.Name), Utils.toCsharpString(info.newName));
|
||||||
|
@ -196,7 +211,7 @@ namespace de4dot.code.renamer {
|
||||||
if (elem.ResourceData.Code != ResourceTypeCode.String)
|
if (elem.ResourceData.Code != ResourceTypeCode.String)
|
||||||
return createDefaultName();
|
return createDefaultName();
|
||||||
var stringData = (BuiltInResourceData)elem.ResourceData;
|
var stringData = (BuiltInResourceData)elem.ResourceData;
|
||||||
return createName(createPrefixFromStringData((string)stringData.Data), false);
|
return createPrefixFromStringData((string)stringData.Data);
|
||||||
}
|
}
|
||||||
|
|
||||||
string createPrefixFromStringData(string data) {
|
string createPrefixFromStringData(string data) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user