A couple things I noticed while running through the MathLib.dll example
1. MathClass should extend System.ValueType instead of System.Object. This is required as we are declaring it as a ValueType in MathExe.
2. The ldarg.0 needs and max stack changed to 2 otherwise the ret tries to return the this reference
Also to compile a dll you can use the /dll switch with ilasm.
what happens is I'm doing an obfuscator C # code, but only metadata, and good'm utlizando monocecil, but I have a lot of knowledge in il, and good is like changing the names of the methods, properties and fields, but the arguments / method parameters will not change, and a friend told me that you can not change just like that, you can not because crashing the program, told me that the only solution is to make a proxy, but it is implemented , and do not intend to give me the answer, just tell me I have to study to learn to do that
"IL itself is in the binary format which means it can't be read by the human. But as other binary (executable) code have an assembly language, so the same way IL also has an assembly language known as IL Assembly (ILAsm)"
I thought execution process (in general) is:
1) compiling from .NET language (e.g. C#) to IL
2) compiling IL by JIT on fly to native CPU instructions
3) running code
I confused because I never heard that "IL itself is in the binary format" and "IL also has an assembly language known as IL Assembly (ILAsm)"
Can you please give me some related links or explanation?
Hey great work!!
Thank you for posting this, I'm sure you have caught a glimpse from interested people on this stuff, like myself.
Machine code / CIL [binary] is readable however. (although not really feasible) [See intro]