Hi,

If this group is all for helping people use Cecil, its purpose is not
to debug other people code.

If you want professional services around Cecil you can contact me privately.

Thanks!

Jb

On Thu, Jan 8, 2015 at 5:11 PM, Reh Gina <[email protected]> wrote:
> I would like to kill my computer, but for now I will go home and restart
> tomorrow. Thanks for your help, would it be possible you'll help me a little
> bit more?
>
> Am Donnerstag, 8. Januar 2015 17:08:27 UTC+1 schrieb Reh Gina:
>>
>> Now I replace the ret instruction by using following code
>> [....]
>>
>>
>>       Instruction popFTraceVariableInstruction =
>> Instruction.Create(OpCodes.Stloc, fTraceVar);
>>       //Pop a value from stack and store into local variable at index.
>>       ilProcessor.InsertAfter(newConstructorInstruction,
>> popFTraceVariableInstruction);
>>
>>       var endFinally = Instruction.Create(OpCodes.Endfinally);
>>       var leave = Instruction.Create(OpCodes.Leave, endFinally);
>>       var ret = Instruction.Create(OpCodes.Ret);
>>
>>       for (int i = 0; i < med.Body.Instructions.Count; i++)
>>       {
>>         Instruction instr = med.Body.Instructions[i];
>>         //Console.WriteLine(instr.ToString());
>>         if (instr.OpCode == OpCodes.Ret)
>>         {
>>           Instruction previous = instr.Previous;
>>           ilProcessor.Remove(instr);
>>           ilProcessor.InsertAfter(previous,
>> Instruction.Create(OpCodes.Leave, ret));
>>         }
>>       }
>>
>>
>>       //////// Start Finally block
>>       Instruction loadFTraceVarInstruction =
>> Instruction.Create(OpCodes.Ldloca, fTraceVar);
>>       ilProcessor.InsertAfter(med.Body.Instructions.Last(),
>> loadFTraceVarInstruction); //Loads local variable onto stack
>>       //ilProcessor.InsertBefore(lastInstruction,
>> loadFTraceVarInstruction); //Loads local variable onto stack
>>
>> [...]
>> [...]
>>
>>   ilProcessor.InsertAfter(callDisposeInstruction, endFinally);
>>       //ilProcessor.InsertAfter(leave, endFinally);
>>       Instruction nopInstruction = Instruction.Create(OpCodes.Nop);
>>       ilProcessor.InsertAfter(endFinally, nopInstruction);
>>       ilProcessor.InsertAfter(nopInstruction, ret);
>>
>>       ///////// End finally block
>>
>>       var handler = new ExceptionHandler(ExceptionHandlerType.Finally)
>>       {
>>         TryStart = med.Body.Instructions.First(),
>>         TryEnd = callDisposeInstruction,
>>         HandlerStart = callDisposeInstruction,
>>         HandlerEnd = nopInstruction,
>>         //CatchType = mod.Import(typeof(Exception)),
>>       };
>> [...]
>>
>> PEVerify says:
>> [IL]: Error:
>> [O:\bin\x64\Debug\MeVis.BizLogic.Applications.LiverAnalysis.Viewing.ViewingCP.dll
>> :
>> MeVis.BizLogic.Applications.LiverAnalysis.Viewing.ViewingCP.AbstractTaskStepBEHandler::Dispose][offset
>> 0x000000A9] Stack underflow.
>> [IL]: Error:
>> [O:\bin\x64\Debug\MeVis.BizLogic.Applications.LiverAnalysis.Viewing.ViewingCP.dll
>> :
>> MeVis.BizLogic.Applications.LiverAnalysis.Viewing.ViewingCP.AbstractTaskStepBEHandler::set_IsActive][offset
>> 0x00000027] jmp / exception into the middle of an instruction.
>> [IL]: Error:
>> [O:\bin\x64\Debug\MeVis.BizLogic.Applications.LiverAnalysis.Viewing.ViewingCP.dll
>> :
>> .....
>>
>>
>> ARRRRGGGHHHHH
>>
>> Am Donnerstag, 8. Januar 2015 16:35:31 UTC+1 schrieb Jb Evain:
>>>
>>> The error means you can not have a ret instruction inside a protected
>>> block.
>>>
>>> It means that if you're injecting protected blocks, you must make sure
>>> that rets in them are replaced by into leave opcodes, that are jumping
>>> outside of the protected block where you'll be able to return.
>>>
>>> I'm afraid there's nothing built-in for this, you'll have to implement
>>> it.
>>>
>>> Jb
>>>
>>> On Thu, Jan 8, 2015 at 4:27 PM, Reh Gina <[email protected]> wrote:
>>> > Something with a return which ist not correct in try block, but how to
>>> > I
>>> > remove it. Trying this to get work for almost 2 weeks
>>> >
>>> > Am Donnerstag, 8. Januar 2015 16:25:13 UTC+1 schrieb Reh Gina:
>>> >>>
>>> >>> Now the correct file attached
>>> >
>>> > --
>>> > --
>>> > --
>>> > 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.

-- 
-- 
--
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