[问题] 请问linux小程式

楼主: liptonbin (我还存在耶)   2019-08-30 11:13:47
请教一下
最近在看linux code
底下的result,result1是怎么算出来的
为什么每次执行都不同
谢谢
#include <stdio.h>
main()
{
unsigned char page[4] = {0xaa,0xbb,0xcc,0xdd};
unsigned long result;
unsigned long result1;
result=((unsigned long)page & 0xffff0000) >> 16;
result1=(unsigned long)(page) & 0x0000ffff;
printf("result=%ld\n",result);
printf("result1=%ld\n",result1);
}
#./test
result=6924
result1=14832
#./test
result=55990
result1=36272
#./test
result=37106
result1=27808
作者: sarafciel (Cattuz)   2019-08-30 11:25:00
你直接用page是丢unsigned char *回来 也就是指标你如果是想让page内的值拆2byte出去给result应该这样写result=(*(unsigned long*)page & 0xffff0000) >> 16;另外long的长度是会变的 我猜你是用32bit的机器?
作者: Lipraxde (Lipraxde)   2019-08-30 19:13:00
我猜 64bit
楼主: liptonbin (我还存在耶)   2019-08-30 22:41:00
64bit没错
作者: dces4212 (flawless)   2019-09-01 16:20:00
PIE吗
作者: b0920075 (Void)   2019-09-01 19:02:00
aslr吧,stack 上aslr本来就会起作用
作者: ando5566 (风云变色)   2019-09-07 21:02:00
这时候你关掉小画家再执行又会变;重开机再执行也会变

Links booklink

Contact Us: admin [ a t ] ucptt.com