2009-08-26 2 views
2

Моей логики APT (Anti-Paching Technology) выглядит следующим образом ...Защита исполняемого от того заплаты

1) магазина на сервере MSSQL MD5 хэша исполняемого файла для защиты.

2) Выполните сравнение md5 (при запуске моего приложения) хеш, найденный на сервере, с самим исполняемым файлом.

3) Если сравнение не дает выход из приложения молча.

И все эти выше, прежде чем он окончательно выложен!

Я имею в виду, что ваш лучший способ защитить файл от пропатчивания? Без использования готовых инструментов (.net-реактор, виртуализатор и т. Д.)

Редактировать: Что-то еще мне пришло в голову.

Есть ли способ проверить целостность приложения на стороне сервера? Я имею в виду, что мое приложение работает только в Интернете. Могу ли я выполнить что-то на сервере (мой домен), который мог бы проверить целостность приложения?

+0

Какой прецедент? – UnkwnTech

+0

Извините, но мой родной язык не английский. Не могли бы вы быть более конкретными? – OrElse

+0

Как и принятый ответ, важно отметить, что MD5 - это мертвый алгоритм, вы должны использовать SHA-2 (SHA-0 и SHA-1 одинаково мертвы). –

ответ

5

Дело в том, что взломщик исправил приложение точно на шаге 2, удалив код проверки хэша.

Поэтому я бы не назвал это очень эффективным против серьезных сухарей.

EDIT: Я думаю, вам лучше защита в глубину, учитывая, что ваше приложение должно быть онлайн я бы:

  • Аутентификация: Аутентификация пользователей, мы надеемся, с помощью криптографического ключа и требуют ключа проверьте получение/отправку данных.
  • Обфускация: это усложняет работу с крекерами.
  • Продолжение проверки. Помимо проверки того, кто отправляет данные, проверяйте приложение каждый раз, когда отправляется запрос.

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

+0

Вот почему я добавил: «И все это выше, прежде чем он наконец будет выложен!» Не могли бы вы указать мне на что-то более безопасное? – OrElse

+0

Upvote для использования правильного срока взломщика. –

+1

@gipap: взломщик изменяет вашу программу * до того, как она будет работать. По дефиниции ваша программа ничего не может сделать до ее запуска. И после того, как он был изменен, это уже не ваша программа. – MSalters

2

вы не можете. если у кого-то еще есть файл, он может делать то, что им нравится - сначала нужно исправить ваш код исправления.

2

Патч-приложение означает, что «взломщик» имеет полный контроль над машиной, на которой работает код (по крайней мере, достаточно управления для исправления исполняемого файла). Таким образом, предотвращение патчей, хотя и умное, может быть связано с потоком контроля.

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

1

Если приложение работает на чужой машине, вы не можете помешать им его исправлять. Вы можете сделать это сложнее, но это игра в оболочку: вы не можете победить. Независимо от того, насколько сложно вы это сделаете, какой-то парень где-нибудь увидит это как интересный вызов, чтобы сломать вашу защиту, и он добьется успеха. Затем всем остальным нужно загрузить свою версию. Самая крайняя форма защиты патчей сегодня - это Skype (о котором я знаю). Это безумно сложно, и все же оно сломано.

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

Например, если это игра, и вы хотите помешать игрокам взломать игру, чтобы узнать, где находятся другие игроки: измените сервер, чтобы он отправлял только координатную информацию для игроков, которые вы уже видите.

Другой пример: если это интернет-магазин, и вы хотите, чтобы пользователи не отправляли заказы на поставку с неверными ценами, проверьте цены на сервере.

Единственное исключение - если вы контролируете аппаратное обеспечение, на котором работает программа. Но даже там очень сложно сделать это правильно (см .: XBox, PS3 и многие другие консоли, которые пытались это сделать и не смогли). Вероятно, еще лучше использовать архитектуру клиент/сервер, а не делать ставку на «доверенные вычисления».

0

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

0

Все прибивают его, вы не можете остановить кого-то, но вы можете сделать это сложнее для них, вы даже можете уйти с глубокого конца и сделать некоторые вещи для проверки в памяти, такие как система World Of Warcrafts Warden.

Если вы сообщите нам, на каком языке вы пишете, мы можем предложить некоторые простые методы обфускации.

Смежные вопросы