首页
社区
课程
招聘
[旧帖] Delphi使用OD中的代码内嵌后的问题。 0.00雪花
发表于: 2010-1-16 15:12 3413

[旧帖] Delphi使用OD中的代码内嵌后的问题。 0.00雪花

2010-1-16 15:12
3413
从OD中取得如下汇编代码:
0055C10B   8A4405 B0        mov     al, byte ptr [ebp+eax-50]

该代码在IDA中如下:
CODE:0055C10B                 mov     al, [ebp+eax+var_50]

我的DELPHI代码中做如下内嵌BASM:
asm
    mov     al, byte ptr [ebp+eax-50h]                //使用OD中取出的代码
      DB      8Ah, 44h, 5h, 0B0h                             //强制使用机器码
end;

编译该程序并使用OD,结果显示如下:

00412A85  |. 8A4428 B0      mov     al, byte ptr [eax+ebp-50]    //使用OD中的代码汇编后的机器码发生变化,操作数从 B0 05 变成了 B0 28
00412A89  |. 8A4405 B0      mov     al, byte ptr [ebp+eax-50]

这是为什么?

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 18
活跃值: (80)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
因为爱~~所以爱~~
2010-1-16 17:09
0
雪    币: 424
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
不就是eax和ebp换了个位置么= = 这取决于编译器的实现吧。
编译器只保证最后运行结果是符合你原语句的,又不保证编译出来eax和ebp的顺序按照你写的排列
2010-1-16 17:32
0
雪    币: 191
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
那这2句使用上是相同效果吧。
2010-1-16 19:25
0
雪    币: 241
活跃值: (35)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
个人觉得100+200-50和200+100-50结果一样。你认为呢?
2010-1-27 21:02
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
只要最后的结果一样就行了
2010-2-11 14:34
0
游客
登录 | 注册 方可回帖
返回
//