`jmp` 对附加段的访问冲突
Access violation on `jmp` to appended segment
所以我使用 CFF 资源管理器将代码部分添加到 .exe
文件。我已将部分特征设置为 0x60000020
(可执行、可读、包含代码)并使用 IDA 在那里创建了一些虚拟代码。
但是,当我从原始 .text
段向该代码注入 jmp
时,我得到的只是访问冲突。我用 IDA 给二进制文件打补丁,所以它为我生成了偏移量,但似乎是对的:
jmp far ptr 6:75D100h
生成的操作码看起来也是正确的:
EA 00 D1 75 00 06 00
但是我一跳就- "The instruction referenced memory at 0xFFFFFFFF, memory can't be read"。我尝试了一些偏移量但无济于事;附加的段似乎已正确加载到内存中。
对于我在这里遗漏的任何提示,我将不胜感激:)
只是为了将此标记为已回答 - 正如@Jester 和@RossRidge 提出的那样,解决方案是删除 jmp far
。使用
jmp near ptr 75D100h
修复了一切。不得不说IDA的行为有点奇怪。
所以我使用 CFF 资源管理器将代码部分添加到 .exe
文件。我已将部分特征设置为 0x60000020
(可执行、可读、包含代码)并使用 IDA 在那里创建了一些虚拟代码。
但是,当我从原始 .text
段向该代码注入 jmp
时,我得到的只是访问冲突。我用 IDA 给二进制文件打补丁,所以它为我生成了偏移量,但似乎是对的:
jmp far ptr 6:75D100h
生成的操作码看起来也是正确的:
EA 00 D1 75 00 06 00
但是我一跳就- "The instruction referenced memory at 0xFFFFFFFF, memory can't be read"。我尝试了一些偏移量但无济于事;附加的段似乎已正确加载到内存中。
对于我在这里遗漏的任何提示,我将不胜感激:)
只是为了将此标记为已回答 - 正如@Jester 和@RossRidge 提出的那样,解决方案是删除 jmp far
。使用
jmp near ptr 75D100h
修复了一切。不得不说IDA的行为有点奇怪。