3

誰かが難読化されたアプリケーションを再コンパイルして、悪意のあるデータをサーバーに送信できないようにしようとしています。アプリケーションの versionCode と packageName の SSL 化された PHP_POST を実行しています。これらの POSTED 変数はすべて、バージョン アップグレードごとに変更される署名検証とともに、非対称暗号化によって暗号化されます。チェックサムを使用することを考えましたが、これらの方法は Google によって公式にサポートされておらず、調査によると、チェックサムは正当なユーザーを混乱させる可能性があることを意味するエラープルーフではないことが示されています。

これらすべてに加えて、100% 合法ではないものが検出された場合、IP/Mac アドレス/IMEI/シリアル/Android_ID/etc を介してサイトを禁止します。

100% 保護できるものはなく、良いセキュリティと悪いセキュリティの違いは、セキュリティを破るのにかかる時間/お金/労力が、セキュリティによって保護されているアイテムよりも高く評価されることであることを理解しています. これを念頭に置いて、アプリケーションを保護するために使用できる他の方法や、現在のセキュリティに追加するために実装する必要があるアイデアはありますか?

ちなみに、難読化された apk(jar) を逆コンパイル/再コンパイルするのはどれくらい簡単ですか? (つまり、アプリケーションはすでに侵害されており、逆コンパイラは最後のキーがあった場所を単純に調べることができるため、キーを何度変更してもかまいません)

4

1 に答える 1

2

まず第一に、独自の暗号化を行わないでください。SSL を適切に (!) 実行している場合、送信中のデータを改ざんなどから保護するのにおそらく十分です。アプリに資格情報を保持する必要があるため、通常は注意が必要な方法でアプリを認証する必要があります。これにはさまざまな方法がありますが、現在、標準の (そして Google が推奨する方法) は、Google Play サービスを使用してトークンを取得し、サーバー アプリで検証することです。詳細はこちら:http ://android-developers.blogspot.jp/2013/01/verifying-back-end-calls-from-android.html

これは完璧ではありませんが、思いつくほとんどの非標準的なソリューションよりもおそらく優れています。

逆コンパイルは一般的に簡単で、システム API を呼び出している場所 (MAC アドレスの取得、ハッシュ、暗号化など) を見つけるのは簡単なので、難読化はあまり変わりません。

于 2013-02-18T08:33:46.237 に答える