我想编辑第一条指令并将其更改为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]
这里到底出了什么问题?如何保持其余代码完好无损?
答案 0 :(得分:4)
看起来很有效,但反汇编程序并没有将数据解释为指令。这可能是因为前面的jmp
指令 - 反汇编程序看到它后面的代码永远不会到达,所以它假定它实际上不是代码(因此将其解释为直接数据)。