我有一个从
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)
评论
MakeUnkn()(请参阅atfensivecomputing.net/papers/IDAPythonIntro.pdf第48页)可能是您正在寻找的东西。