Skip to content
This repository was archived by the owner on Mar 20, 2023. It is now read-only.

Commit c8ef908

Browse files
committed
readme
1 parent 80632e5 commit c8ef908

12 files changed

+157
-71
lines changed

.vs/DNR 6.7 Cflow/v16/.suo

25 KB
Binary file not shown.

DNR 6.7 Cflow/Core/CflowRemover.cs

Lines changed: 54 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ public static void Execute(Context ctx)
1919

2020
foreach (var TypeDef in ctx.Module.Types.ToArray())
2121
foreach (var MethodDef in TypeDef.Methods.Where(x => x.HasBody && ContainsSwitch(x)).ToArray())
22-
try {
22+
try
23+
{
2324
var blocks = new Blocks(MethodDef);
2425
blocks.MethodBlocks.GetAllBlocks();
2526
blocks.RemoveDeadBlocks();
@@ -30,10 +31,13 @@ public static void Execute(Context ctx)
3031
CfDeob.Initialize(blocks);
3132
CfDeob.Deobfuscate();
3233
blocks.RepartitionBlocks();
33-
blocks.GetCode(out var instructions, out var exceptionHandlers);
34+
blocks.GetCode(out
35+
var instructions, out
36+
var exceptionHandlers);
3437
DotNetUtils.RestoreBody(MethodDef, instructions, exceptionHandlers);
3538
}
36-
catch {
39+
catch
40+
{
3741
// ignored
3842
}
3943
}
@@ -43,86 +47,70 @@ private static void SimplifyArithmetic(Context ctx)
4347
var logger = ctx.Options.Logger;
4448

4549
foreach (var type in ctx.Module.Types)
46-
foreach (var method in type.Methods.Where(x =>
47-
x.HasBody && x.Body.HasInstructions && x.Body.Instructions.Count >= 3)) {
48-
var Instructions = method.Body.Instructions;
50+
foreach (var method in type.Methods.Where(x => x.HasBody && x.Body.HasInstructions && x.Body.Instructions.Count >= 3))
51+
{
52+
var Instructions = method.Body.Instructions;
4953

50-
for (var i = 1; i < Instructions.Count; i++) {
51-
if (i + 1 >= Instructions.Count) continue;
54+
for (var i = 1; i < Instructions.Count; i++)
55+
{
56+
if (i + 1 >= Instructions.Count) continue;
5257

53-
var prevInstr = Instructions[i - 1];
54-
var curInstr = Instructions[i];
55-
var nextInstr = Instructions[i + 1];
56-
57-
// Too lazy to strip these two into one function
58-
#region Ldsfld
59-
if (curInstr.OpCode == OpCodes.Brtrue &&
60-
nextInstr.OpCode == OpCodes.Pop &&
61-
prevInstr.OpCode == OpCodes.Ldsfld) {
62-
/*if (prevInstr.Operand.ToString().Contains("System.Boolean")) {
63-
logger.Info($"Brtrue with Boolean: {method.FullName}");
64-
prevInstr.OpCode = OpCodes.Nop;
65-
curInstr.OpCode = OpCodes.Br_S;
66-
FixedMethods++;
67-
}
68-
else*/ {
69-
logger.Info($"Brtrue: {method.FullName}");
70-
prevInstr.OpCode = OpCodes.Nop;
71-
curInstr.OpCode = OpCodes.Br_S;
72-
FixedMethods++;
73-
}
74-
}
58+
var prevInstr = Instructions[i - 1];
59+
var curInstr = Instructions[i];
60+
var nextInstr = Instructions[i + 1];
7561

76-
else if (curInstr.OpCode == OpCodes.Brfalse &&
77-
nextInstr.OpCode == OpCodes.Pop &&
78-
prevInstr.OpCode == OpCodes.Ldsfld) {
79-
/*if (prevInstr.Operand.ToString().Contains("System.Boolean")) {
80-
logger.Info($"Brfalse with Boolean: {method.FullName}");
62+
// Too lazy to strip these two into one function, mess
63+
#region Ldsfld
64+
if (curInstr.OpCode == OpCodes.Brtrue &&
65+
nextInstr.OpCode == OpCodes.Pop &&
66+
prevInstr.OpCode == OpCodes.Ldsfld) {
67+
logger.Info($"Brtrue: {method.FullName}");
8168
prevInstr.OpCode = OpCodes.Nop;
8269
curInstr.OpCode = OpCodes.Br_S;
8370
FixedMethods++;
8471
}
85-
else*/ {
72+
else if (curInstr.OpCode == OpCodes.Brfalse &&
73+
nextInstr.OpCode == OpCodes.Pop &&
74+
prevInstr.OpCode == OpCodes.Ldsfld) {
8675
logger.Info($"Brfalse: {method.FullName}");
8776
prevInstr.OpCode = OpCodes.Nop;
8877
curInstr.OpCode = OpCodes.Br_S;
8978
FixedMethods++;
9079
}
91-
}
92-
#endregion
93-
#region Call
94-
if (curInstr.OpCode == OpCodes.Brtrue &&
95-
nextInstr.OpCode == OpCodes.Pop &&
96-
prevInstr.OpCode == OpCodes.Call) {
97-
if (prevInstr.Operand.ToString().Contains("System.Boolean")) {
98-
logger.Info($"Call with Boolean: {method.FullName}");
99-
prevInstr.OpCode = OpCodes.Nop;
100-
curInstr.OpCode = OpCodes.Br_S;
101-
}
102-
else {
103-
logger.Info($"Call: {method.FullName}");
104-
prevInstr.OpCode = OpCodes.Nop;
105-
curInstr.OpCode = OpCodes.Nop;
106-
}
107-
}
80+
#endregion
10881

109-
else if (curInstr.OpCode == OpCodes.Brfalse &&
110-
nextInstr.OpCode == OpCodes.Pop &&
111-
prevInstr.OpCode == OpCodes.Call) {
112-
if (prevInstr.Operand.ToString().Contains("System.Boolean")) {
113-
logger.Info($"Call with Boolean: {method.FullName}");
114-
prevInstr.OpCode = OpCodes.Nop;
115-
curInstr.OpCode = OpCodes.Nop;
82+
#region Call
83+
if (curInstr.OpCode == OpCodes.Brtrue &&
84+
nextInstr.OpCode == OpCodes.Pop &&
85+
prevInstr.OpCode == OpCodes.Call) {
86+
if (prevInstr.Operand.ToString().Contains("System.Boolean")) {
87+
logger.Info($"Call with Boolean: {method.FullName}");
88+
prevInstr.OpCode = OpCodes.Nop;
89+
curInstr.OpCode = OpCodes.Br_S;
90+
}
91+
else {
92+
logger.Info($"Call: {method.FullName}");
93+
prevInstr.OpCode = OpCodes.Nop;
94+
curInstr.OpCode = OpCodes.Nop;
95+
}
11696
}
117-
else {
118-
logger.Info($"Call: {method.FullName}");
119-
prevInstr.OpCode = OpCodes.Nop;
120-
curInstr.OpCode = OpCodes.Br_S;
97+
else if (curInstr.OpCode == OpCodes.Brfalse &&
98+
nextInstr.OpCode == OpCodes.Pop &&
99+
prevInstr.OpCode == OpCodes.Call) {
100+
if (prevInstr.Operand.ToString().Contains("System.Boolean")) {
101+
logger.Info($"Call with Boolean: {method.FullName}");
102+
prevInstr.OpCode = OpCodes.Nop;
103+
curInstr.OpCode = OpCodes.Nop;
104+
}
105+
else {
106+
logger.Info($"Call: {method.FullName}");
107+
prevInstr.OpCode = OpCodes.Nop;
108+
curInstr.OpCode = OpCodes.Br_S;
109+
}
121110
}
111+
#endregion
122112
}
123-
#endregion
124113
}
125-
}
126114
}
127115

128116
private static bool ContainsSwitch(MethodDef method) => method.Body.Instructions.Any(t => t.OpCode == OpCodes.Switch);

DNR 6.7 Cflow/Program.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ .NET Reactor 6.7.0.0 Cflow
2020
Credits SychicBoy
2121
2222
";
23-
2423
public static void Main(string[] args) {
2524
Console.Title = "DNR 6.7.0.0 Cflow Cleaner";
2625
Console.WriteLine(asciiArt, Color.IndianRed);
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8b19d00458b53230679fbede3b6895af69b8f2e7
1+
dd2e6765cb14a05cabaf568cb8450736b4834d2d

DNR 6.7 Cflow/obj/Debug/net5.0/DNR 6.7 Cflow.csproj.FileListAbsolute.txt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,23 @@ C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\DNR 6.7 Cflow\obj\Debug\net5.0\ref\DN
1717
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\DNR 6.7 Cflow\obj\Debug\net5.0\DNR 6.7 Cflow.pdb
1818
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\DNR 6.7 Cflow\obj\Debug\net5.0\DNR 6.7 Cflow.genruntimeconfig.cache
1919
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\DNR 6.7 Cflow\bin\Debug\net5.0\de4dot.blocks.dll
20+
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\NET-Reactor-Cflow-Cleaner-6.7.0.0\DNR 6.7 Cflow\bin\Debug\net5.0\DNR 6.7 Cflow.exe
21+
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\NET-Reactor-Cflow-Cleaner-6.7.0.0\DNR 6.7 Cflow\bin\Debug\net5.0\DNR 6.7 Cflow.deps.json
22+
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\NET-Reactor-Cflow-Cleaner-6.7.0.0\DNR 6.7 Cflow\bin\Debug\net5.0\DNR 6.7 Cflow.runtimeconfig.json
23+
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\NET-Reactor-Cflow-Cleaner-6.7.0.0\DNR 6.7 Cflow\bin\Debug\net5.0\DNR 6.7 Cflow.runtimeconfig.dev.json
24+
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\NET-Reactor-Cflow-Cleaner-6.7.0.0\DNR 6.7 Cflow\bin\Debug\net5.0\DNR 6.7 Cflow.dll
25+
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\NET-Reactor-Cflow-Cleaner-6.7.0.0\DNR 6.7 Cflow\bin\Debug\net5.0\ref\DNR 6.7 Cflow.dll
26+
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\NET-Reactor-Cflow-Cleaner-6.7.0.0\DNR 6.7 Cflow\bin\Debug\net5.0\DNR 6.7 Cflow.pdb
27+
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\NET-Reactor-Cflow-Cleaner-6.7.0.0\DNR 6.7 Cflow\bin\Debug\net5.0\Colorful.Console.dll
28+
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\NET-Reactor-Cflow-Cleaner-6.7.0.0\DNR 6.7 Cflow\bin\Debug\net5.0\de4dot.blocks.dll
29+
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\NET-Reactor-Cflow-Cleaner-6.7.0.0\DNR 6.7 Cflow\bin\Debug\net5.0\dnlib.dll
30+
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\NET-Reactor-Cflow-Cleaner-6.7.0.0\DNR 6.7 Cflow\obj\Debug\net5.0\DNR 6.7 Cflow.csprojAssemblyReference.cache
31+
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\NET-Reactor-Cflow-Cleaner-6.7.0.0\DNR 6.7 Cflow\obj\Debug\net5.0\DNR 6.7 Cflow.GeneratedMSBuildEditorConfig.editorconfig
32+
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\NET-Reactor-Cflow-Cleaner-6.7.0.0\DNR 6.7 Cflow\obj\Debug\net5.0\DNR 6.7 Cflow.AssemblyInfoInputs.cache
33+
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\NET-Reactor-Cflow-Cleaner-6.7.0.0\DNR 6.7 Cflow\obj\Debug\net5.0\DNR 6.7 Cflow.AssemblyInfo.cs
34+
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\NET-Reactor-Cflow-Cleaner-6.7.0.0\DNR 6.7 Cflow\obj\Debug\net5.0\DNR 6.7 Cflow.csproj.CoreCompileInputs.cache
35+
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\NET-Reactor-Cflow-Cleaner-6.7.0.0\DNR 6.7 Cflow\obj\Debug\net5.0\DNR 6.7 Cflow.csproj.CopyComplete
36+
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\NET-Reactor-Cflow-Cleaner-6.7.0.0\DNR 6.7 Cflow\obj\Debug\net5.0\DNR 6.7 Cflow.dll
37+
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\NET-Reactor-Cflow-Cleaner-6.7.0.0\DNR 6.7 Cflow\obj\Debug\net5.0\ref\DNR 6.7 Cflow.dll
38+
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\NET-Reactor-Cflow-Cleaner-6.7.0.0\DNR 6.7 Cflow\obj\Debug\net5.0\DNR 6.7 Cflow.pdb
39+
C:\Users\hussa\RiderProjects\DNR 6.7 Cflow\NET-Reactor-Cflow-Cleaner-6.7.0.0\DNR 6.7 Cflow\obj\Debug\net5.0\DNR 6.7 Cflow.genruntimeconfig.cache
0 Bytes
Binary file not shown.
2 KB
Binary file not shown.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
4122217ff00a5fb868f4d420891b233650685fcc
1+
0ba39a326b10ce12084fee3104986d08f9170d4d
172 Bytes
Binary file not shown.
512 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)