Найти md5 сумму процесса в памяти

Тема в разделе "WASM.WIN32", создана пользователем celeron, 5 янв 2008.

  1. celeron

    celeron Алексей

    Публикаций:
    0
    Регистрация:
    5 янв 2008
    Сообщения:
    8
    Адрес:
    Украина, Сумы
    Добрый день! Есть задача. Нужно найти md5 процесса в памяти системы.

    Данная задача возникла для защиты приложения. При инжекции длл в процесс, md5 сумма файла явно не изменяеться. Думаю, возможно как-то добыть контрольную сумму процесса, или памяти, которая ему выделена.
     
  2. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
  3. celeron

    celeron Алексей

    Публикаций:
    0
    Регистрация:
    5 янв 2008
    Сообщения:
    8
    Адрес:
    Украина, Сумы
    asmfan извени пожалуйста за оффтоп, но твоё слова "да" мне ничем не поможет.
    У меня есть библиотека нахождения md5 файла. А я задал вопрос о памяти, или процессе. Которые изменяеться. Когда какаято читерская программа запускаеться, он встраивает свой код в процесс, и явно md5 поменялся. Когда я найду md5 процесса, дальше я смогу его сравнить с имеющимся md5 файла и выяснить, встраивалось ли что то. Если да, то отсылка ключа на сервер, и все пакеты от етого приложения будут резаться.
     
  4. TheDeath

    TheDeath New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2003
    Сообщения:
    66
    Адрес:
    Russia,Новосибирск
    Вовсе не обязательно.
    И как ты собираешься найти md5 процесса? Исполняемого файла - да,библиотек - да,но процесса? :lol:
    Ты в курсе,что возможен случай,когда md5 файла в памяти будет отличаться от md5 этого же файла на винте?
     
  5. celeron

    celeron Алексей

    Публикаций:
    0
    Регистрация:
    5 янв 2008
    Сообщения:
    8
    Адрес:
    Украина, Сумы
    Вот я и спрашиваю, возможно ли найти md5 процесса. Процесс - ето участок памяти. Если знать какой именно, можно его в stream а md5 stream-a уже найти можно. Я задал вопрос, так как вдруг кто то с етим сталкивался.
     
  6. TheDeath

    TheDeath New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2003
    Сообщения:
    66
    Адрес:
    Russia,Новосибирск
    Давай определимся с терминологией,ok? Что в твоем понимании процесс - исполняемый файл и его библиотеки,данные и прочее или все адресное пр-во,доступное процессу?
    Если в первом случае еще что-то можно придумать,то второй - дохлый номер.
     
  7. Magnum

    Magnum New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    925
    Гм
    1. При наличии секций .data / .data? , где хранятся переменные - твое мд5 до ж*пы
    2. При наличии секции импорта и импортируемых функций (адреса от версии к версии отличаться будут) - твое мд5 - до ж*пы
    3. Релоки. Либа каждый раз по разному ImageBase будет грузиццо. И после фиксапинга, мд5 - до ж*пы.
    4. Если установлен какой-либо пакер, то опять-таки мд5 до ж*пы.

    Вывод - в 90% случаев твой "чек мд5 в памяти" до ж*опы
     
  8. celeron

    celeron Алексей

    Публикаций:
    0
    Регистрация:
    5 янв 2008
    Сообщения:
    8
    Адрес:
    Украина, Сумы
    Magnum я понял тебя. Но ты не написал вывод. Как мне определить, что в приложение была произведена иньекция. Или если в нехо хотели послать код, а также какое приложение это сделало.
     
  9. TheDeath

    TheDeath New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2003
    Сообщения:
    66
    Адрес:
    Russia,Новосибирск
    Вывод очевиден.
    1. Если это античит [вспоминаю,как бомбил punkbuster],контролируй не весь exe [это не имеет смысла] а только 'узкие места'.
    2. Очевидно нужно перехватить API.Обычно это ф-ии Read/WriteProcessMemory,
    CreateRemoteThread,Get/SetContext и тд.Но судя по твоим вопросам тебе лучше сразу бросить это дело.
     
  10. celeron

    celeron Алексей

    Публикаций:
    0
    Регистрация:
    5 янв 2008
    Сообщения:
    8
    Адрес:
    Украина, Сумы
    Думал обойдется простым сравнением md5 хеш сумм. Но так как с памятью это делать практически не возможно, пришлось писать глобальный хук, который бы перехватывал FindWindow. О другом тут и речи ити не может. Всем спасибо, тему можно закрыть.
     
  11. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Перехватывай функции в ntdll с перефиксами Ki_: Единственный хороший способ контроля своего кода.
    Если вызовы через Int 2Eh, перехваты не имеют смысла.
     
  12. Stub

    Stub New Member

    Публикаций:
    0
    Регистрация:
    11 май 2004
    Сообщения:
    311
    Адрес:
    Siberia
    celeron
    Можно поставить нотифи (типа PsSetLoadImageNotifyRoutine/PsSetCreateProcessNotifyRoutine) и смотреть что и куда грузится.
     
  13. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    celeron
    вариант может быть таким. Пишешб лоадер, который самостоятельно создает процесс, грузит ехек, обрабатыват ево импорт, грузить библиотеки, обрабатывает их релоки и тд. Попутно считываешь контрольные суммы того, что получилось, потому как явно видишь чего делаешь. Однако скажу сразу, кто захочет сломать твою античитилку, тот её сломает))
     
  14. celeron

    celeron Алексей

    Публикаций:
    0
    Регистрация:
    5 янв 2008
    Сообщения:
    8
    Адрес:
    Украина, Сумы
    твой вариант не сильно интересный. Дело в том что без хука античит просто жесть. Так как его закрыть можно. Да открыл его диз ассемблером, поставил нужные брекпоинты, да и всё. Я думаю хендл игры ищут вин апи FindWindow? получают хендл окна. А я придумал хитрую вещь, буду перехватывать функцию, обрабатывать, заменять хендл окна программы на античит, и передавать ложную информацию. также я получаю права system что делает защиту более надежной. Конечно ещё бы хотелось перехватить апишки на закрытие моей программы.
     
  15. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    celeron
    <твой вариант не сильно интересный. Дело в том что без хука античит просто жесть.>
    Могу тебя обрадовать. Точно так же можно и хуки твои снять или попатчить))

    Угу маладца. Пошукаем в таблице хэндлов процесса и найдём нужные нам хэндлы. Хук летит на йух.

    А что это тебе даст? пятый хвост ?
     
  16. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    k3internal
    ну что ты к нему так категоричен
    судя по всему человек "знает что делает"
    так что пусть попарится и все поймет

    celeron
    скорее всего чтобы что-то стощее сделать из того что ты тут нарассказывал, нужны незаурядные знания, я имею ввиду что твоих будет явно мало.
    лучший вариант - закажи античит кому-нибудь опытному
     
  17. roman_pro

    roman_pro New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    291
    Интересно каким образом ? Имхо, игры, требующие для запуска админских прав, пусть идут лесом. Ну и ставящие свои недосервисы\гуанодрайвера.
     
  18. Magnum

    Magnum New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    925
    Контр-Страйк все играли?
    Сейчас все большие обороты набирает античит sXe-Injected, который выполнен в качестве системного сервиса (драйвера).

    Постоянные вылеты, глюки и БСОДы, а так же конфликты с касперским, аутпостом и ЗонАлармом сводят на нет все удовольствие устанавливать этот гуан*.
     
  19. celeron

    celeron Алексей

    Публикаций:
    0
    Регистрация:
    5 янв 2008
    Сообщения:
    8
    Адрес:
    Украина, Сумы
    UtEX Критиковать каждый умеет. А вот помочь? Можешь что то посоветовать стоящее. Какую нибудь идею и где копать.
     
  20. CnCVK

    CnCVK New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2006
    Сообщения:
    108
    1)ты можешь посчитать MD5 сумму кодовой секции сразу после загрузки
    и потом проверять ее периодически, но это не спасет от изменений данных.
    2)запакуй все это дело приватным криптором.
    3)используй хуки
    4)если кто захочет, то он в любом случае сломает твой протектор.