Dmitry
у меня вопрос скорее более широкий
Dmitry
как сделать это дело надежным
Dmitry
гитхаба нет
Dmitry
это же пока на стадии обсуждения :)
🦥Alex Fails
Можно там будет репку сделать)
Dmitry
можно :)
Dmitry
но вот сейчас хотя бы идею придумать
Dmitry
реализовать-то всё просто
分解物質
Обновлять спецификации AT&T не умеет, ты щитаеш?
🦥Alex Fails
система: 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. или же может как-то можно обойти иначе, но в голову пока ничего не пришло.
#task #intercept #asm #windows #rop
Dmitry
#rop ещё
Dmitry
если есть такой хештег :)
Dmitry
да
Dmitry
и длина адовая
分解物質
Обновлять спецификации AT&T не умеет, ты щитаеш?
так plan9 этож самый свежачок, unix как ос уже давно всё
Dmitry
длина операции 5 байт
так plan9 этож самый свежачок, unix как ос уже давно всё
Так может план9 слишком свежий, а в юниксе все так и было?
分解物質
http://man.cat-v.org/unix_10th/1/as чёт я не могу найти бумаги на которые ссылается ман по as из unixv10
Anonymous
ребята, привет
ребята, привет
Добрый вечер
Anonymous
у меня есть задача: совместить ассемблер и js так, чтобы они могли использовать переменные друг друга
Dmitry
ыыыыыыыыыыыыыыыыыыыыыыыыыыы!
Ничего лучше не придумал
Anonymous
нет)
Dmitry
/me орёт в голос
Ассемблер, в любом случае, имеет переменные жиэс
И без переменных
/me орёт в голос
/me орет в унисон
Anonymous
мб можно выгружать в файл и потом считывать? есть такая идея
Anonymous
мне нужно
Не думаю, что кто-то будет использовать ассемблер в жиэс
ⰿⰰⰾⱏ
/me орет в унисон
/me орет в квинту ;)
Dmitry
ассемблер жи есть!
Anonymous
мне просто показать их совместимость
Anonymous
их общение
Anonymous
знаю, нелегко)
Попробуй как-нить скомпилировать js в екзешник
Ну кароче, отлови машрнный код
Anonymous
и обращаться к одной и той же памяти? это невозможно
и обращаться к одной и той же памяти? это невозможно
Ты не понял. Попробуй изменить жс компилер так, чтобы он сначала сгенерировал объектный код, а потом тебе его выдал файлом
🦥Alex Fails
Есть эмуль компа на js
Про асемблер с жс
а еще можно сесть
на пару стульев сразу
Anonymous
уже готов к этому
🦥Alex Fails
Js linux гугли
🦥Alex Fails
на пару стульев сразу
Куда этот чувак пропал?
Anonymous
http://bellard.org/jslinux/
Anonymous
это?
Anonymous
привет всем
Anonymous
чет тут нет такого наплыва) Видимо школьники не любят асм
🦥Alex Fails
50 человек пришло
🦥Alex Fails
Да
🦥Alex Fails
В кресты 120 пришло
🦥Alex Fails
В js много
Anonymous
Ну асм не для всякого
ⰿⰰⰾⱏ
🦥Alex Fails
Pro.cxx
В куда?)
На кладбище
Anonymous
Ну они уже предопредили свою судьбу - пойти на кладбище
Да
Это, где про.группы опубликовали-то?
@prodot
Я нашел в паблосе
Anonymous
http://vk.com/wall-54530371_93680 вот откуда
🦥Alex Fails
Это уже второй пост у них, где мои чаты публикуют
Филиалы /ga/
Dmitry
ладно, по моей теме пока ни у кого идей нет?