首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ida修改指令

使用ida修改指令
EN

Stack Overflow用户
提问于 2013-10-15 02:06:34
回答 1查看 560关注 0票数 0

我想使用idautils和/或idaapi更改指令的Op值。例如,我在内存中下载了一个二进制文件,并希望更改JMP语句的JMP地址(我知道跳转的位置,并且可以获得该语句)。我试着这样做:

代码语言:javascript
复制
i = ida.idautils.DecodeInstruction(addr)
op = i.Op1
op.addr = new_addr
i.Op1.assign(op)
print i.Op1.addr

但是地址没有改变。相反,如果我这样做了:

代码语言:javascript
复制
i = ida.idautils.DecodeInstruction(addr)
op = idaapi.op_t()
op.addr = new_addr
i.Op1.assign(op)
print i.Op1.addr

它可以工作,但是当我查看字节时(对范围(0,i.size)中的i使用idaapi.get_bytes(addr+i) ),它们没有改变。我希望更改该地址,并在读取字节时也看到此更改。

EN

回答 1

Stack Overflow用户

发布于 2013-10-23 01:04:36

尝试使用PatchByte (或idaapi.patch_byte)。然后,您应该可以使用idaapi.get_byte看到正确的值。对于单词、双字,甚至可变长度的缓冲区,都有等效的补丁函数。

(请注意,这需要知道您想要更改的指令的确切字节编码)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19366364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档