2014-07-25 31 views
-1

我有以下代码: enter image description here更改装配操作码

我使用IDA PRO。我试图修补这个代码,并更改线路 MOV EAX,[RAX + 10H]为MOV EAX,3 MOV EAX,3是B8 03 00

我这样做的十六进制编辑器,当我代码从

8B 40 10 8D 48 01 41 89 4B 10 EB 05 B8 01 00 00

更改为

B8 03 00 8D 48 01 41 89 4B 10 EB 05 B8 01 00 00

我得到B8 03 00 8D 48在同一行,这是一个不同的命令比我的意图。

我在做什么错?我怎么能做这个改变?

enter image description here

+2

这是一个64位程序,您的耳朵之间的汇编程序以16位模式运行。 –

+0

它是64位,但我不明白你的回复。我应该怎样做才能使它“mov eax,3”而不是当前的代码? – dandan

回答

4

这些是在64位模式中的机器代码mov *a*, 3

mov eax, 3: b8 03 00 00 00 
mov ax, 3: 66 b8 03 00 
mov al, 3: b0 03 

正如你可以看到mov eax, 3需要字节。你可以尝试:

6a 03 push 3 
58  pop rax 

但是你会遇到下面的指令lea ecx, [rax+1]麻烦!

+0

+1,但删除最后一行。以下'lea'指令不解除引用。 – user1354557