Я разрабатываю некоторые автономный игры, но не онлайн, и действительно хотят включить покупки в приложении для некоторых предметов. Я использую Unity3D для Android платформы, поэтому большая часть моего кода написана на C # и Java.
Я хорошо знаю, что есть нет способа защитить код написан на C # а также Джава от реверс-инжиниринга вообще. На всякий случай я искал некоторые рекомендации по безопасности биллинга в приложениях, но они не были эффективными для автономных приложений Android. Если бы я занимался разработкой онлайн-игр, то да, я мог бы попробовать несколько способов предотвратить взлом, потому что в игру нельзя играть без подключения к серверу.
Но это не мой случай.
Даже если я использую сверхбезопасные API в мире для проверки и отзыва на стороне сервера, у взломщиков всегда есть возможность декомпилировать и модифицировать код, чтобы пропустить доступ к магазину или серверу и просто вернуться правда.
Затем они могут снова упаковать его как APK и играть без ограничений. Я также пытался написать важный код в неуправляемый C ++ и использовать их в C #, но я скоро уйду, потому что я подумал, что взломщикам также легко разорвать связь между C ++ и C #.
Я уже сказал себе, что нет реального решения для этого. Вот почему я еще ни разу не пытался поставить внутриигровую биллинговую систему.
Но все еще задаюсь вопросом, есть ли способ усложнить взломщикам изменение кода для биллинга в приложении, помимо реальных базовых навыков, таких как запутывание.
Задача ещё не решена.
Других решений пока нет …