Can I user mono's AOT feature to natively "pre-compile" .NET DLLs (and or EXEs) to make them harder to reverse engineer?
If so, how do I get mono/AOT working in Windows 7? (I'm running x64 but the app is targeting x86 explicitly.) I just installed Mono 2.6.3 and MinGW 5.1.6 and I'm trying to AOT compile an exe (or a dll, it doesn't matter).
I get screens and screens of error messages:
C:\Users\jupdike\AppData\Local\Temp\mono_aot_XSDEAV:533: Error: junk at end of line, first unrecognized character is `H'
C:\Users\jupdike\AppData\Local\Temp\mono_aot_XSDEAV:539: Error: unknown pseudo-op: `.local'
C:\Users\jupdike\AppData\Local\Temp\mono_aot_XSDEAV:546: Warning: .size pseudo-op used outside of .def/.endef ignored.
C:\Users\jupdike\AppData\Local\Temp\mono_aot_XSDEAV:546: Error: junk at end of line, first unrecognized character is `H'
I can open the generated assembly code but I have no idea why the assembler chokes on it:
.size HappyForms_TextForm__ctor_string_string_string_bool,.-HappyForms_TextForm__ctor_string_string_string_bool (533)
_.Lme_a:
.Lme_a:
.balign 16
_.Lm_b:
.Lm_b:
.local HappyForms_TextForm_get_InputValue (539)
_HappyForms_TextForm_get_InputValue:
HappyForms_TextForm_get_InputValue:
.byte 85,139,236,131,236,8,139,69,8,139,128,216,2,0,0,131,236,12,80,139,0,144,144,144,255,144,200,2,0,0,131,196
.byte 16,201,195
.size HappyForms_TextForm_get_InputValue,.-HappyForms_TextForm_get_InputValue (546)
(numbers above in parens are line numbers)
It doesn't look like this will solve my problem and it also doesn't look like mono AOT is supported on Windows at this time. See this question for more info.