Hi,

What does peverify say on the resulting binary?

Jb

On Mon, Nov 17, 2014 at 3:17 PM, BlackSky Blacksky <[email protected]>
wrote:

> Hey guys,
>
> I am trying to create a switch statement which should return a string
> value.
> A similar example what I am trying to reproduce could look like this:
>
> <http://puu.sh/cUuAi/e3f8482007.png>
>
>
> That is my attempt creating the switch statement:
>
>
> private static MethodDefinition CreateSwitchMethod(AssemblyDefinition
> AssemblyDef, string ReturnValue, int AmountOfCases)
>         {
>             // Create a new Methoddefinition
>             MethodDefinition NewMethod = new
> MethodDefinition("SwitchMethodTest", MethodAttributes.Public |
> MethodAttributes.Static, AssemblyDef.MainModule.Import(typeof(string)));
>
>             // Create Switch Method Body
>             ILProcessor ilp = NewMethod.Body.GetILProcessor();
>             List<Instruction> InstrList = new List<Instruction>();
>             Instruction[] Switches = new Instruction[5];
>
>             Switches[0] = ilp.Create(OpCodes.Ldstr, " ");
>             Switches[1] = ilp.Create(OpCodes.Ldstr, " ");
>             Switches[2] = ilp.Create(OpCodes.Ldstr, " ");
>             Switches[3] = ilp.Create(OpCodes.Ldstr, ReturnValue);
>             Switches[4] = ilp.Create(OpCodes.Ldstr, " ");
>
>             // Add Isntructions to methodbody
>             InstrList.Add(ilp.Create(OpCodes.Ldc_I4, 3));
>             InstrList.Add(ilp.Create(OpCodes.Stloc_0));
>             InstrList.Add(ilp.Create(OpCodes.Ldloc_0));
>             InstrList.Add(ilp.Create(OpCodes.Stloc_1));
>             InstrList.Add(ilp.Create(OpCodes.Ldloc_1));
>             InstrList.Add(ilp.Create(OpCodes.Switch, Switches));
>             InstrList.Add(Switches[0]);
>             InstrList.Add(ilp.Create(OpCodes.Ret));
>             InstrList.Add(Switches[1]);
>             InstrList.Add(ilp.Create(OpCodes.Ret));
>             InstrList.Add(Switches[2]);
>             InstrList.Add(ilp.Create(OpCodes.Ret));
>             InstrList.Add(Switches[3]);
>             InstrList.Add(ilp.Create(OpCodes.Ret));
>             InstrList.Add(Switches[4]);
>             InstrList.Add(ilp.Create(OpCodes.Ret));
>
>             foreach (Instruction Instr in InstrList)
>             {
>                 NewMethod.Body.Instructions.Add(Instr);
>             }
>
>             return NewMethod;
>         }
>
>
> And thats how I call it:
>
>
>  MethodDefinition MethodDef = CreateSwitchMethod(AssemblyDef, "Test with
> Switch", 3);
>
>
> The problem is that the output is somehow invalid:
>
> <http://puu.sh/cUuGi/c1d63f837f.png>
>
> <http://puu.sh/cUuF1/f318e66733.png>
>
>
> Can someone explain me why that happens and how I can fix that?
>
>  --
> --
> --
> mono-cecil
> ---
> You received this message because you are subscribed to the Google Groups
> "mono-cecil" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
-- 
--
mono-cecil
--- 
You received this message because you are subscribed to the Google Groups 
"mono-cecil" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to