Защита программы
Народ, можете дать пару советов по защите от api hooking и подключения к программе dll'ок.
можно перехватывать функцию loadlibrary(ex) и всегда возвращать ошибку, но я сомневаюсь в эффективности этого способа, потому что сам не пробовал
Цитата: ahilles
можно проверять список библиотек загруженных библиотек, если есть какая то неизвестная библиотека - выгрузить её, вот только после выгрузки хук то останется и это сразу вызовет ошибку...
Вот эта идея пришла ко мне в первую очередь, но дело в том, что некоторые приложения вроде CursorXP делают подгружают ко всем приложениям свою dll'ку, соответственно трудно программно разобраться, "неизвестная" или "известная" подключаемая библиотека :\
Цитата: ahilles
можно перехватывать функцию loadlibrary(ex) и всегда возвращать ошибку, но я сомневаюсь в эффективности этого способа, потому что сам не пробовал
Вот это интересно. Но глобальными хуками ведь можно подменить мой loadlibrary? Хотя, имхо, это крайне проблематично.
Я так понимаю, 100% способа нет.. так?
Я думаю, что да
второй вариант если ты перехватишь loadlibrary(ex) которая уже перехвачена до тебя здесь всё понятно
P.S. всё это про метод сплайсинга, тогда первые 5(6) байт функции будут модифицироваться несколько раз при неоднократном перехвате функции
P.P.S. загружать дллку можно вручную (т.е. резервировать память, проецировать секции, настраивать импорты (экспорты) и релокейшены)
Цитата: ahilles
первый вариант: если ты перехватишь свой loadlibrary(ex) и всегда будешь возвращать ошибку, то даже если кто то другой перехватит её ещё раз он все равно так или иначе будет вызывать loadlibrary(ex), а ведь она уже перехвачена тобой до него
второй вариант если ты перехватишь loadlibrary(ex) которая уже перехвачена до тебя здесь всё понятно
P.S. всё это про метод сплайсинга, тогда первые 5(6) байт функции будут модифицироваться несколько раз при неоднократном перехвате функции
P.P.S. загружать дллку можно вручную (т.е. резервировать память, проецировать секции, настраивать импорты (экспорты) и релокейшены)
второй вариант если ты перехватишь loadlibrary(ex) которая уже перехвачена до тебя здесь всё понятно
P.S. всё это про метод сплайсинга, тогда первые 5(6) байт функции будут модифицироваться несколько раз при неоднократном перехвате функции
P.P.S. загружать дллку можно вручную (т.е. резервировать память, проецировать секции, настраивать импорты (экспорты) и релокейшены)
Есть небольшой нюанс - программа после компилирования упаковывается последним EXECryptor'ом, а он с импортами такого наворачивает.. В таких условиях возможно будет подменять свой loadlibrary?
делаешь так
getprocaddress(getmodulehandle('kernel32.dll'),'LoadLibraryA')