看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《zarados (ner)》之銘言: : 今天在看一個簡單的小程式 程式目的是執行shell code : 但看不太懂 google關鍵字也下的不太好 沒有找到相關資訊 : 主要程式碼如下: : char code[] = "\x..\x.." : int main () { : int (*func)(); : func = (int(*)()) code; : (int)(*func)(); : } : shell code的部份我就不打了 主要是看不懂第二行到底再寫什麼 : 或可以告訴我要往哪個方向找 謝謝 runtime 初期就會把所有 function layout 到 user-space 裡,每個function 都是一 個啟始記憶體位址(設B),function call 時會從當前執行位址(設A) jump 到 B 的區塊執行,完畢從再回到位址A + 1,B裡的內容就是 machine code 以上例 int (*func)(); //宣告 function pointer func = (int(*)())code; //設定啟始位址,也就是預先寫好的 machine code (int)(*func)(); //function call -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.143.169 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1468225712.A.815.html ※ 編輯: enonrick (125.227.143.169), 07/11/2016 16:35:57 ※ 編輯: enonrick (125.227.143.169), 07/11/2016 16:41:30