обнаружение изменений во время выполнения в исполняемом файле с помощью отладчика - PullRequest
1 голос
/ 30 августа 2011

У меня есть настольное приложение на С ++. Я хочу проверить, были ли внесены какие-либо изменения во время выполнения в исполняемый файл с использованием отладчика или нет. И если все готово, исполняемый файл закроется. Как я это проверяю?

Я уже использовал CheckRemoteDebuggerPresent, но хакер внес изменения в exe, чтобы пропустить это утверждение

редактировать: Можем ли мы принудительно остановить отладчик, если он существует, а если нет, он будет действовать как фиктивный код. Я пытался DebugActiveProcessStop, но он не работает на текущем процессе, я думаю

Ответы [ 4 ]

2 голосов
/ 30 августа 2011

К сожалению, обычно невозможно гарантировать, что ваш исполняемый файл не изменен. Вы можете выбрать безопасную платформу (приложения для настольных компьютеров - нет) или получить один из множества пакетов обфускации / защиты кода; но это можно обойти.

Мое любимое эссе на эту тему - «Держать пиратов в страхе» ( источник ).

1 голос
/ 30 августа 2011

Эта недавняя статья Тайлера Шилдса из Veracode содержит довольно широкий выбор методов, которые вы могли бы рассмотреть.

http://www.shell -storm.org / paper / files / 764.pdf

Но вам придется признать, что искушенный злоумышленник почти всегда найдет способ обойти то, что вы решите сделать.

1 голос
/ 30 августа 2011

Для обнаружения изменений во время выполнения вам необходим цикл для хеширования различных областей памяти, чтобы убедиться, что они не изменены, а также что-то вроде VirtualQuery, чтобы убедиться, что доступ к странице не подделан, Конечно, этому всегда можно противодействовать, просто посмотрите на Blizzards Warden (который использует этот метод).

0 голосов
/ 30 августа 2011

Вы можете сделать это с помощью CheckRemoteDebuggerPresent () , чтобы обнаружить отладчик, но я не знаю, есть ли способ определить, было ли внесено изменение.Есть несколько других вариантов здесь .

...