作者enonrick (EnonRick)
看板C_and_CPP
标题Re: [问题] 无法了解shell code执行程式
时间Mon Jul 11 16:28:30 2016
※ 引述《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://webptt.com/cn.aspx?n=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