2013-07-23 9 views
2

저는 .NET의 응용 프로그램을 작성하여 모든 방법의 지침을 편집하고 있습니다. OpCode에 ldstr을 넣고 피연산자에 문자열을 넣고 싶습니다. Mono.Cecil을 사용하면 피연산자를 설정할 수 있지만 문제는 OpCode가 ReadOnly 속성이라는 것입니다. OpCode를 편집 할 방법이 있습니까? 명령어의 opcode를 편집하려면 어떻게해야합니까?

Dim assembly1 As AssemblyDefinition 
assembly1 = AssemblyDefinition.ReadAssembly(rute) 
For Each modDef In assembly1.Modules 
    For Each typeDef In modDef.Types 
     For Each mDef In typeDef.Methods 
      For i = 0 To mDef.Body.Instructions.Count - 1 
      mDef.Body.Instructions(i).OpCode.Code = Mono.Cecil.Cil.Code.ldstr 
      mDef.Body.Instructions(i).Operand = "Text" 
      Next 
     Next 
    Next 
Next 

감사 많은이 들어 나는이 코드를 사용!

답변

1

명령어 코드를 변경하려면 Mono.Cecil.Cil.OpCodes enum을 사용할 수 있습니다. 삽입하거나 새로운 지침을 방출 할 경우

mDef.Body.Instructions(i).OpCode = Mono.Cecil.Cil.OpCodes.Ldstr; 

, 당신은 Mono.Cecil.Cil.ILProcessor 객체를 사용할 수 있습니다.

mDef.Body.GetILProcessor().InsertBefore(targetInstruction, Instruction.Create(OpCodes.Ldstr, "New string"));