能力值:
( LV2,RANK:10 )
|
-
-
2 楼
对不起C语言不是asm
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
eax放的是C语言的函数返回值,也可以放其他,可以放各种32位类型变量
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
怎么会是这样啊?
我的意思是这样的. CrackMe中有这样的汇编代码.
MOV EAX, DWORD PTR [00401000]
SHL AX, 3
SHL AL, 1
SHR AH, 2
求EAX最后的值.
我想用C语言来实现这个算法.
DWORD dwEAX = XXX;
下面应该如何计算才能得到与汇编代码相同的算法啊?
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
这个用内嵌汇编会简单点吧,c语言要取出32位数的其中一部分进行操作应该要多定义几个变量吧
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
虽然罗嗦了点,但这样应该可以吧?
DWORD dwEAX;
dwEAX = dwEAX << 3;
dwEAX = (dwEAX & 0xFFFFFF00) | ((dwEAX & 0x000000FF) << 1) & 0x000000FF);
dwEAX = (dwEAX & 0xFFFF00FF) | ((dwEAX & 0x0000FF00) >> 2) & 0x0000FF00);
|
能力值:
( 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
貌似如此吼吼
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
LOWORD
LOBYTE
HIWORD
HIBYTE
|
能力值:
( LV3,RANK:20 )
|
-
-
9 楼
asm中压根没有数据类型一说
只有 宽度的不同罢了
int 和 char 其实是一样的
|
|
|