2015-12-27 4 views
2

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

Что мне делать? Что я должен добавить? Поиск предложений о том, как обезопасить свою программу, которая будет иметь возможность арендовать

редактировать: изменить его из C# для C++ это возможно?

edit2:

Я вижу, что не представляется возможным, Что я могу сделать, чтобы сделать RE сложнее?

У меня есть веб-сайт, который я могу использовать для аутентификации.

+0

@JameyD ok и если я построю одно и то же программное обеспечение в C++ (я могу это сделать) –

+1

Те же правила применяются, если вы говорите о неуправляемом C++, тогда это будет несколько сложнее, но все же выполнимо. В конце концов сборка должна выполняться CPU, это означает, что эта сборка также видна для пользователя компьютера. –

+0

@JameyD если я не могу защитить от RE, но я могу защитить, что программа не работает, если аутентификация не удалась, даже если пользователь изменил сборку кода? Я имею в виду, если я выполняю аутентификацию с веб-сайта (у меня есть), и это не сработало. причина, я знаю, если кто-то, кто знает RE, может выполнить NOP или изменить состояние программного обеспечения. что вы предлагаете мне делать? –

ответ

2

Это общее желание. Прежде всего, поймите, что вы никогда не сможете по-настоящему создать программу, которая не может быть преобразована в обратном порядке. Большинство методов «антиреверсивного проектирования» направлены на то, чтобы сделать работу реверсивного инженера более сложной и, скорее всего, будет очень эффективной против любителей. Я перечислил два популярных метода, с которыми я столкнулся, от вредоносного программного обеспечения. Это область обратной инженерии, которая, вероятно, видит некоторые из самых сложных методов анти-RE, поскольку авторы вредоносных программ постоянно совершенствуют методы, чтобы сделать их исходный код менее доступным и менее читаемым.

  1. антиотладочные & Anti-дизассемблеры. Это включает в себя код в вашей программе, который заставит известную (обычную) отладку или дизассемблирование программного обеспечения либо сбой, либо сбой, если программа будет запущена через них. ИЛИ возможность предотвратить запуск кода, отключение себя или даже сбой ОС, если обнаружен дизассемблер или отладчик, установленный на компьютере при запуске программы. См .: IsDebuggerPresent function (msdn), "Stack Necromancy: Defeating Debuggers By Raising the Dead" и "Anti-Disassembly techniques used by malware (a primer)".

  2. Код безвестности. Это включает в себя запись исходного кода в путаные и отвлекающие пути (spaghetti code), чтобы затруднить определение намерения и поведения программы. Имейте в виду, что это может иметь неприятные последствия, если их неправильно реализовать, поскольку сделать код сложным для того, чтобы сделать головы или хвосты, очевидно, повлияет на обе стороны. См .: "Obfuscation (software)" и "Cryptographic obfuscation and 'unhackable' software".

Для фактического руководства по внедрению этих методов см .: "An Anti-Reverse Engineering Guide".

Помните, однако, что использование анти-RE-технологий в законном программном обеспечении (хотя и грустно распространено) является плохой практикой в ​​области безопасности и не одобряется сообществом безопасности. Не говоря уже о том, что, если что-то трудно ворваться, оно обычно представляет собой вызов. См .: "Security through obscurity" и "Hacker ethic".

+0

Спасибо, ты не знал, что такие функции, собираешься использовать его –

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