Warn user if trying to rename an asm using XAML
This commit is contained in:
parent
b7eb39203a
commit
781ade32cd
|
@ -23,6 +23,7 @@ using System.Text.RegularExpressions;
|
||||||
using dnlib.DotNet;
|
using dnlib.DotNet;
|
||||||
using dnlib.DotNet.Emit;
|
using dnlib.DotNet.Emit;
|
||||||
using de4dot.code.renamer.asmmodules;
|
using de4dot.code.renamer.asmmodules;
|
||||||
|
using de4dot.code.resources;
|
||||||
using de4dot.blocks;
|
using de4dot.blocks;
|
||||||
|
|
||||||
namespace de4dot.code.renamer {
|
namespace de4dot.code.renamer {
|
||||||
|
@ -187,6 +188,8 @@ namespace de4dot.code.renamer {
|
||||||
public Renamer(IDeobfuscatorContext deobfuscatorContext, IEnumerable<IObfuscatedFile> files, RenamerFlags flags) {
|
public Renamer(IDeobfuscatorContext deobfuscatorContext, IEnumerable<IObfuscatedFile> files, RenamerFlags flags) {
|
||||||
RenamerFlags = flags;
|
RenamerFlags = flags;
|
||||||
|
|
||||||
|
WarnIfXaml(files);
|
||||||
|
|
||||||
modules = new Modules(deobfuscatorContext);
|
modules = new Modules(deobfuscatorContext);
|
||||||
isDelegateClass = new DerivedFrom(delegateClasses);
|
isDelegateClass = new DerivedFrom(delegateClasses);
|
||||||
mergeStateHelper = new MergeStateHelper(memberInfos);
|
mergeStateHelper = new MergeStateHelper(memberInfos);
|
||||||
|
@ -195,6 +198,39 @@ namespace de4dot.code.renamer {
|
||||||
modules.Add(new Module(file));
|
modules.Add(new Module(file));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void WarnIfXaml(IEnumerable<IObfuscatedFile> files) {
|
||||||
|
foreach (var file in files) {
|
||||||
|
foreach (var tmp in file.ModuleDefMD.Resources) {
|
||||||
|
var rsrc = tmp as EmbeddedResource;
|
||||||
|
if (rsrc == null)
|
||||||
|
continue;
|
||||||
|
if (UTF8String.IsNullOrEmpty(rsrc.Name))
|
||||||
|
continue;
|
||||||
|
if (!rsrc.Name.String.EndsWith(".g.resources"))
|
||||||
|
continue;
|
||||||
|
if (!HasXamlFiles(file.ModuleDefMD, rsrc))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
Logger.w("File '{0}' contains XAML which isn't supported. Use --dont-rename.", file.Filename);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool HasXamlFiles(ModuleDef module, EmbeddedResource rsrc) {
|
||||||
|
try {
|
||||||
|
rsrc.Data.Position = 0;
|
||||||
|
var rsrcSet = ResourceReader.Read(module, rsrc.Data);
|
||||||
|
foreach (var elem in rsrcSet.ResourceElements) {
|
||||||
|
if (elem.Name.EndsWith(".baml"))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public void Rename() {
|
public void Rename() {
|
||||||
if (modules.Empty)
|
if (modules.Empty)
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user