I have followed the guide to use Get/SetILFunctionBody posted a while ago by Jan Kotas. The code works fine in my Rotor build.
I would like to modify the code so that the Main method displays a "Please Help" message before returning. i.e. if the original Main method displays "Hello World", then the new code will make it display "Hello World" AND "Please Help". In other words, the difference with Jan's code is that instead of replacing the original Main method's IL by a new IL to display "Hello World", my intention is to keep the original Main method's IL and add other new ILs (in this case, IL to display "Please Help" message). I have managed to augment the IL code for displaying "Please Help" before Main returns. Original IL code: 13 30 01 00 0b 00 00 00 00 00 00 00 72 01 00 00 70 28 02 00 00 0a 2a My modified IL code: 13 30 01 00 0b 00 00 00 00 00 00 00 72 01 00 00 70 28 02 00 00 0a [72 1c 00 00 70 28 02 00 00 0a] 2a The brackets are included only for easy reading. Basically, I copied the original bytecode into a new (BYTE *) variable, say BYTE *X. Then, the last original bytecode (i.e. 2a) is copied to be the last bytecode of X. In between, I inserted the [72 1c 00 00 70 28 02 00 00 0a]. However, the Rotor complained: "VALIDATION FAILS: inPtr + sizeof(unsigned int) <= inBuffEnd At World.HelloWorld::Main at a Unhandled Exception: System.InvalidProgramException: Common Language Runtime detected an invalid program. at World.HelloWorld.Main()" I figured that the new IL is not valid since, obviously, the size of the IL code is larger. #1 How would we determine how much bigger? #2 How would we set the new size back using the SetILFunctionBody function? #3 Any other (better) way to instrument the method's IL code? Thank you beforehand. =================================== This list is hosted by DevelopMentorŪ http://www.develop.com NEW! ASP.NET courses you may be interested in: 2 Days of ASP.NET, 29 Sept 2003, in Redmond http://www.develop.com/courses/2daspdotnet Guerrilla ASP.NET, 13 Oct 2003, in Boston http://www.develop.com/courses/gaspdotnet View archives and manage your subscription(s) at http://discuss.develop.com