Idapython - 取消定义指令

逆向工程 艾达 蟒蛇
2021-06-14 11:02:48

我有一个从address+1以后定义的指令和一个字节address我想从address+1以后取消定义指令,并通过address使用MakeCode或类似的东西重新定义它们

到目前为止,我还没有找到任何取消定义指令的函数。关于我应该在哪里寻找的任何指示?

1个回答

这是我不久前编写的一些代码的 POC。

def fixTheJmpCalls():
    # kind of slow to loop through all the functions and instructions but it works 
    # flaw: only defined functions will be traversed.this. 
    for funcea in Functions( SegStart( here() ), SegEnd( here() ) ):
        for eai in FuncItems(funcea):
            if GetMnem(eai) == "jmp" or GetMnem(eai) == "call":
                if GetDisasm(eai)[-2:-1] == "+" and GetDisasm(eai)[-1:].isdigit():
                    print "Broken Instruction: %X"%eai, GetDisasm(eai)
                    code_addr = GetOperandValue(eai, 0) 
                    fix_addr = code_addr -1 
                    MakeUnkn(fix_addr,1)
                    MakeCode(code_addr)