Pull to refresh

Comments 9

Статья кажется лет на 15 отстала от жизни. А что насчет Unix систем, кстати?
Думаю стоит поискать по ключевому слову ptrace.
Имхо рисовать квадратики не интересно. Более наглядно добавить свой функционал. Для примера добавить свой пункт в меню и обрабатывать его.
LPVOID fp = (LPVOID)GetProcAddress(GetModuleHandle("kernel32.dll"),"LoadLibraryA");

В общем случае, это ненадежный подход. Здесь ищется адрес импортируемой собственным процессом функции и делается смелое допущение, что во вскрываемом процессе он точно такой же, но он там вполне может оказаться другим, например, из-за включенного режима совместимости с предыдущими версиями Windows. Обойти это можно через разбор структуры исполняемого файла вскрываемого процесса в памяти, поиск kernel32.dll среди импортируемых модулей и в нем поиск LoadLibraryA/LoadLibraryW в таблице экспорта.
Для некоторых системных dll, в том числе kernel32 базовый адрес загрузки во всех процессах одинаковый. Но лучше все таки да, корректировать адрес.
Вот здесь есть более подробное описание. Если кратко, то проблема может быть, например, если процесс-взломщик запущен в режиме совместимости, тогда некоторые адреса системных функций могут вести на самом деле во вспомогательную dll, обеспечивающую эту самую совместимость, но этой dll может не быть во вскрываемом процессе, соответственно, полученный адрес там не будет правильным.
Для рисования в чужом окне совершенно не нужно инжектироваться в адресное пространство другого процесса.

Лучше бы показать пример подмены или дополнения функционала.
Да, с вами, несомненно, согласен. Но в данном случае рисование происходит во всех окнах родительского процесса, т.е процесс не ищется вручную каждый раз.
Есть ли способ сделать Inject в процесс соседней терминальной сессии?
Права локального админа присутствуют.
Sign up to leave a comment.

Articles