1

我想编辑第一条指令并将其更改为jmp 100h(给定或占用几个字节)mov edi,edi需要 2 个字节和jmp 100h需要 5 个字节(如果我错了,请纠正我)

我编辑机器代码jmp 100h并添加一个nop以将其四舍五入为 6 个字节。

.text:08048DD5                 mov     edi, edi
.text:08048DD7                 mov     edi, edi
.text:08048DD9                 mov     edi, edi
.text:08048DDB                 mov     edi, edi
.text:08048DDD                 mov     edi, edi
.text:08048DDF                 mov     edi, edi
.text:08048DE1                 mov     edi, edi
.text:08048DE3                 mov     edi, edi
.text:08048DE5                 add     [ebp+var_C], 1  ; Add
.text:08048DE9                 mov     eax, offset format ; "Message %d: %s"
.text:08048DEE                 lea     edx, [ebp+s]    ; Load Effective Address
.text:08048DF4                 mov     [esp+8], edx

结果如下:

.text:08048DD5                 jmp     loc_8048D41
.text:08048DD5 ; ---------------------------------------------------------------------------
.text:08048DDA                 db 90h
.text:08048DDB                 db 89h, 0FFh
.text:08048DDD                 db 89h, 0FFh
.text:08048DDF                 db 89h, 0FFh
.text:08048DE1                 db 89h, 0FFh
.text:08048DE3                 db 89h, 0FFh
.text:08048DE5 ; ---------------------------------------------------------------------------
.text:08048DE5                 add     [ebp+var_C], 1
.text:08048DE9                 mov     eax, offset aMessageDS ; "Message %d: %s"
.text:08048DEE                 lea     edx, [ebp+s]
.text:08048DF4                 mov     [esp+8], edx
.text:08048DF8                 mov     edx, [ebp+var_C]

这里到底出了什么问题?我如何保持其余代码完好无损?

4

1 回答 1

4

看起来它可以工作,但反汇编程序没有将数据解释为指令。这可能是因为前面的jmp指令 - 反汇编程序看到它之后的代码永远不会到达,所以它假设它实际上不是代码(因此将其解释为直接数据)。

于 2013-07-18T13:58:50.920 回答