Подведи собственные итоги года совместно с YOUGAME и забери ценные призы! Перейти

Как защитить dll от подмены?

  • Автор темы Автор темы XenoFob
  • Дата начала Дата начала
Лама - бох, ты - лох
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
14 Янв 2019
Сообщения
405
Реакции
59
Парни, такое дело: есть экзешник и длл, которая чекает хвид (хвид заранее забит в длл) и возвращает тру или фолс в зависимости от того, совпадают хвиды или нет. На экзешники и длл накинут вмп. Вопрос: как лучше защитить длл от подмены?
Самое банальное что приходит на ум - это чека хэш сумму дллки из экзешника, и бить тревогу, если она не совпадает. Но насколько надежен такой вариант? Какие есть еще способы защиты?

P.S1: Сразу скажу, что защита не рассчитана на супер хацкеров - реверсеров, а скорее на людей, который что то знают, но опыта большого нет.
P.S2: Прога должна работать только в офлайне, так что любые варианты со связью с сервером отметаются.
P.S3: Почему функция активации лежит в отдельной длл, а не внутри экзешника - не спрашивайте, так надо.
 
Мб тогда вшить байты DLL в EXE и попросту из этих байтов создавать DLL при запуске EXE?
 
Лучше вшить зашифрованную длл в лоадер и уже там инжектить её не сохраняя на диск, ну если на обычного юзера делаешь, то можно и просто хеш чекать, правда это можно обойти
Мб тогда вшить байты DLL в EXE и попросту из этих байтов создавать DLL при запуске EXE?
Можно поставить рядом нужную длл и поставить на неё флаг read-only, тогда лоадер не сможет записать и заинжектит нашу дллку
 
Лучше вшить зашифрованную длл в лоадер и уже там инжектить её не сохраняя на диск
Можно и так, но а тогда можно ли к ней будет обратиться? Ведь по факту никакой длл не будет, просто инъекция некого кода. Никогда не сталкивался с необходимостью общения с длл, инжектнутой ММап-ом, могу ошибаться.
Можно поставить рядом нужную длл и поставить на неё флаг read-only, тогда лоадер не сможет записать и заинжектит нашу дллку
Можно чекать наличие файла и, если он есть, снимать ему флаг r/o, коль на то пошло.
 
Можно и так, но а тогда можно ли к ней будет обратиться? Ведь по факту никакой длл не будет, просто инъекция некого кода. Никогда не сталкивался с необходимостью общения с длл, инжектнутой ММап-ом, могу ошибаться.

Можно чекать наличие файла и, если он есть, снимать ему флаг r/o, коль на то пошло.
Всм обратиться? Расшифровываешь байты дллки и инжектишь ммапом , это же и есть длл, только там ты считываешь байты с файла, а тут они у тебя "под копытом".
А насчет ро, так там могут быть и другие флаги, и ещё (я не чекал), но если закинуть ехе с длл в корень системного диска, то мб лоадер не сможет что-то с ней сделать, поэтому там ещё нужно будет сделать чеков или сразу запускать с правами админа и убирать все флаги
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Проверка на размер файла, мд5 хэш, ша1 хэш.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
можешь еще сделать в дллке, чтоб она лоадеру ретурнило ok иначе закрываешь лоадер
 
Всм обратиться? Расшифровываешь байты дллки и инжектишь ммапом , это же и есть длл, только там ты считываешь байты с файла, а тут они у тебя "под копытом".
Ну я думаю, есть какие-то экспортные функции. Я на всякий случай уточню, что при инжекте ММап-ом никакой длл нет и не будет. Есть просто инъекция байтов в память.
если закинуть ехе с длл в корень системного диска, то мб лоадер не сможет что-то с ней сделать, поэтому там ещё нужно будет сделать чеков или сразу запускать с правами админа и убирать все флаги
Если он не сможет ничего сделать с ней, вернёт ошибку, я полагаю, и тогда работу программы можно будет прервать.
 
Ну я думаю, есть какие-то экспортные функции. Я на всякий случай уточню, что при инжекте ММап-ом никакой длл нет и не будет. Есть просто инъекция байтов в память.

Если он не сможет ничего сделать с ней, вернёт ошибку, я полагаю, и тогда работу программы можно будет прервать.
Ну да, dllmain например, инжектишь и там вызываешь dllmain, там проблем только может возникнуть с резольвой импортов вроде как
p.s loadlibrary инжектор можно заставить инжектить другую длл некоторыми хуками
 
Парни, вы накинули хорошие варианты, но всего не могу рассказать, суть в том что руки у меня связаны. Не могу использовать что то кроме dll, которая бы находилась в отдельном файле. По этому, к сожалению, "встроенные" длл отменяются. Нужно именно защитить от подмены длл, которая будет находиться рядом с экзешником.
Вариантов, кроме как чекать хэш нету?

можно и просто хеш чекать, правда это можно обойти
А как это обходится? Можно от этого защититься?
 
Парни, вы накинули хорошие варианты, но всего не могу рассказать, суть в том что руки у меня связаны. Не могу использовать что то кроме dll, которая бы находилась в отдельном файле. По этому, к сожалению, "встроенные" длл отменяются. Нужно именно защитить от подмены длл, которая будет находиться рядом с экзешником.
Вариантов, кроме как чекать хэш нету?


А как это обходится? Можно от этого защититься?
Хукается метод чтения файла и передается там оригинальный файл, чтобы лоадер высчитал хеш ориг файла и пропустил нас к инжекту, потом лоадер инжектит то что нам нужно, всё
 
Хукается метод чтения файла и передается там оригинальный файл, чтобы лоадер высчитал хеш ориг файла и пропустил нас к инжекту, потом лоадер инжектит то что нам нужно, всё
Мда... проблема... Но другого выхода я не вижу, так что придется использовать чек хэша. Накрою все это анти отладчиком и буду надеяться что мамкиного реверсера это отпугнет :roflanBuldiga: Ну или еще попытаюсь уговорить человека переписать защиту под ваши способы.

Всем большое спасибо!
 
Назад
Сверху Снизу