Jadi kami telah melalui ini beberapa kali sekarang, kami merilis game (murah) dan seseorang meretasnya dan meletakkannya di atas cermin. Kami menyiapkan Google Alerts untuk semua aplikasi kami, jadi kami diberi tahu setiap hari siapa yang melakukan peretasan. Sejauh ini, kami telah menerapkan layanan lisensi seperti yang disarankan Google, garam kami dibuat secara acak setiap kali lisensi dimulai dengan ID perangkat unik. Kami menjalankan layanan cek sekali, ketika aplikasi dimulai untuk pertama kalinya. Kami kemudian menghasilkan hash 512 karakter untuk kunci dan nilai yang disimpan dibandingkan dengan di SharedPreferences dari sana keluar.
Sekarang, saya tahu bahwa memeriksa sekali mungkin di mana aplikasi tersebut diblokir. Bytecode kami kemungkinan besar telah dilihat dan dikompilasi ulang tanpa garis yang memulai pemeriksaan.
Dari sini, saya tidak ingin mengaburkan kode kami karena saya telah melihatnya rusak sebelumnya. Saya ingin sesuatu yang sedikit lebih solid, dan saya juga ingin belajar bagaimana melakukan ini dengan benar. Saya lebih tertarik belajar daripada menghasilkan uang pada saat ini karena hanya 2% orang yang akan mencari versi yang diretas.
Sejauh ini, saya sendiri, saya telah menghasilkan generator angka acak yang ditempatkan di beberapa area permulaan game. Ketika dimulai (katakanlah, 1 dari 50 kali) lisensi diperiksa. Saya tahu ini akan mempersulit peretasan karena cracker harus menghilangkan setiap case, kompilasi, eliminasi, kompilasi. Namun metode ini, masih bisa dipecahkan ... jadi apa yang kalian sarankan? Sekali lagi, saya benar-benar tertarik dengan proses keamanan ini, jadi silakan mendidik, jangan mengubahnya menjadi diskusi tentang kebingungan atau memeriksa secara berkala berdasarkan cap waktu.
Terima kasih
sumber
Jawaban:
Gagasan saya bukanlah bukti peretas, tetapi mungkin menghapus minat untuk meretas permainan.
Model freemium
1) Buat 5-10 level pertama gratis sehingga orang dapat mempelajari permainan dan bersenang-senang tanpa membayar. Less akan ingin meretas level pertama dan game akan menyebar lebih jauh dengan model Freemium.
Paket level Shareware / berkerumun
2) Biarkan bagian level permainan atau logika tetap online. Misalnya. ketika mencapai level 5 atau 10 atau 15, kemudian unduh bagian-bagian kecil untuk game, dan setiap kali kirim progress-log dari game dan validasikan ini terhadap nilai yang mungkin + kode kode. Ini mungkin memungkinkan untuk menutup akun yang diretas secara otomatis.
Perlindungan penipu stealth
3) Anda juga bisa menghitung "bendera peringatan kecil" yang Anda tempatkan di dalam permainan. Jangan hanya memeriksa "validasi" di awal, tidak membangun bendera ini ke dalam logika permainan itu sendiri. Jangan membuatnya merusak gameplay, karena dengan begitu tidak ada yang akan mencarinya. Kemudian ketika pengguna mencapai ujung monster level, periksa apakah ada bendera peringatan yang dicatat. Ini tidak akan muncul di dalam permainan, sehingga pengguna yang tidak mengetahui dengan edisi yang diretas dapat bermain selama berjam-jam / hari dan tiba-tiba menyadari bahwa ia tidak bisa menyelesaikan permainan atau naik ke tingkat berikutnya, karena permainan itu memiliki "bug". Yang tidak diketahui pengguna adalah bahwa bug ini hanya terjadi pada klien yang diretas.
Kesimpulan
Lebih pintar dari kerupuk. Menipu mereka agar berpikir pekerjaan itu dilakukan. Lakukan copyprotection dan ketahuilah bahwa cracker yang lebih canggih akan dapat menghapusnya. Tetapi mereka mungkin tidak ingin memainkan 50 level untuk memeriksa apakah celahnya juga berfungsi.
Begitu mereka menyadari masalah ini, mereka mungkin mulai memecahkannya juga. Tetapi jika Anda membagi game menjadi paket-tingkat, Anda masih dapat memvalidasi antara setiap unduhan paket. Jadi, begitu Anda menerima data hash klien yang diretas, maka jalankan eksekusi dan matikan game pada klien. Whoops game crash. Jangan katakan ini karena diretas. Kesalahan program bisa terjadi. :-)
Sekali lagi, ini bukan bukti peretas. Tapi itu mungkin cukup mengganggu mereka untuk pindah ke game berikutnya. Terakhir, Anda juga bisa mengeluarkan pembaruan reguler untuk gim dan hanya versi terbaru yang dapat "memposting catatan" dll. Sehingga pengguna yang aktif harus memperbarui untuk tetap terhubung.
sumber
Saya telah melakukan beberapa dekompilasi dan peretasan apk untuk sementara waktu (bukan warez, tetapi mod dan peretasan sebagian besar ke aplikasi google dan kerangka kerja android, selalu mematuhi kebijakan xda-developer).
Setelah Anda belajar membaca smali, hampir sama dengan membaca kode java asli (tetapi dengan lebih banyak LOC). Jadi, kode apa pun yang Anda tambahkan untuk memeriksa kunci dapat ditemukan dan dihapus atau diganti. Anda bahkan tidak perlu mengkompilasi ulang setiap kali untuk menghilangkan lebih dari satu (beberapa pencarian melakukan keajaiban untuk menemukan potongan kode yang sama) dan, bahkan jika siklus kompilasi / kompilasi ulang diperlukan untuk menemukannya, hanya masalah satu atau dua menit untuk mendekompilasi: semuanya diotomatisasi oleh apktool dan bahkan lebih oleh apkmanager.
Karena itu, saran saya kepada Anda adalah untuk mengimplementasikan semacam tabel penilaian online atau serupa, dan ketika pengguna melihat tabel skor online, Anda dapat memeriksa kode hash yang Anda terapkan dan membandingkannya dengan akun gmail terkait. Dengan begitu Anda dapat melaporkan peretasan ke google dan mengirim pesan jahat ke pengguna warez, menjelaskan mengapa itu ilegal.
Tentu saja, peretasan baru dapat diterapkan untuk menghilangkan tabel penilaian, tetapi itu akan mengurangi minat untuk warez.
Semoga berhasil.
Memperbarui
Setelah meneliti untuk menjawab pertanyaan ini: Menyuntikkan kode ke APK (benar-benar tentang mekanisme DRM Amazon), saya dapat memberi tahu sedikit tentang bagaimana Amazon melindungi aplikasi: itu termasuk metode untuk memeriksa validitas instalasi di mana-mana (Anda dapat melihat contohnya bagaimana mereka melakukannya dalam jawaban saya untuk pertanyaan itu). Ini akan membuat upaya apa pun untuk meretas aplikasi tidak terlalu sulit, tetapi sangat membosankan. Saya percaya itu adalah poin kuat: peretas tidak akan mau menghabiskan begitu banyak waktu melakukan begitu banyak tugas berulang: itu tidak menantang dan membosankan. Kelemahan utama yang saya lihat dalam pendekatan itu adalah kemungkinan untuk meretas aplikasi Amazon itu sendiri untuk selalu memberikan jawaban yang valid, tentu saja. Tetapi, jika Anda mencampur cek hash Anda saat ini dengan semacam cek online yang tersebar di antara metode Anda, saya yakin peluangnya untuk diretas dapat dikurangi secara drastis.
sumber
Diambil dari solusi saya dari pos ini Hindari apk retak
Laksanakan perpustakaan lisensi Anda sendiri
Saya juga merujuk Anda untuk melihat ini dari rekaman YouTube Google I / O 2011:
Menghindari Bajak Laut dan Menghentikan Vampir
EDIT:
Catatan Presentasi dari Menghindar Bajak Laut dan Menghentikan Vampir
Beberapa titik kunci dasar
sumber
#%3ar.page.15
di URL. Jika Anda tidak secara otomatis diarahkan ke halaman itu, pastikan untuk melihat tautan untuk melihat di mana / halaman apa yang seharusnya Anda lihat.Saya tahu Anda tidak benar-benar kebingungan, tetapi saya benar-benar perlu bereaksi terhadap ini:
ProGuard sangat dapat diandalkan dalam pengalaman saya, dan ini walaupun saya menggunakan beberapa fitur canggih seperti AIDL dan beberapa kode asli yang memanggil metode Java .. Dibutuhkan sedikit kerja untuk membaca dokumentasi dan melakukan hal-hal dengan benar, tetapi begitu Anda sudah ada ProGuard yang sangat andal dan juga mengoptimalkan aplikasi Anda.
Trik keamanan / kriptografi kustom bagus, tetapi tanpa kebingungan itu seperti melempar batu ke dalam air menurut pendapat saya yang sederhana.
Saya telah menggunakan ProGuard dalam produksi selama berbulan-bulan, dan itu berfungsi dengan sempurna.
Jika Anda suka belajar, maka baca manual ProGuard dengan seksama, bereksperimenlah dengannya, dan periksa log keluarannya.
sumber
Peluangnya, bahwa ada lebih banyak programmer yang berbakat daripada ANDA (berlaku untuk semua programmer), adalah 100%. Dan jika itu benar, Anda tidak dapat memperbaiki peretasan. Tetapi Anda dapat menghabiskan banyak waktu dan upaya untuk bangkrut.
Jika Anda ingin menghasilkan uang serius, Anda perlu melakukan riset pada kelompok pengguna target Anda, dan ilmu perilaku. Anda perlu membuat pengguna bermain yang menghasilkan uang baru, dan hanya itu.
Selain itu, Anda salah semuanya. Peretas adalah anggota paling aktif dari basis pengguna Anda, Anda hanya berperilaku dengan cara yang tidak Anda inginkan.
Ambil game Zynga di Facebook misalnya, apakah Anda pikir Anda diretas? - Tentu, dan sekitar +100000 pemain hanya bermain, karena kamu dapat menggunakan bot, itu mengotomatiskan segalanya.
Memiliki botnet basis pengguna aktif yang besar dari orang-orang yang sebenarnya, membuat gamer tipe pengarsip ingin memainkan permainan - dan jika permainan Anda, dan itu terlihat keren, maka Avarage Joe juga ingin bermain. Jika Avarage Joe bermain, maka teman-temannya mungkin ingin bermain, dan kamu mungkin tidak akan peduli dengan yang lain, maka menjadi lebih baik dari temannya, menghabiskan waktu atau memiliki sesuatu untuk diajak mengobrol. Teman-teman Joe yang rata kemungkinan besar bersedia membayar untuk menjadi lebih baik daripada Joe, tetapi Anda ingin berinvestasi dalam sesuatu yang membuat mereka bisa menjadi lebih baik.
Selain itu jika nilai sebenarnya adalah memainkan game secara gratis, maka pengguna yang menggunakan versi hack gratis, kemungkinan besar tidak akan pernah membayar untuk itu. Tapi, kamu Avarage Joes dan teman-teman mereka mungkin saja. Jadi ini seperti iklan termurah yang bisa Anda miliki. Jika Anda ingin menghasilkan uang dari basis pengguna besar Anda, maka buat saja versi baru gim dengan perubahan kecil pada level dan grafik.
sumber
Pembajakan akan selalu menjadi masalah. Dengan cracker besar lebih baik dalam memainkan game Security Meskipun Obscurity ini daripada pengembang.
sumber
Sungguh pertanyaan yang menarik dan mengganggu. :-) Sebagai latihan, Anda dapat mencoba melepaskan aplikasi melalui Amazon; mereka memiliki mekanisme DRM sendiri; Saya ingin tahu apakah ini bekerja lebih baik daripada ProGuard ...
sumber
Salah satu elemen kunci menurut saya adalah untuk menyebarkan kode sehingga tidak semua di satu tempat. Jika Anda memiliki fungsi bernama LicenseChecker.checkLicense () yang mengambil lisensi dan memeriksanya, Anda dapat yakin itu akan segera dinonaktifkan.
Satu keuntungan yang Anda miliki adalah bahwa cracker tidak dapat melihat komentar kode Anda (dan, jika Anda mengaburkan, metode / nama variabel), maka buatlah sesuatu yang aneh. Di onCreate () dari satu aktivitas, Anda mendapatkan ID lisensi. Di onResume (), Anda mendapatkan nilai lain untuk memeriksanya. Mungkin membuat utas dan melakukan beberapa pemeriksaan di sana. Dan kemudian, beberapa kode lain yang tidak relevan (mungkin kontrol pemain) dapat mengambil nilai dan membandingkannya dan menyimpan hasilnya di suatu tempat. Kemudian tiga bagian kode yang tidak relevan lainnya akan secara independen memeriksa nilai itu dan menonaktifkan aplikasi Anda jika tidak cocok.
Sekarang saya harus mengatakan di muka bahwa ini dapat menyebabkan sakit kepala untuk diri Anda sendiri - jelas, berantakan, kode jahat lebih sulit untuk di-debug dan cenderung menyebabkan kesalahan. Kasus terburuk, Anda membuat positif palsu dalam aplikasi yang dibeli secara sah.
Dan, tentu saja, semuanya dapat direkayasa ulang - begitu cracker menemukan tempat di mana aplikasi dinonaktifkan, mereka melacak kembali nilai yang sedang dibaca. Mereka kemudian dapat melacak kembali di mana itu disimpan, dan melacaknya kembali ..... atau, lebih mudah, mereka hanya dapat menonaktifkan pemeriksaan terakhir (itulah sebabnya saya merekomendasikan 3 tempat berbeda, semua memicu keterlambatan). Keamanan hanya sebaik tautan terlemah.
Anda tidak akan bisa menghentikan pembajakan. Taruhan terbaik Anda adalah untuk menunda penyebaran salinan bajakan sampai hype awal tentang aplikasi Anda telah tenang.
sumber
Pertama, saya TIDAK menganggap diri saya pro di bidang keamanan SW, tetapi:
Saya pikir hal yang penting adalah membiarkan aplikasi bergantung pada beberapa bagian pada tanda tangan cek. Jangan biarkan itu memengaruhi dengan segera, tetapi biarkan ia mengatur beberapa flag atau mengubah beberapa nilai. nanti, gunakan flag-flag itu, periksa, biarkan tidak ada / salahnya menyebabkan pengecualian dari beberapa jenis yang mungkin akan menghentikan aplikasi. Selama pemeriksaan tanda tangan hanya relevan pada saat ini, mudah untuk mem-bypassnya, untuk menghapus garis, setelah menyentuh lebih banyak area dalam kode, aplikasi Anda menjadi lebih sulit (atau kurang mudah ...) untuk diretas. Juga seperti yang saya lihat, tidak semua cek harus memanggil rutin yang sama untuk sanksi, karena ini juga akan memudahkan untuk menemukan mekanisme perlindungan dan menghentikannya.
Tentu saja, sanksi untuk mengambil dalam kasus SW ilegal dapat bervariasi, Anda mungkin ingin menutup aplikasi ketika digunakan secara ilegal, tetapi Anda mungkin juga ingin tetap menjalankannya, dan hanya mengirim pesan yang meminta pengguna untuk membeli salinan resmi aplikasi.
Jika ini hanya apa yang tidak ingin Anda dengar, maka maaf untuk waktu Anda :)
sumber
Pengguna Android hanya akan menerima rasa sakit dari rumah telepon yang konstan. Satu-satunya aplikasi Android yang aman adalah aplikasi Android yang selalu terhubung.
Ini sebagian besar karena penolakan Google untuk mengunci instalasi, seperti yang dimiliki Apple. Di iOS Anda harus melakukan jailbreak pada ponsel. Di Android Anda dapat memuat APK apa pun pada stok, instal pabrik.
Simpan sebagian / sebagian / semua konten Anda di server; kirimkan dalam potongan; memvalidasi lisensi / sesi pada setiap panggilan.
sumber
Akan sangat sulit untuk menghambat perilaku semacam ini. Apa pun yang ditangani di sisi klien dapat diretas menggunakan dekompilasi dan modding APK, pengeditan memori dengan perangkat lunak seperti Game Guardian dll.
Satu-satunya cara saya bisa melihat bagaimana menyiasatinya, adalah membuat game online. Atau ada fungsi tertentu yang ditangani secara online. Atau jika enkripsi anti-tamper seperti denuvo pernah tersedia untuk Android / iOS.
sumber