diff --git a/de4dot-x64/Program.cs b/de4dot-x64/Program.cs
index 76a18e11..c38e80f9 100644
--- a/de4dot-x64/Program.cs
+++ b/de4dot-x64/Program.cs
@@ -20,7 +20,7 @@
namespace de4dot_x64 {
class Program {
static int Main(string[] args) {
- return de4dot.Program.main(de4dot.StartUpArch.x64, args);
+ return de4dot.cui.Program.main(args);
}
}
}
diff --git a/de4dot-x64/de4dot-x64.csproj b/de4dot-x64/de4dot-x64.csproj
index 7ccb1b78..9b8eaba9 100644
--- a/de4dot-x64/de4dot-x64.csproj
+++ b/de4dot-x64/de4dot-x64.csproj
@@ -46,9 +46,9 @@
-
- {4D10B9EB-3BF1-4D61-A389-CB019E8C9622}
- d4d.code
+
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}
+ de4dot.cui
diff --git a/de4dot.code/AssemblyClient/AssemblyClient.cs b/de4dot.code/AssemblyClient/AssemblyClient.cs
index 81386777..cb9022ca 100644
--- a/de4dot.code/AssemblyClient/AssemblyClient.cs
+++ b/de4dot.code/AssemblyClient/AssemblyClient.cs
@@ -23,7 +23,7 @@ using System.Runtime.Serialization;
using System.Threading;
using AssemblyData;
-namespace de4dot.AssemblyClient {
+namespace de4dot.code.AssemblyClient {
sealed class AssemblyClient : IAssemblyClient {
const int WAIT_TIME_BEFORE_CONNECTING = 1000;
const int MAX_CONNECT_WAIT_TIME_MS = 2000;
diff --git a/de4dot.code/AssemblyClient/AssemblyClientFactory.cs b/de4dot.code/AssemblyClient/AssemblyClientFactory.cs
index 3804d33d..decfd2e0 100644
--- a/de4dot.code/AssemblyClient/AssemblyClientFactory.cs
+++ b/de4dot.code/AssemblyClient/AssemblyClientFactory.cs
@@ -17,24 +17,24 @@
along with de4dot. If not, see .
*/
-namespace de4dot.AssemblyClient {
- interface IAssemblyClientFactory {
+namespace de4dot.code.AssemblyClient {
+ public interface IAssemblyClientFactory {
IAssemblyClient create();
}
- class SameAppDomainAssemblyClientFactory : IAssemblyClientFactory {
+ public class SameAppDomainAssemblyClientFactory : IAssemblyClientFactory {
public IAssemblyClient create() {
return new AssemblyClient(new SameAppDomainAssemblyServerLoader());
}
}
- class NewAppDomainAssemblyClientFactory : IAssemblyClientFactory {
+ public class NewAppDomainAssemblyClientFactory : IAssemblyClientFactory {
public IAssemblyClient create() {
return new AssemblyClient(new NewAppDomainAssemblyServerLoader());
}
}
- class NewProcessAssemblyClientFactory : IAssemblyClientFactory {
+ public class NewProcessAssemblyClientFactory : IAssemblyClientFactory {
public IAssemblyClient create() {
return new AssemblyClient(new NewProcessAssemblyServerLoader());
}
diff --git a/de4dot.code/AssemblyClient/IAssemblyClient.cs b/de4dot.code/AssemblyClient/IAssemblyClient.cs
index c2c8f86a..3b378e87 100644
--- a/de4dot.code/AssemblyClient/IAssemblyClient.cs
+++ b/de4dot.code/AssemblyClient/IAssemblyClient.cs
@@ -20,8 +20,8 @@
using System;
using AssemblyData;
-namespace de4dot.AssemblyClient {
- interface IAssemblyClient : IDisposable {
+namespace de4dot.code.AssemblyClient {
+ public interface IAssemblyClient : IDisposable {
IAssemblyService Service { get; }
void connect();
void waitConnected();
diff --git a/de4dot.code/AssemblyClient/IAssemblyServerLoader.cs b/de4dot.code/AssemblyClient/IAssemblyServerLoader.cs
index adce1f6c..7ad3f28c 100644
--- a/de4dot.code/AssemblyClient/IAssemblyServerLoader.cs
+++ b/de4dot.code/AssemblyClient/IAssemblyServerLoader.cs
@@ -20,7 +20,7 @@
using System;
using AssemblyData;
-namespace de4dot.AssemblyClient {
+namespace de4dot.code.AssemblyClient {
interface IAssemblyServerLoader : IDisposable {
void loadServer();
IAssemblyService createService();
diff --git a/de4dot.code/AssemblyClient/IpcAssemblyServerLoader.cs b/de4dot.code/AssemblyClient/IpcAssemblyServerLoader.cs
index e987cf33..2146210f 100644
--- a/de4dot.code/AssemblyClient/IpcAssemblyServerLoader.cs
+++ b/de4dot.code/AssemblyClient/IpcAssemblyServerLoader.cs
@@ -20,7 +20,7 @@
using System;
using AssemblyData;
-namespace de4dot.AssemblyClient {
+namespace de4dot.code.AssemblyClient {
abstract class IpcAssemblyServerLoader : IAssemblyServerLoader {
const string ASSEMBLY_SERVER_FILENAME_X86 = "AssemblyServer.exe";
const string ASSEMBLY_SERVER_FILENAME_X64 = "AssemblyServer-x64.exe";
@@ -30,12 +30,16 @@ namespace de4dot.AssemblyClient {
string url;
protected IpcAssemblyServerLoader() {
- assemblyServerFilename = Utils.getArchString(ASSEMBLY_SERVER_FILENAME_X86, ASSEMBLY_SERVER_FILENAME_X64);
+ assemblyServerFilename = getServerName();
ipcName = Utils.randomName(15, 20);
ipcUri = Utils.randomName(15, 20);
url = string.Format("ipc://{0}/{1}", ipcName, ipcUri);
}
+ static string getServerName() {
+ return IntPtr.Size == 4 ? ASSEMBLY_SERVER_FILENAME_X86 : ASSEMBLY_SERVER_FILENAME_X64;
+ }
+
public void loadServer() {
loadServer(Utils.getPathOfOurFile(assemblyServerFilename));
}
diff --git a/de4dot.code/AssemblyClient/NewAppDomainAssemblyServerLoader.cs b/de4dot.code/AssemblyClient/NewAppDomainAssemblyServerLoader.cs
index 7c29ace4..b9c83d03 100644
--- a/de4dot.code/AssemblyClient/NewAppDomainAssemblyServerLoader.cs
+++ b/de4dot.code/AssemblyClient/NewAppDomainAssemblyServerLoader.cs
@@ -20,7 +20,7 @@
using System;
using System.Threading;
-namespace de4dot.AssemblyClient {
+namespace de4dot.code.AssemblyClient {
// Starts the server in a new app domain.
sealed class NewAppDomainAssemblyServerLoader : IpcAssemblyServerLoader {
AppDomain appDomain;
diff --git a/de4dot.code/AssemblyClient/NewProcessAssemblyServerLoader.cs b/de4dot.code/AssemblyClient/NewProcessAssemblyServerLoader.cs
index 338ea4dc..d5c51411 100644
--- a/de4dot.code/AssemblyClient/NewProcessAssemblyServerLoader.cs
+++ b/de4dot.code/AssemblyClient/NewProcessAssemblyServerLoader.cs
@@ -20,7 +20,7 @@
using System;
using System.Diagnostics;
-namespace de4dot.AssemblyClient {
+namespace de4dot.code.AssemblyClient {
// Starts the server in a new process
class NewProcessAssemblyServerLoader : IpcAssemblyServerLoader {
Process process;
diff --git a/de4dot.code/AssemblyClient/SameAppDomainAssemblyServerLoader.cs b/de4dot.code/AssemblyClient/SameAppDomainAssemblyServerLoader.cs
index 572c8594..9fb13936 100644
--- a/de4dot.code/AssemblyClient/SameAppDomainAssemblyServerLoader.cs
+++ b/de4dot.code/AssemblyClient/SameAppDomainAssemblyServerLoader.cs
@@ -20,7 +20,7 @@
using System;
using AssemblyData;
-namespace de4dot.AssemblyClient {
+namespace de4dot.code.AssemblyClient {
// Starts the server in the current app domain.
class SameAppDomainAssemblyServerLoader : IAssemblyServerLoader {
IAssemblyService service;
diff --git a/de4dot.code/AssemblyModule.cs b/de4dot.code/AssemblyModule.cs
index a52bda58..6a781f2d 100644
--- a/de4dot.code/AssemblyModule.cs
+++ b/de4dot.code/AssemblyModule.cs
@@ -24,7 +24,7 @@ using Mono.Cecil;
using Mono.MyStuff;
using de4dot.blocks;
-namespace de4dot {
+namespace de4dot.code {
class AssemblyModule {
string filename;
ModuleDefinition module;
diff --git a/de4dot.code/AssemblyResolver.cs b/de4dot.code/AssemblyResolver.cs
index faf434a8..68816726 100644
--- a/de4dot.code/AssemblyResolver.cs
+++ b/de4dot.code/AssemblyResolver.cs
@@ -23,8 +23,8 @@ using System.IO;
using System.Text.RegularExpressions;
using Mono.Cecil;
-namespace de4dot {
- class AssemblyResolver : DefaultAssemblyResolver {
+namespace de4dot.code {
+ public class AssemblyResolver : DefaultAssemblyResolver {
public static readonly AssemblyResolver Instance = new AssemblyResolver();
Dictionary addedAssemblies = new Dictionary(StringComparer.Ordinal);
Dictionary addedDirectories = new Dictionary(StringComparer.OrdinalIgnoreCase);
diff --git a/de4dot.code/IObfuscatedFile.cs b/de4dot.code/IObfuscatedFile.cs
index ace8befe..9a920580 100644
--- a/de4dot.code/IObfuscatedFile.cs
+++ b/de4dot.code/IObfuscatedFile.cs
@@ -18,12 +18,12 @@
*/
using System.Collections.Generic;
-using de4dot.deobfuscators;
+using de4dot.code.deobfuscators;
using Mono.Cecil;
-using de4dot.renamer;
+using de4dot.code.renamer;
-namespace de4dot {
- interface IObfuscatedFile {
+namespace de4dot.code {
+ public interface IObfuscatedFile {
ModuleDefinition ModuleDefinition { get; }
IDeobfuscator Deobfuscator { get; }
string Filename { get; }
diff --git a/de4dot.code/Log.cs b/de4dot.code/Log.cs
index ab428a8f..167630cf 100644
--- a/de4dot.code/Log.cs
+++ b/de4dot.code/Log.cs
@@ -20,8 +20,8 @@
using System;
using System.Collections.Generic;
-namespace de4dot {
- static class Log {
+namespace de4dot.code {
+ public static class Log {
public static int indentLevel = 0;
const int indentSize = 2;
diff --git a/de4dot.code/MethodReturnValueInliner.cs b/de4dot.code/MethodReturnValueInliner.cs
index 9c759356..5b4eeaba 100644
--- a/de4dot.code/MethodReturnValueInliner.cs
+++ b/de4dot.code/MethodReturnValueInliner.cs
@@ -23,7 +23,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot {
+namespace de4dot.code {
// A simple class that statically detects the values of some local variables
class VariableValues {
IList allBlocks;
diff --git a/de4dot.code/NameRegexes.cs b/de4dot.code/NameRegexes.cs
index a40a875d..e4c63088 100644
--- a/de4dot.code/NameRegexes.cs
+++ b/de4dot.code/NameRegexes.cs
@@ -20,8 +20,8 @@
using System.Collections.Generic;
using System.Text.RegularExpressions;
-namespace de4dot {
- class NameRegex {
+namespace de4dot.code {
+ public class NameRegex {
Regex regex;
public const char invertChar = '!';
@@ -50,7 +50,7 @@ namespace de4dot {
}
}
- class NameRegexes {
+ public class NameRegexes {
IList regexes;
public bool DefaultValue { get; set; }
public const char regexSeparatorChar = '&';
diff --git a/de4dot.code/ObfuscatedFile.cs b/de4dot.code/ObfuscatedFile.cs
index d99df3b0..0d7e5fab 100644
--- a/de4dot.code/ObfuscatedFile.cs
+++ b/de4dot.code/ObfuscatedFile.cs
@@ -25,15 +25,15 @@ using System.Text;
using Mono.Cecil;
using Mono.Cecil.Cil;
using Mono.MyStuff;
-using de4dot.deobfuscators;
+using de4dot.code.deobfuscators;
using de4dot.blocks;
using de4dot.blocks.cflow;
-using de4dot.AssemblyClient;
-using de4dot.renamer;
-using de4dot.PE;
+using de4dot.code.AssemblyClient;
+using de4dot.code.renamer;
+using de4dot.code.PE;
-namespace de4dot {
- class ObfuscatedFile : IObfuscatedFile, IDeobfuscatedFile {
+namespace de4dot.code {
+ public class ObfuscatedFile : IObfuscatedFile, IDeobfuscatedFile {
Options options;
ModuleDefinition module;
IList allMethods;
diff --git a/de4dot.code/Option.cs b/de4dot.code/Option.cs
index 6ccd2a64..eccbf476 100644
--- a/de4dot.code/Option.cs
+++ b/de4dot.code/Option.cs
@@ -21,8 +21,8 @@ using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
-namespace de4dot {
- abstract class Option {
+namespace de4dot.code {
+ public abstract class Option {
const string SHORTNAME_PREFIX = "-";
const string LONGNAME_PREFIX = "--";
@@ -68,7 +68,7 @@ namespace de4dot {
}
}
- class BoolOption : Option {
+ public class BoolOption : Option {
bool val;
public BoolOption(string shortName, string longName, string description, bool val)
: base(shortName, longName, description) {
@@ -96,7 +96,7 @@ namespace de4dot {
}
}
- class IntOption : Option {
+ public class IntOption : Option {
int val;
public IntOption(string shortName, string longName, string description, int val)
: base(shortName, longName, description) {
@@ -123,7 +123,7 @@ namespace de4dot {
}
}
- class StringOption : Option {
+ public class StringOption : Option {
string val;
public override string ArgumentValueName {
@@ -146,7 +146,7 @@ namespace de4dot {
}
}
- class NameRegexOption : Option {
+ public class NameRegexOption : Option {
NameRegexes val;
public override string ArgumentValueName {
@@ -177,7 +177,7 @@ namespace de4dot {
}
}
- class RegexOption : Option {
+ public class RegexOption : Option {
Regex val;
public override string ArgumentValueName {
@@ -206,7 +206,7 @@ namespace de4dot {
}
}
- class NoArgOption : Option {
+ public class NoArgOption : Option {
Action action;
bool triggered;
@@ -232,7 +232,7 @@ namespace de4dot {
}
}
- class OneArgOption : Option {
+ public class OneArgOption : Option {
Action action;
string typeName;
diff --git a/de4dot.code/PE/Cor20Header.cs b/de4dot.code/PE/Cor20Header.cs
index b59b62eb..8e1d4084 100644
--- a/de4dot.code/PE/Cor20Header.cs
+++ b/de4dot.code/PE/Cor20Header.cs
@@ -19,7 +19,7 @@
using System.IO;
-namespace de4dot.PE {
+namespace de4dot.code.PE {
class Cor20Header : IFileLocation {
public uint cb;
public ushort majorRuntimeVersion;
diff --git a/de4dot.code/PE/DataDirectory.cs b/de4dot.code/PE/DataDirectory.cs
index 9dfe6a49..2600b177 100644
--- a/de4dot.code/PE/DataDirectory.cs
+++ b/de4dot.code/PE/DataDirectory.cs
@@ -19,7 +19,7 @@
using System.IO;
-namespace de4dot.PE {
+namespace de4dot.code.PE {
struct DataDirectory {
public uint virtualAddress;
public uint size;
diff --git a/de4dot.code/PE/DotNetStream.cs b/de4dot.code/PE/DotNetStream.cs
index 18c5e23d..cb3fc39e 100644
--- a/de4dot.code/PE/DotNetStream.cs
+++ b/de4dot.code/PE/DotNetStream.cs
@@ -19,7 +19,7 @@
using System.IO;
-namespace de4dot.PE {
+namespace de4dot.code.PE {
class DotNetStream : IFileLocation {
public string name;
public uint fileOffset;
diff --git a/de4dot.code/PE/FileHeader.cs b/de4dot.code/PE/FileHeader.cs
index 8bff853c..95f41bd6 100644
--- a/de4dot.code/PE/FileHeader.cs
+++ b/de4dot.code/PE/FileHeader.cs
@@ -19,7 +19,7 @@
using System.IO;
-namespace de4dot.PE {
+namespace de4dot.code.PE {
enum Machine : ushort {
i386 = 0x14C,
ia64 = 0x200,
diff --git a/de4dot.code/PE/IFileLocation.cs b/de4dot.code/PE/IFileLocation.cs
index a69f422d..7edaf878 100644
--- a/de4dot.code/PE/IFileLocation.cs
+++ b/de4dot.code/PE/IFileLocation.cs
@@ -17,7 +17,7 @@
along with de4dot. If not, see .
*/
-namespace de4dot.PE {
+namespace de4dot.code.PE {
interface IFileLocation {
uint Offset { get; }
uint Length { get; }
diff --git a/de4dot.code/PE/Metadata.cs b/de4dot.code/PE/Metadata.cs
index a985ea7a..7c99fda3 100644
--- a/de4dot.code/PE/Metadata.cs
+++ b/de4dot.code/PE/Metadata.cs
@@ -21,7 +21,7 @@ using System;
using System.IO;
using System.Text;
-namespace de4dot.PE {
+namespace de4dot.code.PE {
class Metadata : IFileLocation {
uint magic;
ushort majorVersion, minorVersion;
diff --git a/de4dot.code/PE/MetadataTables.cs b/de4dot.code/PE/MetadataTables.cs
index 8a5f0ee4..6dae31c2 100644
--- a/de4dot.code/PE/MetadataTables.cs
+++ b/de4dot.code/PE/MetadataTables.cs
@@ -20,7 +20,7 @@
using System;
using System.IO;
-namespace de4dot.PE {
+namespace de4dot.code.PE {
using MVT = MetadataVarType;
class MetadataTables {
diff --git a/de4dot.code/PE/MetadataType.cs b/de4dot.code/PE/MetadataType.cs
index 3e57a278..d242dd54 100644
--- a/de4dot.code/PE/MetadataType.cs
+++ b/de4dot.code/PE/MetadataType.cs
@@ -19,7 +19,7 @@
using System.Collections.Generic;
-namespace de4dot.PE {
+namespace de4dot.code.PE {
enum MetadataIndex {
iModule = 0,
iTypeRef = 1,
diff --git a/de4dot.code/PE/MetadataTypeBuilder.cs b/de4dot.code/PE/MetadataTypeBuilder.cs
index c6c42948..3ef0f778 100644
--- a/de4dot.code/PE/MetadataTypeBuilder.cs
+++ b/de4dot.code/PE/MetadataTypeBuilder.cs
@@ -20,7 +20,7 @@
using System;
using System.Collections.Generic;
-namespace de4dot.PE {
+namespace de4dot.code.PE {
enum MetadataVarType {
end,
stop,
diff --git a/de4dot.code/PE/OptionalHeader.cs b/de4dot.code/PE/OptionalHeader.cs
index 91dbf3ce..f7929fb0 100644
--- a/de4dot.code/PE/OptionalHeader.cs
+++ b/de4dot.code/PE/OptionalHeader.cs
@@ -19,7 +19,7 @@
using System.IO;
-namespace de4dot.PE {
+namespace de4dot.code.PE {
class OptionalHeader : IFileLocation {
public ushort magic;
public byte majorLinkerVersion;
diff --git a/de4dot.code/PE/PeImage.cs b/de4dot.code/PE/PeImage.cs
index ad683b6c..959c32cf 100644
--- a/de4dot.code/PE/PeImage.cs
+++ b/de4dot.code/PE/PeImage.cs
@@ -20,8 +20,8 @@
using System;
using System.IO;
-namespace de4dot.PE {
- class PeImage {
+namespace de4dot.code.PE {
+ public class PeImage {
BinaryReader reader;
BinaryWriter writer;
FileHeader fileHeader;
@@ -35,11 +35,11 @@ namespace de4dot.PE {
get { return reader; }
}
- public Cor20Header Cor20Header {
+ internal Cor20Header Cor20Header {
get { return cor20Header; }
}
- public Resources Resources {
+ internal Resources Resources {
get { return resources; }
}
diff --git a/de4dot.code/PE/ResourceData.cs b/de4dot.code/PE/ResourceData.cs
index e4d2ad6b..5e6a5ece 100644
--- a/de4dot.code/PE/ResourceData.cs
+++ b/de4dot.code/PE/ResourceData.cs
@@ -17,7 +17,7 @@
along with de4dot. If not, see .
*/
-namespace de4dot.PE {
+namespace de4dot.code.PE {
class ResourceData : ResourceDirectoryEntry {
uint rva;
uint size;
diff --git a/de4dot.code/PE/ResourceDirectory.cs b/de4dot.code/PE/ResourceDirectory.cs
index 4edc6d9d..fef65c99 100644
--- a/de4dot.code/PE/ResourceDirectory.cs
+++ b/de4dot.code/PE/ResourceDirectory.cs
@@ -19,7 +19,7 @@
using System.Collections.Generic;
-namespace de4dot.PE {
+namespace de4dot.code.PE {
class ResourceDirectory : ResourceDirectoryEntry {
Resources resources;
int offset;
diff --git a/de4dot.code/PE/ResourceDirectoryEntry.cs b/de4dot.code/PE/ResourceDirectoryEntry.cs
index e1fa224e..a08cc66b 100644
--- a/de4dot.code/PE/ResourceDirectoryEntry.cs
+++ b/de4dot.code/PE/ResourceDirectoryEntry.cs
@@ -19,7 +19,7 @@
using System.Collections.Generic;
-namespace de4dot.PE {
+namespace de4dot.code.PE {
abstract class ResourceDirectoryEntry {
protected readonly string name;
protected readonly int id;
diff --git a/de4dot.code/PE/Resources.cs b/de4dot.code/PE/Resources.cs
index df70b568..9c402fbd 100644
--- a/de4dot.code/PE/Resources.cs
+++ b/de4dot.code/PE/Resources.cs
@@ -20,7 +20,7 @@
using System.IO;
using System.Text;
-namespace de4dot.PE {
+namespace de4dot.code.PE {
class Resources {
BinaryReader reader;
uint startOffset;
diff --git a/de4dot.code/PE/SectionHeader.cs b/de4dot.code/PE/SectionHeader.cs
index 052df9d8..37e4d0bb 100644
--- a/de4dot.code/PE/SectionHeader.cs
+++ b/de4dot.code/PE/SectionHeader.cs
@@ -20,7 +20,7 @@
using System.IO;
using System.Text;
-namespace de4dot.PE {
+namespace de4dot.code.PE {
class SectionHeader : IFileLocation {
public byte[] name;
public uint virtualSize;
diff --git a/de4dot.code/StringDecrypter.cs b/de4dot.code/StringDecrypter.cs
index 16b614d6..a8707b76 100644
--- a/de4dot.code/StringDecrypter.cs
+++ b/de4dot.code/StringDecrypter.cs
@@ -21,10 +21,10 @@ using System;
using System.Collections.Generic;
using Mono.Cecil;
using Mono.Cecil.Cil;
-using de4dot.AssemblyClient;
+using de4dot.code.AssemblyClient;
using de4dot.blocks;
-namespace de4dot {
+namespace de4dot.code {
abstract class StringDecrypter : MethodReturnValueInliner {
protected override void inlineReturnValues(IList callResults) {
foreach (var callResult in callResults) {
diff --git a/de4dot.code/UserException.cs b/de4dot.code/UserException.cs
index ef963020..3a141724 100644
--- a/de4dot.code/UserException.cs
+++ b/de4dot.code/UserException.cs
@@ -19,8 +19,8 @@
using System;
-namespace de4dot {
- class UserException : Exception {
+namespace de4dot.code {
+ public class UserException : Exception {
public UserException(string message)
: base(message) {
}
diff --git a/de4dot.code/Utils.cs b/de4dot.code/Utils.cs
index 3fa1d471..e9034c7a 100644
--- a/de4dot.code/Utils.cs
+++ b/de4dot.code/Utils.cs
@@ -22,21 +22,16 @@ using System.Collections.Generic;
using System.IO;
using System.Text;
-namespace de4dot {
- public enum StartUpArch {
- x86,
- x64,
- }
-
+namespace de4dot.code {
// These are in .NET 3.5 and later...
- internal delegate TResult Func();
- internal delegate TResult Func(T arg);
- internal delegate TResult Func(T1 arg1, T2 arg2);
- internal delegate TResult Func(T1 arg1, T2 arg2, T3 arg3);
- internal delegate void Action();
- internal delegate void Action(T arg);
- internal delegate void Action(T1 arg1, T2 arg2);
- internal delegate void Action(T1 arg1, T2 arg2, T3 arg3);
+ public delegate TResult Func();
+ public delegate TResult Func(T arg);
+ public delegate TResult Func(T1 arg1, T2 arg2);
+ public delegate TResult Func(T1 arg1, T2 arg2, T3 arg3);
+ public delegate void Action();
+ public delegate void Action(T arg);
+ public delegate void Action(T1 arg1, T2 arg2);
+ public delegate void Action(T1 arg1, T2 arg2, T3 arg3);
class Tuple {
public T1 Item1 { get; set; }
@@ -55,17 +50,8 @@ namespace de4dot {
}
}
- static class Utils {
+ public static class Utils {
static Random random = new Random();
- public static StartUpArch startUpArch = StartUpArch.x86;
-
- public static string getArchString(string x86, string x64) {
- switch (startUpArch) {
- case StartUpArch.x86: return x86;
- case StartUpArch.x64: return x64;
- default: throw new ApplicationException(string.Format("Invalid startUpArch {0}", startUpArch));
- }
- }
public static IEnumerable unique(IEnumerable values) {
// HashSet is only available in .NET 3.5 and later.
@@ -172,20 +158,6 @@ namespace de4dot {
return Path.Combine(getOurBaseDir(), filename);
}
- public static void printStackTrace(Exception ex, Log.LogLevel logLevel = Log.LogLevel.error) {
- var line = new string('-', 78);
- Log.log(logLevel, "\n\n");
- Log.log(logLevel, line);
- Log.log(logLevel, "Stack trace:\n{0}", ex.StackTrace);
- Log.log(logLevel, "\n\nERROR: Caught an exception:\n");
- Log.log(logLevel, line);
- Log.log(logLevel, "Message:");
- Log.log(logLevel, " {0}", ex.Message);
- Log.log(logLevel, "Type:");
- Log.log(logLevel, " {0}", ex.GetType());
- Log.log(logLevel, line);
- }
-
// This fixes a mono (tested 2.10.5) String.StartsWith() bug. NB: stringComparison must be
// Ordinal or OrdinalIgnoreCase!
public static bool StartsWith(string left, string right, StringComparison stringComparison) {
diff --git a/de4dot.code/de4dot.code.csproj b/de4dot.code/de4dot.code.csproj
index 791d58aa..bb21bbb5 100644
--- a/de4dot.code/de4dot.code.csproj
+++ b/de4dot.code/de4dot.code.csproj
@@ -8,7 +8,7 @@
{4D10B9EB-3BF1-4D61-A389-CB019E8C9622}
Library
Properties
- de4dot
+ de4dot.code
de4dot.code
v2.0
512
@@ -56,7 +56,6 @@
-
@@ -121,7 +120,6 @@
-
@@ -145,7 +143,6 @@
-
diff --git a/de4dot.code/deobfuscators/ArrayFinder.cs b/de4dot.code/deobfuscators/ArrayFinder.cs
index de6cef47..d942a2f7 100644
--- a/de4dot.code/deobfuscators/ArrayFinder.cs
+++ b/de4dot.code/deobfuscators/ArrayFinder.cs
@@ -23,7 +23,7 @@ using Mono.Cecil.Cil;
using de4dot.blocks;
using de4dot.blocks.cflow;
-namespace de4dot.deobfuscators {
+namespace de4dot.code.deobfuscators {
class ArrayFinder {
List arrays = new List();
diff --git a/de4dot.code/deobfuscators/CliSecure/CliSecureRtType.cs b/de4dot.code/deobfuscators/CliSecure/CliSecureRtType.cs
index e1ec70e8..dd7afa88 100644
--- a/de4dot.code/deobfuscators/CliSecure/CliSecureRtType.cs
+++ b/de4dot.code/deobfuscators/CliSecure/CliSecureRtType.cs
@@ -20,7 +20,7 @@
using System;
using Mono.Cecil;
-namespace de4dot.deobfuscators.CliSecure {
+namespace de4dot.code.deobfuscators.CliSecure {
class CliSecureRtType {
ModuleDefinition module;
TypeDefinition cliSecureRtType;
diff --git a/de4dot.code/deobfuscators/CliSecure/Deobfuscator.cs b/de4dot.code/deobfuscators/CliSecure/Deobfuscator.cs
index 57adfcb4..ab253c48 100644
--- a/de4dot.code/deobfuscators/CliSecure/Deobfuscator.cs
+++ b/de4dot.code/deobfuscators/CliSecure/Deobfuscator.cs
@@ -21,10 +21,10 @@ using System.Collections.Generic;
using Mono.Cecil;
using Mono.MyStuff;
using de4dot.blocks;
-using de4dot.PE;
+using de4dot.code.PE;
-namespace de4dot.deobfuscators.CliSecure {
- class DeobfuscatorInfo : DeobfuscatorInfoBase {
+namespace de4dot.code.deobfuscators.CliSecure {
+ public class DeobfuscatorInfo : DeobfuscatorInfoBase {
public const string THE_NAME = "CliSecure";
public const string THE_TYPE = "cs";
const string DEFAULT_REGEX = @"[a-zA-Z_0-9>}$]$";
diff --git a/de4dot.code/deobfuscators/CliSecure/MethodsDecrypter.cs b/de4dot.code/deobfuscators/CliSecure/MethodsDecrypter.cs
index 5645d21b..b0e8cad8 100644
--- a/de4dot.code/deobfuscators/CliSecure/MethodsDecrypter.cs
+++ b/de4dot.code/deobfuscators/CliSecure/MethodsDecrypter.cs
@@ -20,9 +20,9 @@
using System;
using System.Collections.Generic;
using Mono.MyStuff;
-using de4dot.PE;
+using de4dot.code.PE;
-namespace de4dot.deobfuscators.CliSecure {
+namespace de4dot.code.deobfuscators.CliSecure {
class CodeHeader {
public byte[] signature;
public byte[] decryptionKey;
diff --git a/de4dot.code/deobfuscators/CliSecure/ProxyDelegateFinder.cs b/de4dot.code/deobfuscators/CliSecure/ProxyDelegateFinder.cs
index 023c3251..8233bd3d 100644
--- a/de4dot.code/deobfuscators/CliSecure/ProxyDelegateFinder.cs
+++ b/de4dot.code/deobfuscators/CliSecure/ProxyDelegateFinder.cs
@@ -23,7 +23,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.CliSecure {
+namespace de4dot.code.deobfuscators.CliSecure {
class ProxyDelegateFinder : ProxyDelegateFinderBase {
IList memberReferences;
diff --git a/de4dot.code/deobfuscators/CliSecure/ResourceDecrypter.cs b/de4dot.code/deobfuscators/CliSecure/ResourceDecrypter.cs
index ef057904..ec60dc86 100644
--- a/de4dot.code/deobfuscators/CliSecure/ResourceDecrypter.cs
+++ b/de4dot.code/deobfuscators/CliSecure/ResourceDecrypter.cs
@@ -23,7 +23,7 @@ using System.Text;
using Mono.Cecil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.CliSecure {
+namespace de4dot.code.deobfuscators.CliSecure {
class ResourceDecrypter {
ModuleDefinition module;
TypeDefinition rsrcType;
diff --git a/de4dot.code/deobfuscators/CliSecure/StackFrameHelper.cs b/de4dot.code/deobfuscators/CliSecure/StackFrameHelper.cs
index d16908d6..0fe61ca1 100644
--- a/de4dot.code/deobfuscators/CliSecure/StackFrameHelper.cs
+++ b/de4dot.code/deobfuscators/CliSecure/StackFrameHelper.cs
@@ -21,7 +21,7 @@ using System;
using Mono.Cecil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.CliSecure {
+namespace de4dot.code.deobfuscators.CliSecure {
class StackFrameHelper {
ModuleDefinition module;
TypeDefinition stackFrameHelperType;
diff --git a/de4dot.code/deobfuscators/CliSecure/StringDecrypter.cs b/de4dot.code/deobfuscators/CliSecure/StringDecrypter.cs
index c75abbc9..ebb415d7 100644
--- a/de4dot.code/deobfuscators/CliSecure/StringDecrypter.cs
+++ b/de4dot.code/deobfuscators/CliSecure/StringDecrypter.cs
@@ -21,7 +21,7 @@ using System;
using System.Text;
using Mono.Cecil;
-namespace de4dot.deobfuscators.CliSecure {
+namespace de4dot.code.deobfuscators.CliSecure {
class StringDecrypter {
ModuleDefinition module;
TypeDefinition stringDecrypterType;
diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/AntiDebugger.cs b/de4dot.code/deobfuscators/CryptoObfuscator/AntiDebugger.cs
index a3a8e5b1..dc26967f 100644
--- a/de4dot.code/deobfuscators/CryptoObfuscator/AntiDebugger.cs
+++ b/de4dot.code/deobfuscators/CryptoObfuscator/AntiDebugger.cs
@@ -20,7 +20,7 @@
using Mono.Cecil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.CryptoObfuscator {
+namespace de4dot.code.deobfuscators.CryptoObfuscator {
class AntiDebugger {
ModuleDefinition module;
ISimpleDeobfuscator simpleDeobfuscator;
diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/AssemblyResolver.cs b/de4dot.code/deobfuscators/CryptoObfuscator/AssemblyResolver.cs
index 05946631..fba96000 100644
--- a/de4dot.code/deobfuscators/CryptoObfuscator/AssemblyResolver.cs
+++ b/de4dot.code/deobfuscators/CryptoObfuscator/AssemblyResolver.cs
@@ -24,7 +24,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.CryptoObfuscator {
+namespace de4dot.code.deobfuscators.CryptoObfuscator {
class AssemblyResolver {
ModuleDefinition module;
TypeDefinition resolverType;
diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/Deobfuscator.cs b/de4dot.code/deobfuscators/CryptoObfuscator/Deobfuscator.cs
index 849f6ded..9ac63003 100644
--- a/de4dot.code/deobfuscators/CryptoObfuscator/Deobfuscator.cs
+++ b/de4dot.code/deobfuscators/CryptoObfuscator/Deobfuscator.cs
@@ -22,8 +22,8 @@ using System.Text.RegularExpressions;
using Mono.Cecil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.CryptoObfuscator {
- class DeobfuscatorInfo : DeobfuscatorInfoBase {
+namespace de4dot.code.deobfuscators.CryptoObfuscator {
+ public class DeobfuscatorInfo : DeobfuscatorInfoBase {
public const string THE_NAME = "Crypto Obfuscator";
public const string THE_TYPE = "co";
const string DEFAULT_REGEX = @"!^(get_|set_|add_|remove_)?[A-Z]{1,3}(?:`\d+)?$&!^(get_|set_|add_|remove_)?c[0-9a-f]{32}(?:`\d+)?$&" + DeobfuscatorBase.DEFAULT_VALID_NAME_REGEX;
diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/ProxyDelegateFinder.cs b/de4dot.code/deobfuscators/CryptoObfuscator/ProxyDelegateFinder.cs
index d9af3361..67ed6a96 100644
--- a/de4dot.code/deobfuscators/CryptoObfuscator/ProxyDelegateFinder.cs
+++ b/de4dot.code/deobfuscators/CryptoObfuscator/ProxyDelegateFinder.cs
@@ -23,7 +23,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.CryptoObfuscator {
+namespace de4dot.code.deobfuscators.CryptoObfuscator {
class ProxyDelegateFinder : ProxyDelegateFinderBase {
Dictionary methodToType = new Dictionary();
diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/ResourceDecrypter.cs b/de4dot.code/deobfuscators/CryptoObfuscator/ResourceDecrypter.cs
index d57188e8..4f820ef2 100644
--- a/de4dot.code/deobfuscators/CryptoObfuscator/ResourceDecrypter.cs
+++ b/de4dot.code/deobfuscators/CryptoObfuscator/ResourceDecrypter.cs
@@ -23,7 +23,7 @@ using System.IO.Compression;
using System.Security.Cryptography;
using Mono.Cecil;
-namespace de4dot.deobfuscators.CryptoObfuscator {
+namespace de4dot.code.deobfuscators.CryptoObfuscator {
class ResourceDecrypter {
const int BUFLEN = 0x8000;
ModuleDefinition module;
diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/ResourceResolver.cs b/de4dot.code/deobfuscators/CryptoObfuscator/ResourceResolver.cs
index 85358589..81a74fc1 100644
--- a/de4dot.code/deobfuscators/CryptoObfuscator/ResourceResolver.cs
+++ b/de4dot.code/deobfuscators/CryptoObfuscator/ResourceResolver.cs
@@ -22,7 +22,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.CryptoObfuscator {
+namespace de4dot.code.deobfuscators.CryptoObfuscator {
class ResourceResolver {
ModuleDefinition module;
ResourceDecrypter resourceDecrypter;
diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/StringDecrypter.cs b/de4dot.code/deobfuscators/CryptoObfuscator/StringDecrypter.cs
index 86ef9b14..3dfe3b71 100644
--- a/de4dot.code/deobfuscators/CryptoObfuscator/StringDecrypter.cs
+++ b/de4dot.code/deobfuscators/CryptoObfuscator/StringDecrypter.cs
@@ -21,7 +21,7 @@ using System.Text;
using Mono.Cecil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.CryptoObfuscator {
+namespace de4dot.code.deobfuscators.CryptoObfuscator {
class StringDecrypter {
ModuleDefinition module;
EmbeddedResource stringResource;
diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/TamperDetection.cs b/de4dot.code/deobfuscators/CryptoObfuscator/TamperDetection.cs
index 14882b86..d473ae5e 100644
--- a/de4dot.code/deobfuscators/CryptoObfuscator/TamperDetection.cs
+++ b/de4dot.code/deobfuscators/CryptoObfuscator/TamperDetection.cs
@@ -20,7 +20,7 @@
using Mono.Cecil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.CryptoObfuscator {
+namespace de4dot.code.deobfuscators.CryptoObfuscator {
class TamperDetection {
ModuleDefinition module;
TypeDefinition tamperType;
diff --git a/de4dot.code/deobfuscators/DeobUtils.cs b/de4dot.code/deobfuscators/DeobUtils.cs
index 3f165c5a..552f0bc8 100644
--- a/de4dot.code/deobfuscators/DeobUtils.cs
+++ b/de4dot.code/deobfuscators/DeobUtils.cs
@@ -21,7 +21,7 @@ using System;
using System.IO;
using Mono.Cecil;
-namespace de4dot.deobfuscators {
+namespace de4dot.code.deobfuscators {
static class DeobUtils {
public static void decryptAndAddResources(ModuleDefinition module, string encryptedName, Func decryptResource) {
Log.v("Decrypting resources, name: {0}", Utils.toCsharpString(encryptedName));
diff --git a/de4dot.code/deobfuscators/DeobfuscatorBase.cs b/de4dot.code/deobfuscators/DeobfuscatorBase.cs
index 6095d276..bb89c51f 100644
--- a/de4dot.code/deobfuscators/DeobfuscatorBase.cs
+++ b/de4dot.code/deobfuscators/DeobfuscatorBase.cs
@@ -23,9 +23,9 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using Mono.MyStuff;
using de4dot.blocks;
-using de4dot.PE;
+using de4dot.code.PE;
-namespace de4dot.deobfuscators {
+namespace de4dot.code.deobfuscators {
abstract class DeobfuscatorBase : IDeobfuscator, IWriterListener {
public const string DEFAULT_VALID_NAME_REGEX = @"^[a-zA-Z_<{$][a-zA-Z_0-9<>{}$.`-]*$";
diff --git a/de4dot.code/deobfuscators/DeobfuscatorInfoBase.cs b/de4dot.code/deobfuscators/DeobfuscatorInfoBase.cs
index c59bc910..cea278bd 100644
--- a/de4dot.code/deobfuscators/DeobfuscatorInfoBase.cs
+++ b/de4dot.code/deobfuscators/DeobfuscatorInfoBase.cs
@@ -19,8 +19,8 @@
using System.Collections.Generic;
-namespace de4dot.deobfuscators {
- abstract class DeobfuscatorInfoBase : IDeobfuscatorInfo {
+namespace de4dot.code.deobfuscators {
+ public abstract class DeobfuscatorInfoBase : IDeobfuscatorInfo {
protected NameRegexOption validNameRegex;
public DeobfuscatorInfoBase(string nameRegex = null) {
diff --git a/de4dot.code/deobfuscators/Dotfuscator/Deobfuscator.cs b/de4dot.code/deobfuscators/Dotfuscator/Deobfuscator.cs
index 0580176b..843e39c9 100644
--- a/de4dot.code/deobfuscators/Dotfuscator/Deobfuscator.cs
+++ b/de4dot.code/deobfuscators/Dotfuscator/Deobfuscator.cs
@@ -22,8 +22,8 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.Dotfuscator {
- class DeobfuscatorInfo : DeobfuscatorInfoBase {
+namespace de4dot.code.deobfuscators.Dotfuscator {
+ public class DeobfuscatorInfo : DeobfuscatorInfoBase {
public const string THE_NAME = "Dotfuscator";
public const string THE_TYPE = "df";
const string DEFAULT_REGEX = @"!^[a-z][a-z0-9]{0,2}$&!^A_[0-9]+$&" + DeobfuscatorBase.DEFAULT_VALID_NAME_REGEX;
diff --git a/de4dot.code/deobfuscators/Eazfuscator/Deobfuscator.cs b/de4dot.code/deobfuscators/Eazfuscator/Deobfuscator.cs
index 8caa147e..cd929752 100644
--- a/de4dot.code/deobfuscators/Eazfuscator/Deobfuscator.cs
+++ b/de4dot.code/deobfuscators/Eazfuscator/Deobfuscator.cs
@@ -22,8 +22,8 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.Eazfuscator {
- class DeobfuscatorInfo : DeobfuscatorInfoBase {
+namespace de4dot.code.deobfuscators.Eazfuscator {
+ public class DeobfuscatorInfo : DeobfuscatorInfoBase {
public const string THE_NAME = "Eazfuscator.NET";
public const string THE_TYPE = "ef";
const string DEFAULT_REGEX = @"!^#=&!^dje_.+_ejd$&" + DeobfuscatorBase.DEFAULT_VALID_NAME_REGEX;
diff --git a/de4dot.code/deobfuscators/ExceptionLoggerRemover.cs b/de4dot.code/deobfuscators/ExceptionLoggerRemover.cs
index 254e3e9a..bccbb931 100644
--- a/de4dot.code/deobfuscators/ExceptionLoggerRemover.cs
+++ b/de4dot.code/deobfuscators/ExceptionLoggerRemover.cs
@@ -22,7 +22,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators {
+namespace de4dot.code.deobfuscators {
class ExceptionLoggerRemover {
Dictionary exceptionLoggerMethods = new Dictionary();
diff --git a/de4dot.code/deobfuscators/IDeobfuscatedFile.cs b/de4dot.code/deobfuscators/IDeobfuscatedFile.cs
index 56535f0e..21ffa294 100644
--- a/de4dot.code/deobfuscators/IDeobfuscatedFile.cs
+++ b/de4dot.code/deobfuscators/IDeobfuscatedFile.cs
@@ -17,8 +17,8 @@
along with de4dot. If not, see .
*/
-namespace de4dot.deobfuscators {
- interface IDeobfuscatedFile : ISimpleDeobfuscator {
+namespace de4dot.code.deobfuscators {
+ public interface IDeobfuscatedFile : ISimpleDeobfuscator {
void createAssemblyFile(byte[] data, string assemblyName, string extension = null);
void stringDecryptersAdded();
}
diff --git a/de4dot.code/deobfuscators/IDeobfuscator.cs b/de4dot.code/deobfuscators/IDeobfuscator.cs
index e7c6046d..6417ba22 100644
--- a/de4dot.code/deobfuscators/IDeobfuscator.cs
+++ b/de4dot.code/deobfuscators/IDeobfuscator.cs
@@ -22,11 +22,11 @@ using System.Collections.Generic;
using Mono.Cecil;
using Mono.MyStuff;
using de4dot.blocks;
-using de4dot.renamer;
-using de4dot.PE;
+using de4dot.code.renamer;
+using de4dot.code.PE;
-namespace de4dot.deobfuscators {
- interface IDeobfuscatorOptions {
+namespace de4dot.code.deobfuscators {
+ public interface IDeobfuscatorOptions {
bool RenameResourcesInCode { get; }
}
@@ -39,7 +39,7 @@ namespace de4dot.deobfuscators {
}
[Flags]
- enum StringFeatures {
+ public enum StringFeatures {
AllowNoDecryption = 1,
AllowStaticDecryption = 2,
AllowDynamicDecryption = 4,
@@ -47,11 +47,11 @@ namespace de4dot.deobfuscators {
}
[Flags]
- enum RenamingOptions {
+ public enum RenamingOptions {
RemoveNamespaceIfOneType = 1,
}
- interface IDeobfuscator : INameChecker {
+ public interface IDeobfuscator : INameChecker {
string Type { get; }
string TypeLong { get; }
string Name { get; }
diff --git a/de4dot.code/deobfuscators/IDeobfuscatorInfo.cs b/de4dot.code/deobfuscators/IDeobfuscatorInfo.cs
index b2f14c42..dce8c81b 100644
--- a/de4dot.code/deobfuscators/IDeobfuscatorInfo.cs
+++ b/de4dot.code/deobfuscators/IDeobfuscatorInfo.cs
@@ -19,8 +19,8 @@
using System.Collections.Generic;
-namespace de4dot.deobfuscators {
- interface IDeobfuscatorInfo {
+namespace de4dot.code.deobfuscators {
+ public interface IDeobfuscatorInfo {
string Type { get; }
string Name { get; }
IDeobfuscator createDeobfuscator();
diff --git a/de4dot.code/deobfuscators/ISimpleDeobfuscator.cs b/de4dot.code/deobfuscators/ISimpleDeobfuscator.cs
index ff19ea21..7ae20fb0 100644
--- a/de4dot.code/deobfuscators/ISimpleDeobfuscator.cs
+++ b/de4dot.code/deobfuscators/ISimpleDeobfuscator.cs
@@ -19,8 +19,8 @@
using Mono.Cecil;
-namespace de4dot.deobfuscators {
- interface ISimpleDeobfuscator {
+namespace de4dot.code.deobfuscators {
+ public interface ISimpleDeobfuscator {
void deobfuscate(MethodDefinition method);
void decryptStrings(MethodDefinition method, IDeobfuscator deob);
}
diff --git a/de4dot.code/deobfuscators/Operations.cs b/de4dot.code/deobfuscators/Operations.cs
index ac788dd7..f0aa1978 100644
--- a/de4dot.code/deobfuscators/Operations.cs
+++ b/de4dot.code/deobfuscators/Operations.cs
@@ -17,14 +17,14 @@
along with de4dot. If not, see .
*/
-namespace de4dot.deobfuscators {
- enum OpDecryptString {
+namespace de4dot.code.deobfuscators {
+ public enum OpDecryptString {
None,
Static,
Dynamic,
}
- interface IOperations {
+ public interface IOperations {
bool KeepObfuscatorTypes { get; }
OpDecryptString DecryptStrings { get; }
}
diff --git a/de4dot.code/deobfuscators/ProxyDelegateFinderBase.cs b/de4dot.code/deobfuscators/ProxyDelegateFinderBase.cs
index 15f94977..ac17eacd 100644
--- a/de4dot.code/deobfuscators/ProxyDelegateFinderBase.cs
+++ b/de4dot.code/deobfuscators/ProxyDelegateFinderBase.cs
@@ -23,7 +23,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators {
+namespace de4dot.code.deobfuscators {
abstract class ProxyDelegateFinderBase {
protected ModuleDefinition module;
protected List delegateCreatorMethods = new List();
diff --git a/de4dot.code/deobfuscators/RandomNameChecker.cs b/de4dot.code/deobfuscators/RandomNameChecker.cs
index 2f42c19e..b7a75395 100644
--- a/de4dot.code/deobfuscators/RandomNameChecker.cs
+++ b/de4dot.code/deobfuscators/RandomNameChecker.cs
@@ -21,7 +21,7 @@ using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
-namespace de4dot.deobfuscators {
+namespace de4dot.code.deobfuscators {
static class RandomNameChecker {
static Regex noUpper = new Regex(@"^[^A-Z]+$");
static Regex allUpper = new Regex(@"^[A-Z]+$");
diff --git a/de4dot.code/deobfuscators/SmartAssembly/AssemblyResolver.cs b/de4dot.code/deobfuscators/SmartAssembly/AssemblyResolver.cs
index b4022f73..4b9da9bc 100644
--- a/de4dot.code/deobfuscators/SmartAssembly/AssemblyResolver.cs
+++ b/de4dot.code/deobfuscators/SmartAssembly/AssemblyResolver.cs
@@ -21,7 +21,7 @@ using System;
using System.Collections.Generic;
using Mono.Cecil;
-namespace de4dot.deobfuscators.SmartAssembly {
+namespace de4dot.code.deobfuscators.SmartAssembly {
class AssemblyResolver {
ResourceDecrypter resourceDecrypter;
AssemblyResolverInfo assemblyResolverInfo;
diff --git a/de4dot.code/deobfuscators/SmartAssembly/AssemblyResolverInfo.cs b/de4dot.code/deobfuscators/SmartAssembly/AssemblyResolverInfo.cs
index 78a306f9..21cbca4b 100644
--- a/de4dot.code/deobfuscators/SmartAssembly/AssemblyResolverInfo.cs
+++ b/de4dot.code/deobfuscators/SmartAssembly/AssemblyResolverInfo.cs
@@ -24,7 +24,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.SmartAssembly {
+namespace de4dot.code.deobfuscators.SmartAssembly {
public class EmbeddedAssemblyInfo {
public string assemblyName;
public string simpleName;
diff --git a/de4dot.code/deobfuscators/SmartAssembly/AutomatedErrorReportingFinder.cs b/de4dot.code/deobfuscators/SmartAssembly/AutomatedErrorReportingFinder.cs
index d5e0b36d..03542b30 100644
--- a/de4dot.code/deobfuscators/SmartAssembly/AutomatedErrorReportingFinder.cs
+++ b/de4dot.code/deobfuscators/SmartAssembly/AutomatedErrorReportingFinder.cs
@@ -22,7 +22,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.SmartAssembly {
+namespace de4dot.code.deobfuscators.SmartAssembly {
class AutomatedErrorReportingFinder {
ModuleDefinition module;
ExceptionLoggerRemover exceptionLoggerRemover = new ExceptionLoggerRemover();
diff --git a/de4dot.code/deobfuscators/SmartAssembly/Deobfuscator.cs b/de4dot.code/deobfuscators/SmartAssembly/Deobfuscator.cs
index 4751ef1b..0fb26ab3 100644
--- a/de4dot.code/deobfuscators/SmartAssembly/Deobfuscator.cs
+++ b/de4dot.code/deobfuscators/SmartAssembly/Deobfuscator.cs
@@ -28,8 +28,8 @@ using de4dot.blocks;
// SmartAssembly can add so much junk that it's very difficult to find and remove all of it.
// I remove some safe types that are almost guaranteed not to have any references in the code.
-namespace de4dot.deobfuscators.SmartAssembly {
- class DeobfuscatorInfo : DeobfuscatorInfoBase {
+namespace de4dot.code.deobfuscators.SmartAssembly {
+ public class DeobfuscatorInfo : DeobfuscatorInfoBase {
public const string THE_NAME = "SmartAssembly";
public const string THE_TYPE = "sa";
BoolOption removeAutomatedErrorReporting;
diff --git a/de4dot.code/deobfuscators/SmartAssembly/MemoryManagerInfo.cs b/de4dot.code/deobfuscators/SmartAssembly/MemoryManagerInfo.cs
index 2d5b8dc1..6e3da9e7 100644
--- a/de4dot.code/deobfuscators/SmartAssembly/MemoryManagerInfo.cs
+++ b/de4dot.code/deobfuscators/SmartAssembly/MemoryManagerInfo.cs
@@ -20,7 +20,7 @@
using Mono.Cecil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.SmartAssembly {
+namespace de4dot.code.deobfuscators.SmartAssembly {
class MemoryManagerInfo {
ModuleDefinition module;
TypeDefinition memoryManagerType;
diff --git a/de4dot.code/deobfuscators/SmartAssembly/ProxyDelegateFinder.cs b/de4dot.code/deobfuscators/SmartAssembly/ProxyDelegateFinder.cs
index 42513a52..17a8e7c9 100644
--- a/de4dot.code/deobfuscators/SmartAssembly/ProxyDelegateFinder.cs
+++ b/de4dot.code/deobfuscators/SmartAssembly/ProxyDelegateFinder.cs
@@ -23,7 +23,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.SmartAssembly {
+namespace de4dot.code.deobfuscators.SmartAssembly {
class ProxyDelegateFinder : ProxyDelegateFinderBase {
static readonly Dictionary specialCharsDict = new Dictionary();
static readonly char[] specialChars = new char[] {
diff --git a/de4dot.code/deobfuscators/SmartAssembly/ResolverInfoBase.cs b/de4dot.code/deobfuscators/SmartAssembly/ResolverInfoBase.cs
index ed5a1066..47b80cba 100644
--- a/de4dot.code/deobfuscators/SmartAssembly/ResolverInfoBase.cs
+++ b/de4dot.code/deobfuscators/SmartAssembly/ResolverInfoBase.cs
@@ -22,7 +22,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.SmartAssembly {
+namespace de4dot.code.deobfuscators.SmartAssembly {
abstract class ResolverInfoBase {
protected ModuleDefinition module;
ISimpleDeobfuscator simpleDeobfuscator;
diff --git a/de4dot.code/deobfuscators/SmartAssembly/ResourceDecrypter.cs b/de4dot.code/deobfuscators/SmartAssembly/ResourceDecrypter.cs
index 7663e0a8..c128325a 100644
--- a/de4dot.code/deobfuscators/SmartAssembly/ResourceDecrypter.cs
+++ b/de4dot.code/deobfuscators/SmartAssembly/ResourceDecrypter.cs
@@ -23,7 +23,7 @@ using System.Security.Cryptography;
using Mono.Cecil;
using ICSharpCode.SharpZipLib.Zip.Compression;
-namespace de4dot.deobfuscators.SmartAssembly {
+namespace de4dot.code.deobfuscators.SmartAssembly {
class ResourceDecrypter {
ResourceDecrypterInfo resourceDecrypterInfo;
diff --git a/de4dot.code/deobfuscators/SmartAssembly/ResourceDecrypterInfo.cs b/de4dot.code/deobfuscators/SmartAssembly/ResourceDecrypterInfo.cs
index c58b86b7..f87c80d1 100644
--- a/de4dot.code/deobfuscators/SmartAssembly/ResourceDecrypterInfo.cs
+++ b/de4dot.code/deobfuscators/SmartAssembly/ResourceDecrypterInfo.cs
@@ -22,7 +22,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.SmartAssembly {
+namespace de4dot.code.deobfuscators.SmartAssembly {
class ResourceDecrypterInfo {
ModuleDefinition module;
TypeDefinition simpleZipType;
diff --git a/de4dot.code/deobfuscators/SmartAssembly/ResourceResolver.cs b/de4dot.code/deobfuscators/SmartAssembly/ResourceResolver.cs
index 26513174..33a16532 100644
--- a/de4dot.code/deobfuscators/SmartAssembly/ResourceResolver.cs
+++ b/de4dot.code/deobfuscators/SmartAssembly/ResourceResolver.cs
@@ -22,7 +22,7 @@ using System.IO;
using Mono.Cecil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.SmartAssembly {
+namespace de4dot.code.deobfuscators.SmartAssembly {
class ResourceResolver {
ModuleDefinition module;
AssemblyResolver assemblyResolver;
diff --git a/de4dot.code/deobfuscators/SmartAssembly/ResourceResolverInfo.cs b/de4dot.code/deobfuscators/SmartAssembly/ResourceResolverInfo.cs
index 537c7ce3..d8e346db 100644
--- a/de4dot.code/deobfuscators/SmartAssembly/ResourceResolverInfo.cs
+++ b/de4dot.code/deobfuscators/SmartAssembly/ResourceResolverInfo.cs
@@ -21,7 +21,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.SmartAssembly {
+namespace de4dot.code.deobfuscators.SmartAssembly {
class ResourceResolverInfo : ResolverInfoBase {
EmbeddedAssemblyInfo resourceInfo;
AssemblyResolverInfo assemblyResolverInfo;
diff --git a/de4dot.code/deobfuscators/SmartAssembly/SimpleZipInfo.cs b/de4dot.code/deobfuscators/SmartAssembly/SimpleZipInfo.cs
index 4a90afa4..ca5ef362 100644
--- a/de4dot.code/deobfuscators/SmartAssembly/SimpleZipInfo.cs
+++ b/de4dot.code/deobfuscators/SmartAssembly/SimpleZipInfo.cs
@@ -20,7 +20,7 @@
using Mono.Cecil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.SmartAssembly {
+namespace de4dot.code.deobfuscators.SmartAssembly {
class SimpleZipInfo {
public static bool isSimpleZipDecryptMethod_QuickCheck(ModuleDefinition module, MethodReference method, out TypeDefinition simpleZipType) {
diff --git a/de4dot.code/deobfuscators/SmartAssembly/StringDecrypter.cs b/de4dot.code/deobfuscators/SmartAssembly/StringDecrypter.cs
index c020d678..1b7ddc9b 100644
--- a/de4dot.code/deobfuscators/SmartAssembly/StringDecrypter.cs
+++ b/de4dot.code/deobfuscators/SmartAssembly/StringDecrypter.cs
@@ -20,7 +20,7 @@
using System;
using System.Text;
-namespace de4dot.deobfuscators.SmartAssembly {
+namespace de4dot.code.deobfuscators.SmartAssembly {
class StringDecrypter {
int stringOffset;
byte[] decryptedData;
diff --git a/de4dot.code/deobfuscators/SmartAssembly/StringDecrypterInfo.cs b/de4dot.code/deobfuscators/SmartAssembly/StringDecrypterInfo.cs
index b97043b8..d39b9ea5 100644
--- a/de4dot.code/deobfuscators/SmartAssembly/StringDecrypterInfo.cs
+++ b/de4dot.code/deobfuscators/SmartAssembly/StringDecrypterInfo.cs
@@ -23,7 +23,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.SmartAssembly {
+namespace de4dot.code.deobfuscators.SmartAssembly {
class StringDecrypterInfo {
ModuleDefinition module;
ResourceDecrypter resourceDecrypter;
diff --git a/de4dot.code/deobfuscators/SmartAssembly/StringEncoderClassFinder.cs b/de4dot.code/deobfuscators/SmartAssembly/StringEncoderClassFinder.cs
index fa373ede..0ce7b099 100644
--- a/de4dot.code/deobfuscators/SmartAssembly/StringEncoderClassFinder.cs
+++ b/de4dot.code/deobfuscators/SmartAssembly/StringEncoderClassFinder.cs
@@ -22,7 +22,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.SmartAssembly {
+namespace de4dot.code.deobfuscators.SmartAssembly {
class StringsEncoderInfo {
// SmartAssembly.HouseOfCards.Strings, the class that creates the string decrypter
// delegates
diff --git a/de4dot.code/deobfuscators/SmartAssembly/TamperProtectionRemover.cs b/de4dot.code/deobfuscators/SmartAssembly/TamperProtectionRemover.cs
index 7d4f1d6b..e64ad353 100644
--- a/de4dot.code/deobfuscators/SmartAssembly/TamperProtectionRemover.cs
+++ b/de4dot.code/deobfuscators/SmartAssembly/TamperProtectionRemover.cs
@@ -23,7 +23,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.SmartAssembly {
+namespace de4dot.code.deobfuscators.SmartAssembly {
class TamperProtectionRemover {
ModuleDefinition module;
List pinvokeMethods = new List();
diff --git a/de4dot.code/deobfuscators/StringCounts.cs b/de4dot.code/deobfuscators/StringCounts.cs
index 0dd7705d..5df26d50 100644
--- a/de4dot.code/deobfuscators/StringCounts.cs
+++ b/de4dot.code/deobfuscators/StringCounts.cs
@@ -22,7 +22,7 @@ using System.Collections.Generic;
using Mono.Cecil;
using Mono.Cecil.Cil;
-namespace de4dot.deobfuscators {
+namespace de4dot.code.deobfuscators {
class StringCounts {
Dictionary strings = new Dictionary(StringComparer.Ordinal);
diff --git a/de4dot.code/deobfuscators/TypesRestorer.cs b/de4dot.code/deobfuscators/TypesRestorer.cs
index c5a896d9..d6a69522 100644
--- a/de4dot.code/deobfuscators/TypesRestorer.cs
+++ b/de4dot.code/deobfuscators/TypesRestorer.cs
@@ -22,7 +22,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators {
+namespace de4dot.code.deobfuscators {
// Restore the type of all fields / parameters that have had their type turned into object.
// This thing requires a lot more code than I have time to do now (similar to symbol renaming)
// so it will be a basic implementation only.
diff --git a/de4dot.code/deobfuscators/Unknown/Deobfuscator.cs b/de4dot.code/deobfuscators/Unknown/Deobfuscator.cs
index 44cd5770..96e39063 100644
--- a/de4dot.code/deobfuscators/Unknown/Deobfuscator.cs
+++ b/de4dot.code/deobfuscators/Unknown/Deobfuscator.cs
@@ -19,8 +19,8 @@
using System.Text.RegularExpressions;
-namespace de4dot.deobfuscators.Unknown {
- class DeobfuscatorInfo : DeobfuscatorInfoBase {
+namespace de4dot.code.deobfuscators.Unknown {
+ public class DeobfuscatorInfo : DeobfuscatorInfoBase {
public const string THE_NAME = "Unknown";
public const string THE_TYPE = "un";
public DeobfuscatorInfo()
@@ -61,7 +61,7 @@ namespace de4dot.deobfuscators.Unknown {
get { return obfuscatorName ?? "Unknown Obfuscator"; }
}
- public Deobfuscator(Options options)
+ internal Deobfuscator(Options options)
: base(options) {
}
diff --git a/de4dot.code/deobfuscators/Xenocode/Deobfuscator.cs b/de4dot.code/deobfuscators/Xenocode/Deobfuscator.cs
index 7a9408ad..8d48aa56 100644
--- a/de4dot.code/deobfuscators/Xenocode/Deobfuscator.cs
+++ b/de4dot.code/deobfuscators/Xenocode/Deobfuscator.cs
@@ -20,8 +20,8 @@
using System.Collections.Generic;
using Mono.Cecil;
-namespace de4dot.deobfuscators.Xenocode {
- class DeobfuscatorInfo : DeobfuscatorInfoBase {
+namespace de4dot.code.deobfuscators.Xenocode {
+ public class DeobfuscatorInfo : DeobfuscatorInfoBase {
public const string THE_NAME = "Xenocode";
public const string THE_TYPE = "xc";
const string DEFAULT_REGEX = @"!^[oO01l]{4,}$&!^(get_|set_|add_|remove_|_)?x[a-f0-9]{16,}$&" + DeobfuscatorBase.DEFAULT_VALID_NAME_REGEX;
diff --git a/de4dot.code/deobfuscators/Xenocode/StringDecrypter.cs b/de4dot.code/deobfuscators/Xenocode/StringDecrypter.cs
index 4a9f6dcd..232946d3 100644
--- a/de4dot.code/deobfuscators/Xenocode/StringDecrypter.cs
+++ b/de4dot.code/deobfuscators/Xenocode/StringDecrypter.cs
@@ -21,7 +21,7 @@ using System.Text;
using Mono.Cecil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.Xenocode {
+namespace de4dot.code.deobfuscators.Xenocode {
class StringDecrypter {
const int STRING_DECRYPTER_KEY_CONST = 1789;
ModuleDefinition module;
diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/AntiStrongname.cs b/de4dot.code/deobfuscators/dotNET_Reactor/AntiStrongname.cs
index 76e4d802..4c2cd10b 100644
--- a/de4dot.code/deobfuscators/dotNET_Reactor/AntiStrongname.cs
+++ b/de4dot.code/deobfuscators/dotNET_Reactor/AntiStrongname.cs
@@ -22,7 +22,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.dotNET_Reactor {
+namespace de4dot.code.deobfuscators.dotNET_Reactor {
class AntiStrongName {
TypeDefinition decrypterType;
MethodDefinition antiStrongNameMethod;
diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/AssemblyResolver.cs b/de4dot.code/deobfuscators/dotNET_Reactor/AssemblyResolver.cs
index a1484b7d..f7727458 100644
--- a/de4dot.code/deobfuscators/dotNET_Reactor/AssemblyResolver.cs
+++ b/de4dot.code/deobfuscators/dotNET_Reactor/AssemblyResolver.cs
@@ -23,7 +23,7 @@ using System.IO;
using Mono.Cecil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.dotNET_Reactor {
+namespace de4dot.code.deobfuscators.dotNET_Reactor {
class ResourceInfo {
public EmbeddedResource resource;
public string name;
diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/BoolValueInliner.cs b/de4dot.code/deobfuscators/dotNET_Reactor/BoolValueInliner.cs
index d037df7a..32733cd1 100644
--- a/de4dot.code/deobfuscators/dotNET_Reactor/BoolValueInliner.cs
+++ b/de4dot.code/deobfuscators/dotNET_Reactor/BoolValueInliner.cs
@@ -22,7 +22,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.dotNET_Reactor {
+namespace de4dot.code.deobfuscators.dotNET_Reactor {
class BoolValueInliner : MethodReturnValueInliner {
Dictionary> boolDecrypters = new Dictionary>();
diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/BooleanDecrypter.cs b/de4dot.code/deobfuscators/dotNET_Reactor/BooleanDecrypter.cs
index 9e16fc3a..77859c31 100644
--- a/de4dot.code/deobfuscators/dotNET_Reactor/BooleanDecrypter.cs
+++ b/de4dot.code/deobfuscators/dotNET_Reactor/BooleanDecrypter.cs
@@ -21,7 +21,7 @@ using System;
using Mono.Cecil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.dotNET_Reactor {
+namespace de4dot.code.deobfuscators.dotNET_Reactor {
class BooleanDecrypter {
ModuleDefinition module;
EncryptedResource encryptedResource;
diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/Deobfuscator.cs b/de4dot.code/deobfuscators/dotNET_Reactor/Deobfuscator.cs
index f1a16c72..80102252 100644
--- a/de4dot.code/deobfuscators/dotNET_Reactor/Deobfuscator.cs
+++ b/de4dot.code/deobfuscators/dotNET_Reactor/Deobfuscator.cs
@@ -25,10 +25,10 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using Mono.MyStuff;
using de4dot.blocks;
-using de4dot.PE;
+using de4dot.code.PE;
-namespace de4dot.deobfuscators.dotNET_Reactor {
- class DeobfuscatorInfo : DeobfuscatorInfoBase {
+namespace de4dot.code.deobfuscators.dotNET_Reactor {
+ public class DeobfuscatorInfo : DeobfuscatorInfoBase {
public const string THE_NAME = ".NET Reactor";
public const string THE_TYPE = "dr";
const string DEFAULT_REGEX = DeobfuscatorBase.DEFAULT_VALID_NAME_REGEX;
diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/EmptyClass.cs b/de4dot.code/deobfuscators/dotNET_Reactor/EmptyClass.cs
index e6111cc7..3cac270d 100644
--- a/de4dot.code/deobfuscators/dotNET_Reactor/EmptyClass.cs
+++ b/de4dot.code/deobfuscators/dotNET_Reactor/EmptyClass.cs
@@ -20,7 +20,7 @@
using Mono.Cecil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.dotNET_Reactor {
+namespace de4dot.code.deobfuscators.dotNET_Reactor {
// Detect some empty class that is called from most .ctor's
class EmptyClass {
ModuleDefinition module;
diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/EncryptedResource.cs b/de4dot.code/deobfuscators/dotNET_Reactor/EncryptedResource.cs
index cda5905f..b7f88064 100644
--- a/de4dot.code/deobfuscators/dotNET_Reactor/EncryptedResource.cs
+++ b/de4dot.code/deobfuscators/dotNET_Reactor/EncryptedResource.cs
@@ -25,7 +25,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.dotNET_Reactor {
+namespace de4dot.code.deobfuscators.dotNET_Reactor {
class EncryptedResource {
ModuleDefinition module;
MethodDefinition resourceDecrypterMethod;
diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/MetadataTokenObfuscator.cs b/de4dot.code/deobfuscators/dotNET_Reactor/MetadataTokenObfuscator.cs
index ce7d1cc7..44d5d27c 100644
--- a/de4dot.code/deobfuscators/dotNET_Reactor/MetadataTokenObfuscator.cs
+++ b/de4dot.code/deobfuscators/dotNET_Reactor/MetadataTokenObfuscator.cs
@@ -21,7 +21,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.dotNET_Reactor {
+namespace de4dot.code.deobfuscators.dotNET_Reactor {
// Find the class that returns a RuntimeTypeHandle/RuntimeFieldHandle. The value passed to
// its methods is the original metadata token, which will be different when we save the file.
class MetadataTokenObfuscator {
diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/MethodsDecrypter.cs b/de4dot.code/deobfuscators/dotNET_Reactor/MethodsDecrypter.cs
index 5c7bcf53..342fdecc 100644
--- a/de4dot.code/deobfuscators/dotNET_Reactor/MethodsDecrypter.cs
+++ b/de4dot.code/deobfuscators/dotNET_Reactor/MethodsDecrypter.cs
@@ -24,9 +24,9 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using Mono.MyStuff;
using de4dot.blocks;
-using de4dot.PE;
+using de4dot.code.PE;
-namespace de4dot.deobfuscators.dotNET_Reactor {
+namespace de4dot.code.deobfuscators.dotNET_Reactor {
class MethodsDecrypter {
ModuleDefinition module;
EncryptedResource encryptedResource;
diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/NativeFileDecrypter.cs b/de4dot.code/deobfuscators/dotNET_Reactor/NativeFileDecrypter.cs
index 65e41cb1..007b702e 100644
--- a/de4dot.code/deobfuscators/dotNET_Reactor/NativeFileDecrypter.cs
+++ b/de4dot.code/deobfuscators/dotNET_Reactor/NativeFileDecrypter.cs
@@ -19,7 +19,7 @@
using System;
-namespace de4dot.deobfuscators.dotNET_Reactor {
+namespace de4dot.code.deobfuscators.dotNET_Reactor {
class NativeFileDecrypter {
byte[] key;
byte kb = 0;
diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/NativeImageUnpacker.cs b/de4dot.code/deobfuscators/dotNET_Reactor/NativeImageUnpacker.cs
index e8bc1e02..125a840f 100644
--- a/de4dot.code/deobfuscators/dotNET_Reactor/NativeImageUnpacker.cs
+++ b/de4dot.code/deobfuscators/dotNET_Reactor/NativeImageUnpacker.cs
@@ -20,9 +20,9 @@
using System;
using System.IO;
using ICSharpCode.SharpZipLib.Zip.Compression;
-using de4dot.PE;
+using de4dot.code.PE;
-namespace de4dot.deobfuscators.dotNET_Reactor {
+namespace de4dot.code.deobfuscators.dotNET_Reactor {
class NativeImageUnpacker {
PeImage peImage;
bool isNet1x;
diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/QuickLZ.cs b/de4dot.code/deobfuscators/dotNET_Reactor/QuickLZ.cs
index a06c65c5..d0a75ee9 100644
--- a/de4dot.code/deobfuscators/dotNET_Reactor/QuickLZ.cs
+++ b/de4dot.code/deobfuscators/dotNET_Reactor/QuickLZ.cs
@@ -11,7 +11,7 @@
using System;
-namespace de4dot.deobfuscators.dotNET_Reactor {
+namespace de4dot.code.deobfuscators.dotNET_Reactor {
static class QuickLZ {
static uint read32(byte[] data, int index) {
return BitConverter.ToUInt32(data, index);
diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/ResourceResolver.cs b/de4dot.code/deobfuscators/dotNET_Reactor/ResourceResolver.cs
index 00ff62e8..b865360f 100644
--- a/de4dot.code/deobfuscators/dotNET_Reactor/ResourceResolver.cs
+++ b/de4dot.code/deobfuscators/dotNET_Reactor/ResourceResolver.cs
@@ -23,7 +23,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.deobfuscators.dotNET_Reactor {
+namespace de4dot.code.deobfuscators.dotNET_Reactor {
class ResourceResolver {
ModuleDefinition module;
EncryptedResource encryptedResource;
diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/StringDecrypter.cs b/de4dot.code/deobfuscators/dotNET_Reactor/StringDecrypter.cs
index 24320486..261aea5d 100644
--- a/de4dot.code/deobfuscators/dotNET_Reactor/StringDecrypter.cs
+++ b/de4dot.code/deobfuscators/dotNET_Reactor/StringDecrypter.cs
@@ -24,9 +24,9 @@ using System.Security.Cryptography;
using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-using de4dot.PE;
+using de4dot.code.PE;
-namespace de4dot.deobfuscators.dotNET_Reactor {
+namespace de4dot.code.deobfuscators.dotNET_Reactor {
class StringDecrypter {
ModuleDefinition module;
EncryptedResource encryptedResource;
diff --git a/de4dot.code/renamer/DerivedFrom.cs b/de4dot.code/renamer/DerivedFrom.cs
index 68b7db46..5058e2f9 100644
--- a/de4dot.code/renamer/DerivedFrom.cs
+++ b/de4dot.code/renamer/DerivedFrom.cs
@@ -19,9 +19,9 @@
using System;
using System.Collections.Generic;
-using de4dot.renamer.asmmodules;
+using de4dot.code.renamer.asmmodules;
-namespace de4dot.renamer {
+namespace de4dot.code.renamer {
class DerivedFrom {
Dictionary classNames = new Dictionary(StringComparer.Ordinal);
Dictionary results = new Dictionary();
diff --git a/de4dot.code/renamer/ExistingNames.cs b/de4dot.code/renamer/ExistingNames.cs
index 5dfb473f..1244df89 100644
--- a/de4dot.code/renamer/ExistingNames.cs
+++ b/de4dot.code/renamer/ExistingNames.cs
@@ -20,7 +20,7 @@
using System;
using System.Collections.Generic;
-namespace de4dot.renamer {
+namespace de4dot.code.renamer {
class ExistingNames {
Dictionary allNames = new Dictionary(StringComparer.Ordinal);
diff --git a/de4dot.code/renamer/INameChecker.cs b/de4dot.code/renamer/INameChecker.cs
index d0c2499e..c8bc1da2 100644
--- a/de4dot.code/renamer/INameChecker.cs
+++ b/de4dot.code/renamer/INameChecker.cs
@@ -17,8 +17,8 @@
along with de4dot. If not, see .
*/
-namespace de4dot.renamer {
- interface INameChecker {
+namespace de4dot.code.renamer {
+ public interface INameChecker {
bool isValidNamespaceName(string ns);
bool isValidTypeName(string name);
bool isValidMethodName(string name);
diff --git a/de4dot.code/renamer/MemberInfos.cs b/de4dot.code/renamer/MemberInfos.cs
index f46313b9..b49ce1a7 100644
--- a/de4dot.code/renamer/MemberInfos.cs
+++ b/de4dot.code/renamer/MemberInfos.cs
@@ -18,9 +18,9 @@
*/
using System.Collections.Generic;
-using de4dot.renamer.asmmodules;
+using de4dot.code.renamer.asmmodules;
-namespace de4dot.renamer {
+namespace de4dot.code.renamer {
class MemberInfo {
protected Ref memberRef;
public string oldFullName;
diff --git a/de4dot.code/renamer/NameCreators.cs b/de4dot.code/renamer/NameCreators.cs
index 46b32706..f9dd089e 100644
--- a/de4dot.code/renamer/NameCreators.cs
+++ b/de4dot.code/renamer/NameCreators.cs
@@ -21,7 +21,7 @@ using System.Collections.Generic;
using Mono.Cecil;
using de4dot.blocks;
-namespace de4dot.renamer {
+namespace de4dot.code.renamer {
interface INameCreator {
string create();
}
diff --git a/de4dot.code/renamer/Renamer.cs b/de4dot.code/renamer/Renamer.cs
index eee9339a..4c72ea9a 100644
--- a/de4dot.code/renamer/Renamer.cs
+++ b/de4dot.code/renamer/Renamer.cs
@@ -22,11 +22,11 @@ using System.Collections.Generic;
using System.Text.RegularExpressions;
using Mono.Cecil;
using Mono.Cecil.Cil;
-using de4dot.renamer.asmmodules;
+using de4dot.code.renamer.asmmodules;
using de4dot.blocks;
-namespace de4dot.renamer {
- class Renamer {
+namespace de4dot.code.renamer {
+ public class Renamer {
public bool RenameNamespaces { get; set; }
public bool RenameTypes { get; set; }
public bool RenameProperties { get; set; }
diff --git a/de4dot.code/renamer/TypeInfo.cs b/de4dot.code/renamer/TypeInfo.cs
index 883665ee..455602ea 100644
--- a/de4dot.code/renamer/TypeInfo.cs
+++ b/de4dot.code/renamer/TypeInfo.cs
@@ -22,10 +22,10 @@ using System.Collections.Generic;
using System.Text.RegularExpressions;
using Mono.Cecil;
using Mono.Cecil.Cil;
-using de4dot.renamer.asmmodules;
+using de4dot.code.renamer.asmmodules;
using de4dot.blocks;
-namespace de4dot.renamer {
+namespace de4dot.code.renamer {
class TypeInfo : MemberInfo {
public string oldNamespace;
public string newNamespace;
diff --git a/de4dot.code/renamer/TypeNames.cs b/de4dot.code/renamer/TypeNames.cs
index 20cdd09e..dfd9a300 100644
--- a/de4dot.code/renamer/TypeNames.cs
+++ b/de4dot.code/renamer/TypeNames.cs
@@ -21,7 +21,7 @@ using System;
using System.Collections.Generic;
using Mono.Cecil;
-namespace de4dot.renamer {
+namespace de4dot.code.renamer {
abstract class TypeNames {
protected Dictionary typeNames = new Dictionary(StringComparer.Ordinal);
protected NameCreator genericParamNameCreator = new NameCreator("gparam_");
diff --git a/de4dot.code/renamer/TypeRenamerState.cs b/de4dot.code/renamer/TypeRenamerState.cs
index 31696eae..fab486dc 100644
--- a/de4dot.code/renamer/TypeRenamerState.cs
+++ b/de4dot.code/renamer/TypeRenamerState.cs
@@ -20,7 +20,7 @@
using System;
using System.Collections.Generic;
-namespace de4dot.renamer {
+namespace de4dot.code.renamer {
class TypeRenamerState {
ExistingNames existingNames;
Dictionary namespaceToNewName;
diff --git a/de4dot.code/renamer/VariableNameState.cs b/de4dot.code/renamer/VariableNameState.cs
index 38e232c0..8ad34599 100644
--- a/de4dot.code/renamer/VariableNameState.cs
+++ b/de4dot.code/renamer/VariableNameState.cs
@@ -19,7 +19,7 @@
using Mono.Cecil;
-namespace de4dot.renamer {
+namespace de4dot.code.renamer {
class VariableNameState {
ExistingNames existingVariableNames = new ExistingNames();
ExistingNames existingMethodNames = new ExistingNames();
diff --git a/de4dot.code/renamer/asmmodules/EventDef.cs b/de4dot.code/renamer/asmmodules/EventDef.cs
index 17e5fe71..3c85cdfd 100644
--- a/de4dot.code/renamer/asmmodules/EventDef.cs
+++ b/de4dot.code/renamer/asmmodules/EventDef.cs
@@ -20,7 +20,7 @@
using System.Collections.Generic;
using Mono.Cecil;
-namespace de4dot.renamer.asmmodules {
+namespace de4dot.code.renamer.asmmodules {
class EventDef : Ref {
public MethodDef AddMethod { get; set; }
public MethodDef RemoveMethod { get; set; }
diff --git a/de4dot.code/renamer/asmmodules/ExternalAssemblies.cs b/de4dot.code/renamer/asmmodules/ExternalAssemblies.cs
index 83f0d38e..af5cfd79 100644
--- a/de4dot.code/renamer/asmmodules/ExternalAssemblies.cs
+++ b/de4dot.code/renamer/asmmodules/ExternalAssemblies.cs
@@ -21,7 +21,7 @@ using System.Collections.Generic;
using Mono.Cecil;
using de4dot.blocks;
-namespace de4dot.renamer.asmmodules {
+namespace de4dot.code.renamer.asmmodules {
class ExternalAssembly {
AssemblyDefinition asmDef;
diff --git a/de4dot.code/renamer/asmmodules/FieldDef.cs b/de4dot.code/renamer/asmmodules/FieldDef.cs
index 9c1798c4..2698f0dc 100644
--- a/de4dot.code/renamer/asmmodules/FieldDef.cs
+++ b/de4dot.code/renamer/asmmodules/FieldDef.cs
@@ -19,7 +19,7 @@
using Mono.Cecil;
-namespace de4dot.renamer.asmmodules {
+namespace de4dot.code.renamer.asmmodules {
class FieldDef : Ref {
public FieldDefinition FieldDefinition {
get { return (FieldDefinition)memberReference; }
diff --git a/de4dot.code/renamer/asmmodules/GenericParamDef.cs b/de4dot.code/renamer/asmmodules/GenericParamDef.cs
index ef448c25..5661ab97 100644
--- a/de4dot.code/renamer/asmmodules/GenericParamDef.cs
+++ b/de4dot.code/renamer/asmmodules/GenericParamDef.cs
@@ -20,7 +20,7 @@
using System.Collections.Generic;
using Mono.Cecil;
-namespace de4dot.renamer.asmmodules {
+namespace de4dot.code.renamer.asmmodules {
class GenericParamDef : Ref {
public GenericParameter GenericParameter {
get { return (GenericParameter)memberReference; }
diff --git a/de4dot.code/renamer/asmmodules/IResolver.cs b/de4dot.code/renamer/asmmodules/IResolver.cs
index 8276e1d8..95cbb88a 100644
--- a/de4dot.code/renamer/asmmodules/IResolver.cs
+++ b/de4dot.code/renamer/asmmodules/IResolver.cs
@@ -19,7 +19,7 @@
using Mono.Cecil;
-namespace de4dot.renamer.asmmodules {
+namespace de4dot.code.renamer.asmmodules {
interface IResolver {
TypeDef resolve(TypeReference typeReference);
MethodDef resolve(MethodReference methodReference);
diff --git a/de4dot.code/renamer/asmmodules/MemberRefFinder.cs b/de4dot.code/renamer/asmmodules/MemberRefFinder.cs
index 102f3b84..44445702 100644
--- a/de4dot.code/renamer/asmmodules/MemberRefFinder.cs
+++ b/de4dot.code/renamer/asmmodules/MemberRefFinder.cs
@@ -23,7 +23,7 @@ using Mono.Cecil;
using Mono.Cecil.Cil;
using de4dot.blocks;
-namespace de4dot.renamer.asmmodules {
+namespace de4dot.code.renamer.asmmodules {
class MemberRefFinder {
public Dictionary eventDefinitions = new Dictionary();
public Dictionary fieldReferences = new Dictionary();
diff --git a/de4dot.code/renamer/asmmodules/MethodDef.cs b/de4dot.code/renamer/asmmodules/MethodDef.cs
index 180e28ce..b921159c 100644
--- a/de4dot.code/renamer/asmmodules/MethodDef.cs
+++ b/de4dot.code/renamer/asmmodules/MethodDef.cs
@@ -20,7 +20,7 @@
using System.Collections.Generic;
using Mono.Cecil;
-namespace de4dot.renamer.asmmodules {
+namespace de4dot.code.renamer.asmmodules {
class MethodDef : Ref {
IList genericParams;
IList paramDefs = new List();
diff --git a/de4dot.code/renamer/asmmodules/MethodNameScopes.cs b/de4dot.code/renamer/asmmodules/MethodNameScopes.cs
index 787be368..e012e2b5 100644
--- a/de4dot.code/renamer/asmmodules/MethodNameScopes.cs
+++ b/de4dot.code/renamer/asmmodules/MethodNameScopes.cs
@@ -20,7 +20,7 @@
using System;
using System.Collections.Generic;
-namespace de4dot.renamer.asmmodules {
+namespace de4dot.code.renamer.asmmodules {
class MethodNameScope {
List methods = new List();
diff --git a/de4dot.code/renamer/asmmodules/Module.cs b/de4dot.code/renamer/asmmodules/Module.cs
index 07338d79..84332270 100644
--- a/de4dot.code/renamer/asmmodules/Module.cs
+++ b/de4dot.code/renamer/asmmodules/Module.cs
@@ -22,7 +22,7 @@ using System.Collections.Generic;
using Mono.Cecil;
using de4dot.blocks;
-namespace de4dot.renamer.asmmodules {
+namespace de4dot.code.renamer.asmmodules {
class Module : IResolver {
IObfuscatedFile obfuscatedFile;
TypeDefDict types = new TypeDefDict();
diff --git a/de4dot.code/renamer/asmmodules/Modules.cs b/de4dot.code/renamer/asmmodules/Modules.cs
index 02eef038..e7f6198c 100644
--- a/de4dot.code/renamer/asmmodules/Modules.cs
+++ b/de4dot.code/renamer/asmmodules/Modules.cs
@@ -22,7 +22,7 @@ using System.Collections.Generic;
using Mono.Cecil;
using de4dot.blocks;
-namespace de4dot.renamer.asmmodules {
+namespace de4dot.code.renamer.asmmodules {
class Modules : IResolver {
bool initializeCalled = false;
List modules = new List();
diff --git a/de4dot.code/renamer/asmmodules/ParamDef.cs b/de4dot.code/renamer/asmmodules/ParamDef.cs
index 5a403182..1611636f 100644
--- a/de4dot.code/renamer/asmmodules/ParamDef.cs
+++ b/de4dot.code/renamer/asmmodules/ParamDef.cs
@@ -19,7 +19,7 @@
using Mono.Cecil;
-namespace de4dot.renamer.asmmodules {
+namespace de4dot.code.renamer.asmmodules {
class ParamDef {
public ParameterDefinition ParameterDefinition { get; set; }
public int Index { get; private set; }
diff --git a/de4dot.code/renamer/asmmodules/PropertyDef.cs b/de4dot.code/renamer/asmmodules/PropertyDef.cs
index d6b8cbd3..7b855b6d 100644
--- a/de4dot.code/renamer/asmmodules/PropertyDef.cs
+++ b/de4dot.code/renamer/asmmodules/PropertyDef.cs
@@ -20,7 +20,7 @@
using System.Collections.Generic;
using Mono.Cecil;
-namespace de4dot.renamer.asmmodules {
+namespace de4dot.code.renamer.asmmodules {
class PropertyDef : Ref {
public MethodDef GetMethod { get; set; }
public MethodDef SetMethod { get; set; }
diff --git a/de4dot.code/renamer/asmmodules/Ref.cs b/de4dot.code/renamer/asmmodules/Ref.cs
index 5c02a696..11ab66be 100644
--- a/de4dot.code/renamer/asmmodules/Ref.cs
+++ b/de4dot.code/renamer/asmmodules/Ref.cs
@@ -19,7 +19,7 @@
using Mono.Cecil;
-namespace de4dot.renamer.asmmodules {
+namespace de4dot.code.renamer.asmmodules {
abstract class Ref {
public readonly MemberReference memberReference;
public int Index { get; set; }
diff --git a/de4dot.code/renamer/asmmodules/RefDict.cs b/de4dot.code/renamer/asmmodules/RefDict.cs
index 9c4cb741..2efc3381 100644
--- a/de4dot.code/renamer/asmmodules/RefDict.cs
+++ b/de4dot.code/renamer/asmmodules/RefDict.cs
@@ -21,7 +21,7 @@ using System.Collections.Generic;
using Mono.Cecil;
using de4dot.blocks;
-namespace de4dot.renamer.asmmodules {
+namespace de4dot.code.renamer.asmmodules {
interface RefDict where TRef : Ref where TMRef : MemberReference {
int Count { get; }
IEnumerable getAll();
diff --git a/de4dot.code/renamer/asmmodules/TypeDef.cs b/de4dot.code/renamer/asmmodules/TypeDef.cs
index 33133bc6..8d5829c6 100644
--- a/de4dot.code/renamer/asmmodules/TypeDef.cs
+++ b/de4dot.code/renamer/asmmodules/TypeDef.cs
@@ -22,7 +22,7 @@ using System.Collections.Generic;
using Mono.Cecil;
using de4dot.blocks;
-namespace de4dot.renamer.asmmodules {
+namespace de4dot.code.renamer.asmmodules {
class TypeInfo {
public TypeReference typeReference;
public TypeDef typeDef;
diff --git a/de4dot.code/CommandLineParser.cs b/de4dot.cui/CommandLineParser.cs
similarity index 99%
rename from de4dot.code/CommandLineParser.cs
rename to de4dot.cui/CommandLineParser.cs
index 38687bef..69344f42 100644
--- a/de4dot.code/CommandLineParser.cs
+++ b/de4dot.cui/CommandLineParser.cs
@@ -20,10 +20,11 @@
using System;
using System.IO;
using System.Collections.Generic;
-using de4dot.deobfuscators;
-using de4dot.AssemblyClient;
+using de4dot.code;
+using de4dot.code.deobfuscators;
+using de4dot.code.AssemblyClient;
-namespace de4dot {
+namespace de4dot.cui {
class CommandLineParser {
static Infos stringDecrypterTypes = new Infos();
diff --git a/de4dot.code/FilesDeobfuscator.cs b/de4dot.cui/FilesDeobfuscator.cs
similarity index 97%
rename from de4dot.code/FilesDeobfuscator.cs
rename to de4dot.cui/FilesDeobfuscator.cs
index 366aaf15..a3a74116 100644
--- a/de4dot.code/FilesDeobfuscator.cs
+++ b/de4dot.cui/FilesDeobfuscator.cs
@@ -22,11 +22,12 @@ using System.IO;
using System.Collections.Generic;
using Mono.Cecil;
using de4dot.blocks;
-using de4dot.renamer;
-using de4dot.deobfuscators;
-using de4dot.AssemblyClient;
+using de4dot.code;
+using de4dot.code.renamer;
+using de4dot.code.deobfuscators;
+using de4dot.code.AssemblyClient;
-namespace de4dot {
+namespace de4dot.cui {
class FilesDeobfuscator {
Options options;
@@ -99,7 +100,7 @@ namespace de4dot {
}
catch (Exception ex) {
Log.w("Could not deobfuscate {0}. Use -v to see stack trace", file.Filename);
- Utils.printStackTrace(ex, Log.LogLevel.verbose);
+ Program.printStackTrace(ex, Log.LogLevel.verbose);
}
finally {
file.deobfuscateCleanUp();
@@ -204,7 +205,7 @@ namespace de4dot {
}
var deob = file.Deobfuscator;
- if (skipUnknownObfuscator && deob is deobfuscators.Unknown.Deobfuscator) {
+ if (skipUnknownObfuscator && deob.Type == "un") {
Log.v("Skipping unknown obfuscator: {0}", file.Filename);
removeModule(file.ModuleDefinition);
return false;
diff --git a/de4dot.code/Program.cs b/de4dot.cui/Program.cs
similarity index 62%
rename from de4dot.code/Program.cs
rename to de4dot.cui/Program.cs
index 6b89c475..3d8bff7e 100644
--- a/de4dot.code/Program.cs
+++ b/de4dot.cui/Program.cs
@@ -20,28 +20,27 @@
using System;
using System.Collections.Generic;
using System.Text;
-using de4dot.deobfuscators;
+using de4dot.code;
+using de4dot.code.deobfuscators;
-namespace de4dot {
+namespace de4dot.cui {
public class Program {
static IList deobfuscatorInfos = createDeobfuscatorInfos();
static IList createDeobfuscatorInfos() {
return new List {
- new de4dot.deobfuscators.Unknown.DeobfuscatorInfo(),
- new de4dot.deobfuscators.CliSecure.DeobfuscatorInfo(),
- new de4dot.deobfuscators.CryptoObfuscator.DeobfuscatorInfo(),
- new de4dot.deobfuscators.Dotfuscator.DeobfuscatorInfo(),
- new de4dot.deobfuscators.dotNET_Reactor.DeobfuscatorInfo(),
- new de4dot.deobfuscators.Eazfuscator.DeobfuscatorInfo(),
- new de4dot.deobfuscators.SmartAssembly.DeobfuscatorInfo(),
- new de4dot.deobfuscators.Xenocode.DeobfuscatorInfo(),
+ new de4dot.code.deobfuscators.Unknown.DeobfuscatorInfo(),
+ new de4dot.code.deobfuscators.CliSecure.DeobfuscatorInfo(),
+ new de4dot.code.deobfuscators.CryptoObfuscator.DeobfuscatorInfo(),
+ new de4dot.code.deobfuscators.Dotfuscator.DeobfuscatorInfo(),
+ new de4dot.code.deobfuscators.dotNET_Reactor.DeobfuscatorInfo(),
+ new de4dot.code.deobfuscators.Eazfuscator.DeobfuscatorInfo(),
+ new de4dot.code.deobfuscators.SmartAssembly.DeobfuscatorInfo(),
+ new de4dot.code.deobfuscators.Xenocode.DeobfuscatorInfo(),
};
}
- public static int main(StartUpArch startUpArch, string[] args) {
- Utils.startUpArch = startUpArch;
-
+ public static int main(string[] args) {
try {
if (Console.OutputEncoding.IsSingleByte)
Console.OutputEncoding = new UTF8Encoding(false);
@@ -59,7 +58,7 @@ namespace de4dot {
Log.e("ERROR: {0}", ex.Message);
}
catch (Exception ex) {
- Utils.printStackTrace(ex);
+ printStackTrace(ex);
Log.e("\nTry the latest version before reporting this problem!");
return 1;
}
@@ -67,6 +66,20 @@ namespace de4dot {
return 0;
}
+ public static void printStackTrace(Exception ex, Log.LogLevel logLevel = Log.LogLevel.error) {
+ var line = new string('-', 78);
+ Log.log(logLevel, "\n\n");
+ Log.log(logLevel, line);
+ Log.log(logLevel, "Stack trace:\n{0}", ex.StackTrace);
+ Log.log(logLevel, "\n\nERROR: Caught an exception:\n");
+ Log.log(logLevel, line);
+ Log.log(logLevel, "Message:");
+ Log.log(logLevel, " {0}", ex.Message);
+ Log.log(logLevel, "Type:");
+ Log.log(logLevel, " {0}", ex.GetType());
+ Log.log(logLevel, line);
+ }
+
static void parseCommandLine(string[] args, FilesDeobfuscator.Options options) {
new CommandLineParser(deobfuscatorInfos, options).parse(args);
diff --git a/de4dot.cui/Properties/AssemblyInfo.cs b/de4dot.cui/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..8dfe5bcf
--- /dev/null
+++ b/de4dot.cui/Properties/AssemblyInfo.cs
@@ -0,0 +1,34 @@
+/*
+ Copyright (C) 2011 de4dot@gmail.com
+
+ This file is part of de4dot.
+
+ de4dot is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ de4dot is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with de4dot. If not, see .
+*/
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("de4dot.cui")]
+[assembly: AssemblyDescription("de4dot Console UI code")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("de4dot.cui")]
+[assembly: AssemblyCopyright("Copyright (C) 2011 de4dot@gmail.com")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+[assembly: ComVisible(false)]
+[assembly: AssemblyVersion("1.3.6.3405")]
+[assembly: AssemblyFileVersion("1.3.6.3405")]
diff --git a/de4dot.cui/de4dot.cui.csproj b/de4dot.cui/de4dot.cui.csproj
new file mode 100644
index 00000000..b8db6c89
--- /dev/null
+++ b/de4dot.cui/de4dot.cui.csproj
@@ -0,0 +1,67 @@
+
+
+
+ Debug
+ x86
+ 8.0.30703
+ 2.0
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}
+ Library
+ Properties
+ de4dot.cui
+ de4dot.cui
+ v2.0
+ 512
+
+ true
+ ..\de4dot.snk
+
+
+ AnyCPU
+ true
+ full
+ false
+ ..\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ ..\Release\
+ TRACE
+ prompt
+ 4
+ true
+
+
+
+
+
+
+
+
+
+ {045B96F2-AF80-4C4C-8D27-E38635AC705E}
+ blocks
+
+
+ {D68133BD-1E63-496E-9EDE-4FBDBF77B486}
+ Mono.Cecil
+
+
+ {4D10B9EB-3BF1-4D61-A389-CB019E8C9622}
+ de4dot.code
+
+
+
+
+
\ No newline at end of file
diff --git a/de4dot.sln b/de4dot.sln
index 863bad2e..42597f32 100644
--- a/de4dot.sln
+++ b/de4dot.sln
@@ -21,6 +21,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AssemblyServer-x64", "Assem
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "blocks", "blocks\blocks.csproj", "{045B96F2-AF80-4C4C-8D27-E38635AC705E}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "de4dot.cui", "de4dot.cui\de4dot.cui.csproj", "{879E4A7E-C320-42D2-8275-4F1E44CE64AA}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -793,6 +795,78 @@ Global
{045B96F2-AF80-4C4C-8D27-E38635AC705E}.winphone_Release|Mixed Platforms.Build.0 = Release|Any CPU
{045B96F2-AF80-4C4C-8D27-E38635AC705E}.winphone_Release|Win32.ActiveCfg = Release|Any CPU
{045B96F2-AF80-4C4C-8D27-E38635AC705E}.winphone_Release|x86.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_2_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_2_0_Debug|Any CPU.Build.0 = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_2_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_2_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_2_0_Debug|Win32.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_2_0_Debug|x86.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_2_0_Release|Any CPU.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_2_0_Release|Any CPU.Build.0 = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_2_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_2_0_Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_2_0_Release|Win32.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_2_0_Release|x86.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_3_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_3_5_Debug|Any CPU.Build.0 = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_3_5_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_3_5_Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_3_5_Debug|Win32.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_3_5_Debug|x86.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_3_5_Release|Any CPU.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_3_5_Release|Any CPU.Build.0 = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_3_5_Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_3_5_Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_3_5_Release|Win32.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_3_5_Release|x86.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_4_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_4_0_Debug|Any CPU.Build.0 = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_4_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_4_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_4_0_Debug|Win32.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_4_0_Debug|x86.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_4_0_Release|Any CPU.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_4_0_Release|Any CPU.Build.0 = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_4_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_4_0_Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_4_0_Release|Win32.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.net_4_0_Release|x86.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.Release|Win32.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.Release|x86.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.silverlight_Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.silverlight_Debug|Any CPU.Build.0 = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.silverlight_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.silverlight_Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.silverlight_Debug|Win32.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.silverlight_Debug|x86.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.silverlight_Release|Any CPU.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.silverlight_Release|Any CPU.Build.0 = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.silverlight_Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.silverlight_Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.silverlight_Release|Win32.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.silverlight_Release|x86.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.winphone_Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.winphone_Debug|Any CPU.Build.0 = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.winphone_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.winphone_Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.winphone_Debug|Win32.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.winphone_Debug|x86.ActiveCfg = Debug|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.winphone_Release|Any CPU.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.winphone_Release|Any CPU.Build.0 = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.winphone_Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.winphone_Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.winphone_Release|Win32.ActiveCfg = Release|Any CPU
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}.winphone_Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/de4dot/Program.cs b/de4dot/Program.cs
index 4fb0dda6..8410a5a7 100644
--- a/de4dot/Program.cs
+++ b/de4dot/Program.cs
@@ -20,7 +20,7 @@
namespace de4dot_x86 {
class Program {
static int Main(string[] args) {
- return de4dot.Program.main(de4dot.StartUpArch.x86, args);
+ return de4dot.cui.Program.main(args);
}
}
}
diff --git a/de4dot/de4dot.csproj b/de4dot/de4dot.csproj
index 89f9742b..f28439f3 100644
--- a/de4dot/de4dot.csproj
+++ b/de4dot/de4dot.csproj
@@ -42,9 +42,9 @@
-
- {4D10B9EB-3BF1-4D61-A389-CB019E8C9622}
- d4d.code
+
+ {879E4A7E-C320-42D2-8275-4F1E44CE64AA}
+ de4dot.cui