Androidハッキング課金処理のハッキング∼その対策
自己紹介• 第0制作部• プログラマー / SE的な• 課金ライブラリの設計・開発 → iOS / Android
自己紹介• 音屋さん• Cubaseユーザー (中田ヤスタカさんと同じやつ)• GWにニコ動主催の音楽系 コンテストで賞を受賞• OSSもやってます
お品書き• …正直な話• …ハッキング?• …どうやって?• …簡単なの?• …対策は?
このお話の背景• 課金ライブラリの開発を始めた• お金が絡むのでミスはできない• 簡単にクラックされたらまずい• どうすれば対策がとれるのか• そして…
逆に、クラッカーはどうやって  アタックをしてくるのか
ここから本題
正直な話、課金処理のハッキングは簡単
具体的には…
動作検証を行うためのプログラムコードがGoogle側で用意されている
それを使えば「お金を払った時と同等の」処理結果を得られる
動作検証用のコードを実行するように改ざんすれば…。
もちろん、悪用はダメ!です
悪用したらそれは「クラッキング」
とは言え、条件があります• ドキュメントのプログラム 解説通りに作っちゃったアプリ• リファレンス実装のソースを そのまま組み込んでしまったアプリ
そういう会社さんが意外と多い気がします
…ハッキング?• Android=Dalvik VM• バイトコード(dex)• リバースエンジニアリング  (簡単)
どうやって?• *.apkをデバイスからPCへコピー• 逆アセンブル• アセンブリコードを編集• 再度アセンブル• バイトコードを差し替え
…逆コンパイルじゃないの? Javaソースコードは?
Javaソースコードには戻しません。(高レベル言語は完全に復元できない)
Dalvik VM のアセンブリ言語を使います   既存CPUのアセンブリコード作成や JVMのインストラクションを知っていれば、    マニュアルを読まなくてもOK。
簡単なの?
ツールは全て          っている• Android SDK• apktool (逆アセンブラ)• smali (アセンブラ)
各種ツールはLinux系、Mac OSX 向け。         ※Windowsは知りません
アセンブリコード編集• せいぜい数行編集するだけの簡単なお仕事• リファレンス実装はJavaコードで 公開されている。誰でも見れる。 肝になる処理の動作原理が どうなっているかが完全に分かる。  編集すべき箇所が「必ず」特定できる。• 特定の文...
ハッキングされない為には  どうすればいいの?
実はすごい単純• クリティカルな処理はアプリで実装せず 外部のサーバープログラム上で 実行する。(文書内にひっそりと書いてある…)• ある意味、Googleの文書は意地悪。 実は公式文書の解説やリファレンス実装 内容はセキュアではない。
見落としやすい注意書きのわずか数行を見逃すとアウト
開発中の課金ライブラリは対策済み
おわり
Upcoming SlideShare
Loading in...5
×

Android In-app Billing (Rev1,2) Hack (*legacy)

2,188

Published on

追記
#この記事は初期の In-App Billing のプログラミング仕様(V1)の時代に書いたものです。
#現在の仕様は大分改善されているので、このスライド内容と現状は一致しないかもしれません。

Android の In-app Billing のセキュリティ関係のライトニングトーク資料。
文中の課金ライブラリとはクロスプラットフォーム前提の物です。

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,188
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript of "Android In-app Billing (Rev1,2) Hack (*legacy)"

    1. 1. Androidハッキング課金処理のハッキング∼その対策
    2. 2. 自己紹介• 第0制作部• プログラマー / SE的な• 課金ライブラリの設計・開発 → iOS / Android
    3. 3. 自己紹介• 音屋さん• Cubaseユーザー (中田ヤスタカさんと同じやつ)• GWにニコ動主催の音楽系 コンテストで賞を受賞• OSSもやってます
    4. 4. お品書き• …正直な話• …ハッキング?• …どうやって?• …簡単なの?• …対策は?
    5. 5. このお話の背景• 課金ライブラリの開発を始めた• お金が絡むのでミスはできない• 簡単にクラックされたらまずい• どうすれば対策がとれるのか• そして…
    6. 6. 逆に、クラッカーはどうやって アタックをしてくるのか
    7. 7. ここから本題
    8. 8. 正直な話、課金処理のハッキングは簡単
    9. 9. 具体的には…
    10. 10. 動作検証を行うためのプログラムコードがGoogle側で用意されている
    11. 11. それを使えば「お金を払った時と同等の」処理結果を得られる
    12. 12. 動作検証用のコードを実行するように改ざんすれば…。
    13. 13. もちろん、悪用はダメ!です
    14. 14. 悪用したらそれは「クラッキング」
    15. 15. とは言え、条件があります• ドキュメントのプログラム 解説通りに作っちゃったアプリ• リファレンス実装のソースを そのまま組み込んでしまったアプリ
    16. 16. そういう会社さんが意外と多い気がします
    17. 17. …ハッキング?• Android=Dalvik VM• バイトコード(dex)• リバースエンジニアリング (簡単)
    18. 18. どうやって?• *.apkをデバイスからPCへコピー• 逆アセンブル• アセンブリコードを編集• 再度アセンブル• バイトコードを差し替え
    19. 19. …逆コンパイルじゃないの? Javaソースコードは?
    20. 20. Javaソースコードには戻しません。(高レベル言語は完全に復元できない)
    21. 21. Dalvik VM のアセンブリ言語を使います 既存CPUのアセンブリコード作成や JVMのインストラクションを知っていれば、 マニュアルを読まなくてもOK。
    22. 22. 簡単なの?
    23. 23. ツールは全て っている• Android SDK• apktool (逆アセンブラ)• smali (アセンブラ)
    24. 24. 各種ツールはLinux系、Mac OSX 向け。 ※Windowsは知りません
    25. 25. アセンブリコード編集• せいぜい数行編集するだけの簡単なお仕事• リファレンス実装はJavaコードで 公開されている。誰でも見れる。 肝になる処理の動作原理が どうなっているかが完全に分かる。 編集すべき箇所が「必ず」特定できる。• 特定の文字列をGREP検索すればOK
    26. 26. ハッキングされない為には どうすればいいの?
    27. 27. 実はすごい単純• クリティカルな処理はアプリで実装せず 外部のサーバープログラム上で 実行する。(文書内にひっそりと書いてある…)• ある意味、Googleの文書は意地悪。 実は公式文書の解説やリファレンス実装 内容はセキュアではない。
    28. 28. 見落としやすい注意書きのわずか数行を見逃すとアウト
    29. 29. 開発中の課金ライブラリは対策済み
    30. 30. おわり

    ×