Dmitry
отлучусь на несколько часов, ещё подумаю
Anonymous
привет
Anonymous
👋🏿
Anonymous
есть у когонить реализация АЕС 256 бит под масм ?
Anonymous
или насм
Anonymous
ide scsi
Anonymous
😏
Dmitry
чуваки, теперь нас много, давайте все вместе подумаем
ide scsi
sata ata dog og matras sas
Dmitry
ну, я вообще относительно закрепленного сообщения, а так да, подумал, это хорошо, какие идеи? :)
void *
система: Windows (от XP до 10, решение должно быть универсальным), битность - в данном случае x86 (для x64 тоже нужно будет, но впоследствии). суть задачи: есть процесс, у него есть alertable поток. есть метод, позволяющий, избегая VirtualAllocEx и WriteProcessMemory, записать в другой процесс в RW память некоторые данные. почему RW? да потому что RWX вы не найдете в только что загруженном экзешнике по дефолту, а RW дофига (в данном случае используется кусочек выравнивания в конце секции .data в kernelbase.dll). само собой, мы не можем исполнять тот код, который копируем туда. поэтому идея заключается в генерации цепочки ROP и записи этой цепочки в другой процесс. если кто не знает что такое ROP, поясняю - в коде (например в коде той же ntdll или kernelbase.dll) ищутся небольшие кусочки кода типа (1) "mov eax, 1 / ret", (2) "add ebx, 2 / ret" - ну, наподобие этого. затем формируется стек, в котором лежит адрес инструкции (1), потом адрес инструкции (2). при исполнении ret произойдет прыжок на инструкцию 1, выполнится mov eax, 1, потом произойдет прыжок на инструкцию 2, выполнится add ebx, 2 - снова ret, снова прыжок, ну, суть понятна, можно исполнить какой-то код кусочками. идея заключается в том, чтобы, после того, как цепочка ROP записана в ту RW память, передать в процессе управление на какой-нибудь ret, при этом в esp подставить адрес этой ROP цепочки. тогда всё получится. в данном случае речь идет о новой технике Atom Bombing, кто интересуется - может погуглить и почитать. суть в том, что там, для того, чтобы заставить исполняться ROP цепочку, esp устанавливается SetThreadContext'ом (туда тупо пишется адрес этой цепочки), а eip - на какой-нибудь ret в коде. моя задача: мне кажется решение с SetThreadContext'ом некрасивым (само использование этой функции уже жёсткое палево), я хочу сделать по-другому. идеально было бы так: я делаю QueueUserAPC, первым аргументом передаю адрес ROP-цепочки, а сама APC-функция - это код, найденный в чужом процессе, примерно такой: mov esp, [esp+4] / ret. или xchg esp, [esp + 4] / ret. то есть понимаете? он берет значение для esp из первого аргумента, и вызывает ret (первый адрес с ROP цепочки выталкивается, исполнение началось). НО! я нихуя не нашёл в коде (искал в kernelbase.dll, ntdll.dll, kernel32.dll) ни mov esp, [esp+4] / ret ни xchg esp, [esp + 4] / ret. также я не нашел что-нибудь тоже подходящее типа pop eax ; pop esp ; ret. да что там - даже два байтика инструкций pop esp ; ret - встречаются только в ЕДИНСТВЕННОМ ЭКЗЕМПЛЯРЕ. и то в Windows 10. а в Windows 7 не встречаются. задача остаётся прежней: я делаю QueueUserAPC на чужой процесс, могу установить любой адрес. в качестве параметра для APC - адрес ROP-цепочки. мне нужно этот адрес запихнуть в esp и исполнить инструкцию ret. или же может как-то можно обойти иначе, но в голову пока ничего не пришло.
Думаю, не встречаются из-за того, что перед ret ещё может стоять какой-нибудь leave или вроде того
Dmitry
ну смотри, ret он же вовсе не обязательно ret, это может быть просто значение "C3" в составе другой команды.
Dmitry
ну типа там mov eax, 1122C344 - я могу джампнуться на середину этой команды, на C3, и это будет означать, что я джампнулся на инструкцию ret
void *
Понятно
Dmitry
короче такие дела, нужно просто передать в другой процесс управление, запихнув в esp произвольный адрес и выполнив инструкцию ret - вкратце, задача такая
Dmitry
произвольный - в том смысле, что не что-то рандомное, а что-то определенное, но при этом мной определенное :)
Dmitry
просто задача в общем виде, "запихнуть в esp некое значение X", где X может быть любым, да
Seva
Ассемблер тяжело учить и понять ?
Dmitry
нет, язык ассемблера не тяжело учить и не тяжело понимать, про тяжело - это тебе к haskell
Seva
Я как то вывод Hello World на ассемблере видел....
Dmitry
ну и ничего, пусть кода больше, зато всё логично и понятно
Seva
Там eax mov какие-то
Dmitry
mov eax скорее
Dmitry
да нихера нет сложного, если ты врубаешься, как процессор работает
Dmitry
там же набор элементарных операций
Seva
А есть книжки для чайников самоварников как я?
Dmitry
#book
Seva
Мерси
Anonymous
привет всем..
Anonymous
посоветуйте метод самоудаления программы?
Anonymous
под вин
分解物質
rm -f /path/to/program ?
Anonymous
Удаление из ОЗУ или ЖД?
Anonymous
жд
Anonymous
да я тут запилил вот что
Anonymous
Anonymous
А если просто сам файл удалить(функциями си),то это не вариант? Просто программа как бы уже в ОЗУ находится
Anonymous
пробовать переместить в NULL MoveFile толку 0
Anonymous
А move разве не копирует файл?
Anonymous
Ща уточню в посольстве
Anonymous
😉
Anonymous
А что функция возвращает?
Anonymous
Полюбому 0
Anonymous
Ох уж этот WinApi
Anonymous
ну просто так не удалось удалить.. поэтому через смд думаю удалять
Anonymous
А deletefile не вариант?
Anonymous
прямо во время исполнения:
Anonymous
?
Anonymous
тото и оно
Anonymous
Паля
Anonymous
но можно хаками
Anonymous
переместить в другое место во время исполнения получаетя
Anonymous
как?
Anonymous
Походу в винде логика напрочь отсутсвует
Anonymous
А ты хотя бы пробовал?
Anonymous
да
Anonymous
переместить
Anonymous
да
Anonymous
Не, удалить?
Anonymous
перемещение во время исполнения получается
Anonymous
Походу в винде логика напрочь отсутсвует
в винде нельзя одновременно писать и читать один файл
Anonymous
не удалить
Anonymous
а перместить
Anonymous
MoveFileEx(bin, NULL, NULL); по идеи должно удалить
Anonymous
но нет
Anonymous
https://stackoverflow.com/questions/1606140/how-can-a-program-delete-its-own-executable
Anonymous
Но ты же хотел само удаление сделать?
Anonymous
да
Anonymous
программа запустилась и сама себя удалила
Anonymous
сделал через батник
Anonymous
винда она такая, да
Anonymous
😉😉😉
Anonymous
других вариков небудет?
Anonymous
Void *windows; Windows = &OneBigKostil
Anonymous
😏😏
Anonymous
виросы писать сложна 😒
Anonymous
да и не говори...