Updated resource renaming of code strings
This commit is contained in:
parent
c257f16787
commit
cd0e5c0169
|
@ -92,6 +92,15 @@ namespace de4dot.renamer {
|
||||||
|
|
||||||
public void renameResources() {
|
public void renameResources() {
|
||||||
var renamedTypes = new List<Renamed>(getRenamedTypeNames());
|
var renamedTypes = new List<Renamed>(getRenamedTypeNames());
|
||||||
|
|
||||||
|
// Rename the longest names first. Otherwise eg. b.g.resources could be renamed
|
||||||
|
// Class0.g.resources instead of Class1.resources when b.g was renamed Class1.
|
||||||
|
renamedTypes.Sort((a, b) => {
|
||||||
|
if (a.OldName.Length > b.OldName.Length) return -1;
|
||||||
|
if (a.OldName.Length < b.OldName.Length) return 1;
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
|
||||||
renameResourceNamesInCode(renamedTypes);
|
renameResourceNamesInCode(renamedTypes);
|
||||||
renameResources(renamedTypes);
|
renameResources(renamedTypes);
|
||||||
}
|
}
|
||||||
|
@ -102,6 +111,15 @@ namespace de4dot.renamer {
|
||||||
foreach (var renamed in renamedTypes)
|
foreach (var renamed in renamedTypes)
|
||||||
oldToNewTypeName[renamed.OldName] = renamed.NewName;
|
oldToNewTypeName[renamed.OldName] = renamed.NewName;
|
||||||
|
|
||||||
|
List<string> validResourceNames = new List<string>();
|
||||||
|
if (ModuleDefinition.Resources != null) {
|
||||||
|
foreach (var resource in ModuleDefinition.Resources) {
|
||||||
|
var name = resource.Name;
|
||||||
|
if (name.EndsWith(".resources", StringComparison.Ordinal))
|
||||||
|
validResourceNames.Add(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
foreach (var method in allMethods) {
|
foreach (var method in allMethods) {
|
||||||
if (!method.HasBody)
|
if (!method.HasBody)
|
||||||
continue;
|
continue;
|
||||||
|
@ -111,14 +129,18 @@ namespace de4dot.renamer {
|
||||||
var s = (string)instr.Operand;
|
var s = (string)instr.Operand;
|
||||||
|
|
||||||
string newName = null;
|
string newName = null;
|
||||||
if (oldToNewTypeName.ContainsKey(s))
|
string oldName = null;
|
||||||
|
if (oldToNewTypeName.ContainsKey(s)) {
|
||||||
|
oldName = s;
|
||||||
newName = oldToNewTypeName[s];
|
newName = oldToNewTypeName[s];
|
||||||
|
}
|
||||||
else if (s.EndsWith(".resources", StringComparison.Ordinal)) {
|
else if (s.EndsWith(".resources", StringComparison.Ordinal)) {
|
||||||
// This should rarely, if ever, execute...
|
// This should rarely, if ever, execute...
|
||||||
foreach (var renamed in renamedTypes) { // Slow loop
|
foreach (var renamed in renamedTypes) { // Slow loop
|
||||||
var newName2 = renameResourceString(s, renamed.OldName, renamed.NewName);
|
var newName2 = renameResourceString(s, renamed.OldName, renamed.NewName);
|
||||||
if (newName2 != s) {
|
if (newName2 != s) {
|
||||||
newName = newName2;
|
newName = newName2;
|
||||||
|
oldName = renamed.OldName;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -126,6 +148,16 @@ namespace de4dot.renamer {
|
||||||
if (newName == null)
|
if (newName == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
bool isValid = false;
|
||||||
|
foreach (var validName in validResourceNames) {
|
||||||
|
if (validName.StartsWith(oldName, StringComparison.Ordinal)) {
|
||||||
|
isValid = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isValid)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (s == "" || !obfuscatedFile.RenameResourcesInCode)
|
if (s == "" || !obfuscatedFile.RenameResourcesInCode)
|
||||||
Log.v("Possible resource name in code: '{0}' => '{1}' in method {2}", s, newName, method);
|
Log.v("Possible resource name in code: '{0}' => '{1}' in method {2}", s, newName, method);
|
||||||
else {
|
else {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user