Visual
Developers who use Vs.net are trying to find a way to prevent or prevent others from using their own code to prevent others from understanding their business processes or the implementation process of some important algorithms.
One of the most familiar is the vs.net on the Dotfuscator Community Edition tools, here is no longer introduced this tool, interested can go to http://thesource.ofallevil.com/china/ Msdn/library/langtool/vcsharp/misnetcodeobfuscation.mspx?mfr=true look, the most important thing is to adopt a mechanism of fuzzy processing and element renaming. But this approach is far from the goal of hiding our algorithms.
1public void Undo () {
2 if (this.numofmoves > 0) {
3 This.numofmoves =
4 this.numofmoves-1;
5 if (this._usermoves.length >= 2)
6 this._usermoves =
7 this._usermoves.substring (0, this._usermoves.length-2);
8 This.loadboard (
9 This.movehistory[this.numofmoves-
Ten THIS.NUMOFMOVES/50 * 50]);
One this.drawboard (this.gr);
12}
13}
14
15
16public void C () {
if (this.p > 0) {
THIS.P = this.p-1;
if (this.r.length >= 2)
THIS.R = this.r.substring (0, this.r.length-2);
THIS.A (THIS.Q[THIS.P-THIS.P/50 * 50]);
THIS.A (THIS.E);
23}
24}
25
What is the difference between the two methods?
There is also a tool xenocode the Enterprise, this tool is good, unfortunately, all the function names and namespace names are encrypted, in use when the use of
1class Program
2 {
3 public static void Main ()
4 {
5//loading assembly, test.exe to the confused assembly file name.
6 Assembly asm = Assembly.LoadFrom (@ "Test.exe");
7
8//Get Xenocode Insert decryption type (including its namespace), corresponding to the previous string of the class name, each confusing result may be different.
9 Type type = ASM. GetType ("x293b01486f981425.x1110bdd110cdcea4");
10
11//String parameters and decryption parameters
object[] Parameters = {"\udbac\ue2b7\ue9bb\uf0af\uf7b8\ufeb3\u05a8\u0c61", 0x555ddb55};
type[] Paramtypes = new type[parameters. Length];
for (int i = 0; i < parameters. Length; i++)
Paramtypes[i] = parameters[i]. GetType ();
16
17//Call decryption method
BindingFlags flags = BindingFlags.Public | bindingflags.static;
MethodInfo method = Type. GetMethod ("_D574BB1A8F3E9CBC", flags, NULL, paramtypes, NULL);
Object result = method. Invoke (null, parameters);
21st
22//Show decryption results
Console.WriteLine (result);
24
Console.WriteLine ("Press Enter key to exit");
Console.ReadLine ();
27}
28}
29
Don't know if this is protecting our assemblies or are we messing with our developers?
There are other software that is also trying to find ways to protect our assemblies, VS. NET has been out so long, there is no ideal tool out, I would like to know the way to protect our assembly?