Показать сообщение отдельно

  #4  
Старый 08.12.2009, 01:01
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


По умолчанию

При этом комбинация
Код:
int *ret;
ret=(int *)&ret+2; //  ret будет равняться адресу созврата из функции main
printf("Shellcode Length is : %d\n",strlen(shellcode));
(*ret)=(int)shellcode; // перебьем адрес возврата на шелкод
return 0; // завершим функцию main. А т.к. адрес возврата мы подменили то вызовется шелкод
т.е. это пример вызова этого кода через срыв стека.

Передача параметров идет так:
Код:
mov         ebp,esp // запомним адрес вершины стека
// поместим в стек 
push        20657865h //
push        2E646D63h // это типа cmd.exe
lea         eax,[ebp-8] // eax будет равняться указателю на начало строки cmd.exe которую закинули в стек
push        eax  // занесем параметр для WinExec а именно адрес имени проги. В нашем случае cmd.exe

Причем тут фаер?

Последний раз редактировалось slesh; 08.12.2009 в 01:10..
 
Ответить с цитированием