Search
Write a publication
Pull to refresh

Comments 12

Минималистичный код, да. Но так и не понял, почему не использовать WinAPI?
В каком моменте и как именно?
Хотел спросить «А что насчет совместимости с Win8», но зашел на сайт проэкта и прочитал:
madCodeHook offers everything you need to hook code (mostly APIs) in all 32 and 64 bit Windows operating systems from Windows 95 to Windows 8.1
Во втором абзаце написано об этом.
OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);


Неужто для того, чтобы заинжектить код в удалённый процесс, необходимо открыть этот самый процесс со всеми возможными привилегиями?
Ну смотрите, нам точно нужны PROCESS_VM_WRITE и PROCESS_VM_READ (чтобы забросить туда свой код и иметь доступ к нему). SYNCHRONIZE тоже нужен, поскольку неплохо бы знать завершен процесс или нет. PROCESS_VM_OPERATION нужен чтобы иметь возможность сделать VirtualProtectEx (разрешить выполнение кода в определённом блоке памяти). PROCESS_CREATE_THREAD тоже нужен, ведь создание в удалённом процессе своего потока — нужная в 90% случаев функциональность.

В общем, из указанных тут 14 прав штук 10 видятся мне необходимыми. Какой при этом толк отключать оставшиеся 4?
Какой при этом толк отключать оставшиеся 4?

Толк в том, что однажды обязательно наступит момент, когда Ваш код перестанет работать из-за того, что система не выдала ему привилегии, которые вообще не нужны для выполнения поставленной задачи. Это плохой тон программирования.
В целом, Вы, конечно, правы — надо просить только то, что нужно. Но вот в чём беда — кода самой библиотеки madCodeHook я не видел, поэтому точно знать, какие права ей нужны, я не могу. А в официальном примере из документации — процесс открывается именно так.
Тогда, перед использованием библиотеки, было бы логично задать вопрос о необходимых привилегиях автору. Я бы так и сделал, по крайней мере. Не юзать же кота в мешке?
Кстати, для поиграться/поизучать можно потрогать MinHook(опенсорс, лицензия BSD, поддержка x84/x64 кода), немного пользовался ею — остался доволен.
Я правильно понимаю, что это хукинг функций в текущем процессе, или инжект в другие там тоже есть?
В текущем процессе, но никто не мешает запулить свою дллку в процесс чужой, дело 30 строчек кода, про это ещё ms-rem писал.
Sign up to leave a comment.