的,我已經看到了下面的例子:認識在shellcode的教程中的shellcode例如
main(){
exit(0);
}
當時的想法是創建一個出口() - 系統調用。 這樣,那麼他們所生產的組件:
Section .text
global _start
_start:
mov ebx, 0
mov eax, 1
int 0x80
我明白這一點。 0是我們在ebx中存儲的exit()的參數,1是退出系統調用的編號,0x80我們將CPU更改爲內核模式並執行系統調用。
在那之後,他們讓生產這是該操作碼:
bb 00 00 00 00
b8 01 00 00 00
cd 80
然後,他們翻譯成C語言,看起來像這樣:
char example[] = "\xbb\x00\x00\x00\x00"
"\xb8\x01\x00\x00\x00"
"\xcd\x80"
int main(){
int *pointer;
pointer = (int *)&pointer+2;
(*pointer) = (int)example;
}
所以,我的理解是,他們把操作碼放在char數組中,但我不明白他們在main()方法中做了什麼。 第一行是好的。但是他們想要在第二和第三行表達什麼?
此致
只需輸入我自己的答案,並通知我,已經有一個.. – starrify 2014-09-27 15:35:44