Ghidra处理器与反编译器功能详解
1. 处理器模块扩展
在指令中添加一个立即32位常量需要额外4个字节进行编码。我们将接下来的4个NOP指令替换为按小端序正确编码imm32的值,示例如下:
".byte 0x0f, 0x01, 0xc5, 0x08, 0xb8, 0xdb, 0xee, 0x0f;"
"nop;"
"nop;"
重新加载文件后,VMXPLODE会以另一种方式退出。如下所示(显示p代码),ECX现在的值为0xFEEDBB8:
00100726 0f 01 c5 VMXPLODE ECX,0xfeedbb8
08 b8 db
ee 0f
ECX = COPY 0xfeedbb8:4
CALLOTHER "vmxplode"
我们通过为架构添加两个全新的寄存器来结束处理器模块的示例。回顾本章前面32位通用寄存器的定义:
define register offset=0 size=4 [EAX ECX EDX EBX ESP EBP ESI EDI];
寄存器的定义需要偏移量、大小和寄存器列表。在查看当前已分配的
超级会员免费看
订阅专栏 解锁全文
3204

被折叠的 条评论
为什么被折叠?



