[問題] 請問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