これまでのところ、一般的なコンセンサスは、APK を「クラッキング」しようと躍起になっている人を防ぐことは不可能です。難読化技術は、APK を一度「クラック」するために必要な複雑さを増すだけです。無料で APK をホストすることを提案する無数のサイトにアップロードされた後は、Android 初心者の「初心者」から離れて Google 検索するだけです。
また、あいまいさによるセキュリティは、あなたを遠くに連れて行くことはありません.
APK をハッキングから保護することに関しては、Android での APKのライセンス検証の現状について説明している次の記事をお勧めします。ここで説明されている手法により、保護する必要がある一般的な攻撃ベクトルについてのアイデアが得られるはずです。
Proguardは、 APK の難読化を開始するのに適した場所です。
難読化された APK を取得したら、次のツールを使用して実行し、逆コンパイルされたソースを確認してください。これらはすべて無料でオープンソースのツールであり、非常に人気があり、まともな「クラッカー」が最初に試すことは間違いありません
。 1. baksmali
2. apktool
3. Dex2Jar + JD-Gui
上記のツールの出力がかなり複雑で意味をなさないことに満足するまで、難読化のレイヤーをコードに追加し続けます。(コーラとピザとDVM オペコードの知識で武装した大卒者が週末に達成できることを過小評価しないでください)。
あなたが共有したリンクで説明されている手法については、.dex
Android でを保護するためにそれらを実装する方法がわかりません。そして、検証ロジックを個別に実装することになった場合.so
、「クラッカー」が行う必要があるのは、Java コード内の呼び出しを.so
.
アップデート:
を保護するための追加の難読化手順.so
。
1. 多かれ少なかれ直線的な経路をたどらないでください。
あちこちにジャンプを追加すると、保護がバイパスされた場合に個別に変更してパッチを適用し、検証する必要がある非常に多くの潜在的なターゲットが「クラッカー」に殺到することで機能します。
2. タイミング チェックを追加する
これは主に、デバッグ時と実際の実行時にコードが異なるパスをたどるようにすることで、「クラッカー」を排除するためです。2 つのポイント間の時間が通常よりも長い場合は、プログラムがデバッグされていることを明確に示しています。つまり、世界のピアノの数を計算するジャンク コードの部分に飛び込むときです。
3. 自己修正コードを書く
これも静的解析の妨げになります。たとえば、検証関数へのジャンプがバイナリに存在しないが、.so
.
上記のすべての手法 (およびその他の手法) については、アンチデバッグ手法に関する次の記事で例を挙げて説明しています。
より包括的なガイドは、Peter Ferrie による Ultimate Anti Debugging Referenceです。