首页
社区
课程
招聘
[求助]同汇编语句不同的十六进制
发表于: 2011-10-12 12:15 4163

[求助]同汇编语句不同的十六进制

2011-10-12 12:15
4163
在逆向一个程序的时候发现如语句:
812C24 05000000   sub     dword ptr [esp], 5
但是我用MASM写出来的代码后用OD调试发现会变成如下:
832C24 05               sub     dword ptr [esp], 5

请问同样的汇编语句,不同的十六进制,如果我想实现和第一条一样的十六进制那么我在MASM里面应该怎么操作呢???不用DB这些,还是在编译的时候应该加什么选项呢?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 188
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
用的指令不一样, 81 对应的后面是dword类型的操作数
而83 则是byte的操作数

这里你不能用db的类似花指令的trick, 83指令指认1byte 而81认为后面是dword

这里应该是一个编译器自动选择最优指令的过程

就行c/c++ 中的 乘除 2的指数幂计算都被转化为移位操作一样

=================
如果你的操作数大于 0xffff 使用的就是812c24 ff001000 的形式了
当然,可能还有 822c24 xxxx 的指令形式 这里只是猜测一下
2011-10-12 12:38
0
雪    币: 260
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
同一条指令不同的机器码,很正常,很多指令是上下文相关的!
2011-10-13 09:13
0
游客
登录 | 注册 方可回帖
返回
//