Java - предотвратить методы модификации кода
Недавно я слышал о компании по обеспечению безопасности программного обеспечения, которая делает ваш код взломанным с точки зрения реверс-инжиниринга и модификации кода. Их техника такова:
Они вставляют контрольные суммы в несколько контрольных точек в коде, которые защищают код между ними. Поскольку поток кода выполняется на каждой контрольной точке, проверяется контрольная сумма, и если код был подделан, то контрольная сумма не выполняется, и вы знаете, что произошла модификация кода. Если контрольная точка удалена, то следующая контрольная точка также потерпит неудачу, поскольку контрольная точка была удалена.
Покупать их услуги было бы совершенно не по бюджету для моего проекта (приложения для Android), однако я бы хотел реализовать эту технику самостоятельно.
Может ли кто-нибудь предложить некоторое понимание того, как нечто подобное может быть реализовано? Также, если есть другие методы, которые можно использовать для предотвращения изменения кода, пожалуйста, поделитесь.
(Просто чтобы прояснить, что я знаю об обфускации, странной ошибочной логике кода и написании поддельных методов, чтобы еще больше усложнить чтение кода и буду применять эти методы тоже)
2 ответа
предотвратить методы модификации кода
Там нет никакого трюка для полного избежания обратного проектирования.
Вы в принципе не можете защитить свое приложение от изменения. И любая защита, которую вы вставите туда, может быть отключена / удалена. Если у вас есть возможность включения общих библиотек, вы можете включить необходимый код в C++ для проверки размеров файлов, интеграции и т. Д.
Доказательство взлома является очень свободно определенным термином. Даже если вы реализуете контрольные суммы в различных частях своего кода, существует множество других эксплойтов, о которых вам необходимо знать, и которые могут быть недоступны для изменения исходного кода, таких как внедрение, аутентификация и т. Д. Я рекомендую вам меньше беспокоиться о как помешать кому-либо изменить ваш код и уделить больше внимания защите уязвимых областей, если бы они изменили ваш исходный код, включая хешированные и соленые пароли, зашифрованную передачу данных и т. д.