的,我已经看到了下面的例子:认识在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