首页
社区
课程
招聘
[旧帖] [求助]汇编的EAX在C语言中应该用什么数据类型啊? 0.00雪花
发表于: 2009-6-2 07:52 3642

[旧帖] [求助]汇编的EAX在C语言中应该用什么数据类型啊? 0.00雪花

2009-6-2 07:52
3642
声明
DWORD dwEAX;
可以吗?

还有个不明白的问题是.
EAX中的AX, 在C语言中dwEAX如何得到类似AX的值?
还有EAX中的AL, AH, 在C语言中如何通过dwEAX得到类似于AL, AH的值?

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 419
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
对不起C语言不是asm
2009-6-2 08:05
0
雪    币: 86
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
eax放的是C语言的函数返回值,也可以放其他,可以放各种32位类型变量
2009-6-2 08:38
0
雪    币: 153
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
怎么会是这样啊?
我的意思是这样的. CrackMe中有这样的汇编代码.
MOV EAX, DWORD PTR [00401000]
SHL AX, 3
SHL AL, 1
SHR AH, 2
求EAX最后的值.
我想用C语言来实现这个算法.
DWORD dwEAX = XXX;
下面应该如何计算才能得到与汇编代码相同的算法啊?
2009-6-2 08:46
0
雪    币: 140
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个用内嵌汇编会简单点吧,c语言要取出32位数的其中一部分进行操作应该要多定义几个变量吧
2009-6-2 12:27
0
雪    币: 293
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
虽然罗嗦了点,但这样应该可以吧?

DWORD dwEAX;

dwEAX = dwEAX << 3;
dwEAX = (dwEAX & 0xFFFFFF00) | ((dwEAX & 0x000000FF) << 1) & 0x000000FF);
dwEAX = (dwEAX & 0xFFFF00FF) | ((dwEAX & 0x0000FF00) >> 2) & 0x0000FF00);
2009-6-2 12:58
0
雪    币: 1283
活跃值: (46)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
MOV EAX, DWORD PTR [00401000]//就是DWORD a
SHL AX, 3// (a&0xFFH)<<3,应该是这么个东西,低16位的东西左移3位
SHL AL, 1//(a&0x0FH)<<1,
SHR AH, 2//(a&0xF0H)<<2
貌似如此吼吼
2009-6-2 13:40
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
LOWORD
LOBYTE

HIWORD
HIBYTE
2009-6-2 14:53
0
雪    币: 141
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
asm中压根没有数据类型一说
只有 宽度的不同罢了
int 和 char 其实是一样的
2009-6-2 18:03
0
游客
登录 | 注册 方可回帖
返回
//