GDD2010:マーケットライセンシングを使って Android アプリケーションを守るには

マーケットライセンシングを使って Android アプリケーションを守るには
トニー チャン

マーケットライセンシングとは?
  • Androidマーケットに出ているアプリはライセンスでコントロールすることができる。
    • Licence Verification Library(LVL)がサポートされていればOK
    • APIlevel3〜
  • アプリケーションにLVLと統合する。
    • ユーザーのアプリケーションをクリックする。
    • Market Appがアプリケーションとバインドする。
    • MarketAppがGoogleライセンスサーバーと接続されて、ライセンス認証を行う。
実装のよくある間違い
  • サンプルそのままつかう
  • コードのobfuscate忘れ
  • NOT_LICENSEDが帰ってきてもアプリを終了しないという実装
  • テスト漏れ
Tips
  • コードの難読化

テクニックのひとつで、リバースエンジニアリングをやりにくくする。
コンパイルされたアプリは変更することができない

    • ProGuardツール
      • GPLで公開されている。
  • LVLモディファイ
    • コアLVLロジック
    • ライブラリの入り口、出口
    • LicenseChecker,LicenseValidator
  • switchステートメントをifに変更
    • HASHを使って新しいステートメントにかえる。
    • レスポンスコードを摩り替えるため。使われていない関数を削除したり、追加できる。
  • ポリシーインタフェースを省く
    • Proper license check and response handling
  • onCreateメソッドは難読化できない。Androidが直接参照しているためだ。
  • 頻繁なリリースをする、
  • クラックしにくくする
How to get started
  • サインアップ
  • セットアップ
    • AndroidSDKをインストールした後、LVLライブラリをダウンロードする。
    • アプリのプロジェクトのライブラリのところにLVLライブラリを追加
  • インテグ
    • ManifestにLVLを追加
    • Policyの定義
    • ServerManagedPolicy
    • StrictPolicy
  • テスト
    • ストアカウントを設定してレスポンスをテストできる。
参考文献
  • 「Market License developer guide」
  • LVL issue tracker
  • これに関するいくつかのブログポストもあるので、参照すること。