Добрый день! Есть задача. Нужно найти md5 процесса в памяти системы. Данная задача возникла для защиты приложения. При инжекции длл в процесс, md5 сумма файла явно не изменяеться. Думаю, возможно как-то добыть контрольную сумму процесса, или памяти, которая ему выделена.
asmfan извени пожалуйста за оффтоп, но твоё слова "да" мне ничем не поможет. У меня есть библиотека нахождения md5 файла. А я задал вопрос о памяти, или процессе. Которые изменяеться. Когда какаято читерская программа запускаеться, он встраивает свой код в процесс, и явно md5 поменялся. Когда я найду md5 процесса, дальше я смогу его сравнить с имеющимся md5 файла и выяснить, встраивалось ли что то. Если да, то отсылка ключа на сервер, и все пакеты от етого приложения будут резаться.
Вовсе не обязательно. И как ты собираешься найти md5 процесса? Исполняемого файла - да,библиотек - да,но процесса? Ты в курсе,что возможен случай,когда md5 файла в памяти будет отличаться от md5 этого же файла на винте?
Вот я и спрашиваю, возможно ли найти md5 процесса. Процесс - ето участок памяти. Если знать какой именно, можно его в stream а md5 stream-a уже найти можно. Я задал вопрос, так как вдруг кто то с етим сталкивался.
Давай определимся с терминологией,ok? Что в твоем понимании процесс - исполняемый файл и его библиотеки,данные и прочее или все адресное пр-во,доступное процессу? Если в первом случае еще что-то можно придумать,то второй - дохлый номер.
Гм 1. При наличии секций .data / .data? , где хранятся переменные - твое мд5 до ж*пы 2. При наличии секции импорта и импортируемых функций (адреса от версии к версии отличаться будут) - твое мд5 - до ж*пы 3. Релоки. Либа каждый раз по разному ImageBase будет грузиццо. И после фиксапинга, мд5 - до ж*пы. 4. Если установлен какой-либо пакер, то опять-таки мд5 до ж*пы. Вывод - в 90% случаев твой "чек мд5 в памяти" до ж*опы
Magnum я понял тебя. Но ты не написал вывод. Как мне определить, что в приложение была произведена иньекция. Или если в нехо хотели послать код, а также какое приложение это сделало.
Вывод очевиден. 1. Если это античит [вспоминаю,как бомбил punkbuster],контролируй не весь exe [это не имеет смысла] а только 'узкие места'. 2. Очевидно нужно перехватить API.Обычно это ф-ии Read/WriteProcessMemory, CreateRemoteThread,Get/SetContext и тд.Но судя по твоим вопросам тебе лучше сразу бросить это дело.
Думал обойдется простым сравнением md5 хеш сумм. Но так как с памятью это делать практически не возможно, пришлось писать глобальный хук, который бы перехватывал FindWindow. О другом тут и речи ити не может. Всем спасибо, тему можно закрыть.
Перехватывай функции в ntdll с перефиксами Ki_: Единственный хороший способ контроля своего кода. Если вызовы через Int 2Eh, перехваты не имеют смысла.
celeron Можно поставить нотифи (типа PsSetLoadImageNotifyRoutine/PsSetCreateProcessNotifyRoutine) и смотреть что и куда грузится.
celeron вариант может быть таким. Пишешб лоадер, который самостоятельно создает процесс, грузит ехек, обрабатыват ево импорт, грузить библиотеки, обрабатывает их релоки и тд. Попутно считываешь контрольные суммы того, что получилось, потому как явно видишь чего делаешь. Однако скажу сразу, кто захочет сломать твою античитилку, тот её сломает))
твой вариант не сильно интересный. Дело в том что без хука античит просто жесть. Так как его закрыть можно. Да открыл его диз ассемблером, поставил нужные брекпоинты, да и всё. Я думаю хендл игры ищут вин апи FindWindow? получают хендл окна. А я придумал хитрую вещь, буду перехватывать функцию, обрабатывать, заменять хендл окна программы на античит, и передавать ложную информацию. также я получаю права system что делает защиту более надежной. Конечно ещё бы хотелось перехватить апишки на закрытие моей программы.
celeron <твой вариант не сильно интересный. Дело в том что без хука античит просто жесть.> Могу тебя обрадовать. Точно так же можно и хуки твои снять или попатчить)) Угу маладца. Пошукаем в таблице хэндлов процесса и найдём нужные нам хэндлы. Хук летит на йух. А что это тебе даст? пятый хвост ?
k3internal ну что ты к нему так категоричен судя по всему человек "знает что делает" так что пусть попарится и все поймет celeron скорее всего чтобы что-то стощее сделать из того что ты тут нарассказывал, нужны незаурядные знания, я имею ввиду что твоих будет явно мало. лучший вариант - закажи античит кому-нибудь опытному
Интересно каким образом ? Имхо, игры, требующие для запуска админских прав, пусть идут лесом. Ну и ставящие свои недосервисы\гуанодрайвера.
Контр-Страйк все играли? Сейчас все большие обороты набирает античит sXe-Injected, который выполнен в качестве системного сервиса (драйвера). Постоянные вылеты, глюки и БСОДы, а так же конфликты с касперским, аутпостом и ЗонАлармом сводят на нет все удовольствие устанавливать этот гуан*.
UtEX Критиковать каждый умеет. А вот помочь? Можешь что то посоветовать стоящее. Какую нибудь идею и где копать.
1)ты можешь посчитать MD5 сумму кодовой секции сразу после загрузки и потом проверять ее периодически, но это не спасет от изменений данных. 2)запакуй все это дело приватным криптором. 3)используй хуки 4)если кто захочет, то он в любом случае сломает твой протектор.