0
我想用Mono.Cecil注入一個方法。使用Mono.Cecil注入方法?
我的代碼是這樣的:
var worker = method.Body.GetILProcessor();
method.Body.Instructions.Clear();//Clear Old code
我想更換代碼,如:
return getCpu();
所以我寫:
List<Instruction> listStep = new List<Instruction>();
//listStep.Add(worker.Create(OpCodes.Nop));
//listStep.Add(worker.Create(OpCodes.Ldarg_0));
listStep.Add(worker.Create(OpCodes.Call,injectMethod));
//listStep.Add(worker.Create(OpCodes.Stloc_0));
//listStep.Add(worker.Create(OpCodes.Ldloc_0));
//listStep.Add(worker.Create(OpCodes.Br_S));
//listStep.Add(worker.Create(OpCodes.Stloc_1));
//listStep.Add(worker.Create(OpCodes.Ldloc_1));
listStep.Add(worker.Create(OpCodes.Ret));
foreach (var item in listStep)
{
worker.Append(item);
}
但沒有奏效。
我與IL混淆。有人可以幫助我嗎?非常感謝。
它到底如何不起作用?它有什麼作用?你是否嘗試過在修改後的程序集上運行peverify? – svick