high6 Posted August 17, 2010 Share Posted August 17, 2010 Open "Mono.Cecil.Cil/CodeWriter.cs"Find "ComputeMaxStack"Add this line above it "if (!CodeWriter.FixedMaxStack)"Add field to the CodeWriter class "public static bool FixedMaxStack = false;"CodeWriter.FixedMaxStack = true;Reason for this patch is because otherwise Cecil will attempt to recompute the MaxStacks. It does not work on obfuscated code. For example ldc_i4 0 ldc_i4 0 ldc_i4 0 ldc_i4 0 br lb2lb1: retlb2: ldc_i4 0 ldc_i4 0 ldc_i4 0 ldc_i4 0 br lb1Cecil will compute it as 5 when it really is 8. Causing a stack overflow (InvalidProgramException) when it runs. Link to comment
sirp Posted September 11, 2010 Share Posted September 11, 2010 (edited) thx 4 info...but i cant find ComputeMaxStack in recent SVN checkout of the CodeWriter.cs Edited September 12, 2010 by sirp Link to comment
high6 Posted September 22, 2010 Author Share Posted September 22, 2010 It is ComputeStackSizenow Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now