Więc już kilka razy przez to przechodziliśmy, wypuszczamy grę (za tanią), a ktoś ją włamuje i umieszcza na lustrze. Konfigurujemy Alerty Google dla wszystkich naszych aplikacji, więc codziennie dowiadujemy się, kto włamuje się. Do tej pory wdrożyliśmy usługę licencjonowania zgodnie z sugestią Google, nasza sól jest wytwarzana losowo za każdym razem, gdy licencja jest inicjowana z unikalnym identyfikatorem urządzenia. Usługę check uruchamiamy raz, przy pierwszym uruchomieniu aplikacji. Następnie generujemy 512-znakowy hash dla klucza i przechowywanej wartości, która jest następnie porównywana z SharedPreferences.
Teraz wiem, że sprawdzanie raz jest prawdopodobnie miejscem, w którym aplikacja jest blokowana. Nasz kod bajtowy najprawdopodobniej został przejrzany i ponownie skompilowany bez wiersza inicjującego sprawdzenie.
Stąd nie chcę zaciemniać naszego kodu, ponieważ widziałem go wcześniej zepsutego. Chcę czegoś bardziej solidnego, a także chcę się nauczyć, jak to zrobić poprawnie. W tym momencie bardziej interesuje mnie nauka niż zarabianie pieniędzy, ponieważ tylko 2% ludzi kiedykolwiek szuka wersji zhakowanej.
Do tej pory sam wymyśliłem generator liczb losowych, który jest umieszczony w kilku początkowych obszarach gry. Po zainicjowaniu (powiedzmy 1 na 50 razy) licencja jest sprawdzana. Wiem, że utrudniłoby to włamanie, ponieważ cracker musiałby wyeliminować każdy przypadek, skompilować, wyeliminować, skompilować. Ta metoda jest jednak nadal łatwa do złamania ... więc co sugerujecie? Ponownie, jestem naprawdę zainteresowany tym procesem bezpieczeństwa, więc proszę o edukację, nie zmieniaj tego w dyskusję na temat zaciemniania lub sprawdzania okresowego na podstawie sygnatury czasowej.
Dzięki