🦥Alex Fails
а виртуалпротект не пашет? Я им обычно писал
Dmitry
ну вот метод хороший, но я его усовершенствовать пытаюсь. автор бы ещё CreateRemoteThread предложил, лол :)
Dmitry
виртуалпротект палево.
🦥Alex Fails
Да, соглашусь
🦥Alex Fails
Я так в одном проекте патчил ебучие баги в сторонних либах
Dmitry
а :)
Dmitry
ну в принципе-то в инжект в другой процесс нет ничего сложного, инструментов-то навалом и техник навалом, но они все палево. в идеале мы используем только NtQueueApcThread и... и всё, больше мы ничего не используем.
Andrew
Dmitry
да, кстати, NtQueueApcThread позволяет передать аж три параметра - может это как-то поможет
Dmitry
не пойдет
Dmitry
потому что у тебя будет ретурн на ROP-цепочку
Dmitry
а она в RW памяти
Dmitry
и вылетит эксепшн
Dmitry
подойдет например add esp, 4 ; pop esp ; ret
Dmitry
а, и да, решение должно быть реально _универсальным_
🦥Alex Fails
Dmitry
хм
Dmitry
давай поищу
🦥Alex Fails
В вайне известна такая методика под словом 'hotpatchable functions'
Dmitry
в винде тоже есть mov edi, edi
Dmitry
куда кладется шорт-джамп, а перед функцией лонг-джамп.
🦥Alex Fails
Да
Dmitry
оно всё RW по дефолту :(
Dmitry
если бы оно было RWX, то это была бы дырень побольше чем у моей бывшей
Dmitry
ой
Dmitry
тьфу
Dmitry
оно R-X
Dmitry
по дефолту.
Dmitry
короче, add esp, 4 / mov esp, [esp] / ret - это 83 C4 04 8B 24 24 C3
Dmitry
что-то мне подсказывает что вероятность найти такую цепочку крайне мала
Dmitry
неа, нету нигде такой последовательности
Dmitry
вот смотрите, цепочка pop esp ; ret - казалось бы куда короче - 5C C3
Dmitry
так ведь в ЕДИНСТВЕННОМ ЭКЗЕМПЛЯРЕ
Dmitry
правда я ещё видел pop esp ; add al, 0 ; ret - такое тоже подходит (но я не знаю как писать программу, которая ищет инструкции по паттерну pop esp ; незначимая хуйня; ret - только лишь потому что нужен ИИ чтобы определять незначимую хуйню)
Dmitry
ну это не до конца подходит
Dmitry
нам еще лежащий адрес возврата наверху стека мешает
Dmitry
pop eax ; pop esp ; ret было бы заебись
Dmitry
но такого нет.
Dmitry
не, может я немного не в ту сторону копаю. может есть ещё варианты. просто отталкиваемся от того факта, что виндовые API, позволяющие из нашего процесса делать что-то в другом процессе, априори зло. NtQueueApcThread ещё ладно, но новые вводить нежелательно.
Dmitry
там пиздец :) 8D 64 24 04
Dmitry
и то нужно после этого содержимое esp записать в esp.
Dmitry
четыре штуки понадобится.
Dmitry
44 опкод
Dmitry
44 44 44 44
Dmitry
опа, есть!
Dmitry
там есть куча повторяющихся букв алфавита
Dmitry
44 44 44 44 - это DDDD
Dmitry
правда только в одном месте.
Dmitry
и рета в конце ясен хер нет.
Dmitry
а после EEEE.
Dmitry
которое inc ebp.
Dmitry
вообще очень много последовательностей mov esp, ebp ; pop ebp ; ret
Dmitry
ну понимаете, да, на выходе из функции стекфрейм свой убираем
Dmitry
это один хер.
Dmitry
да, сложновато
Dmitry
ну ты имеешь в виду ret с числом, да
Dmitry
я находил pop esp ; ret 2df0 :)
Dmitry
многовато пушить-то :)
Dmitry
так вот
Dmitry
mov esp, ebp ; pop ebp ; ret - вот такого навалом ясен перец
ඞ
Вы если не знаете, чо делать
ඞ
Вы откройте системные вызовы
ඞ
И поделайте ерунды там
ඞ
Новичкам грю
分解物質
ඞ
分解物質
Ned
nasm the top
分解物質
кстати, в настоящем at&t синтаксисе вместо %rax %eax $ax пишут просто AX
ඞ
分解物質
分解物質
ඞ
🦥Alex Fails
Забейте
分解物質
щя
Dmitry
да
分解物質
Пруфы будут?
http://doc.cat-v.org/plan_9/4th_edition/papers/asm
Dmitry
я ещё пробовал программу ROPgadget, ну, тоже ничего
Dmitry
да нормально там всё, только он много чего ищет