#簡易的にiOSアプリで海賊版アプリの動作判別と海賊対策の噺
iOSアプリケーションの海賊行為は遡ればiPhoneOS2.0(厳密にはもっと前から存在していましたが)の頃からあります。
当時Installer(Cydiaの前身)で個別にハックしたAppStoreアプリをレポジトリ配布していたのがわりと当初の話だったかと思います。
iOS3あたりからHackulous(海賊版及びツール配布サイト)が登場し、その手法は現在の海賊版アプリの基礎を築きました。
HacklousはiOS5あたりで消滅しましたが、その後もAppcake等の海賊版配布サイトが次々と出現しiOS5の後期には誰もが簡単に海賊版をインストールすることが出来るようになりました。
Hacklousで配布されていたinstallous(海賊版AppStore)はインストールを容易にするガワと肝心のインストールをして起動できるように細工するコアに分かれています。
コアの部分は"AppSync"と言います。
mobilesubstrate(iOS7ではcydissubstrate)上で動作し、未署名(もしくは他者の署名の)アプリをインストールさせる言わばtweakです。
Hacklousが海賊版のアプリの基礎を作ったと書きましたが、実は現在もAppSyncはアップデートされており現状どの海賊版AppStoreもAppsyncを利用しています。
そのため、appsyncが存在しているかどうかを判別することで海賊版がインストール出来る端末かどうかを判定出来ます。
以下がコードです。
NSString*appsyncpath = @"/Library/MobileSubstrate/DynamicLibraries/AppSync.dylib";
if ([[NSFileManager defaultManager] isReadableFileAtPath:appsyncpath]) {
//検出された時の処理
}
仕組みは簡単でappsyncまでのパスをNSFileManagerで読み取り可能かどうか判定するだけです。
ただし、この手法で強制的にアプリを終了させたりするのは危険です。
なぜなら以下のような問題点が隠れているからです。
#問題点
・当のアプリが正規購入かどうかは加味されない。
・この手法を回避する方法がある。(後述)
・アクセスが禁止されている領域の権限を見ている(規約的に大丈夫?)
・AppSyncを海賊行為以外で利用している人もいる(後述)
・無料アプリではAppSyncを指摘するメリットが全くない。
...etc
##問題点A
この手法を回避する方法がある。
体験談ですが、私のリリースしている夜狐八重奏は上記の手法でAppSyncユーザーを弾いていましたがxconという脱獄対策回避tweakによって無効化されました。
文字通りのイタチごっこになるので、あくまで簡易的な対策ということになります。
脱獄対策回避tweakの例
xcon
break through
tsProtector P
##問題点B
AppSyncを海賊行為以外で利用している人もいます。
iDeviceのファイルアクセスをPCから行う際、もっとも利用されているのがiFunboxですが
iFunboxのapp install機能にはAppSyncが利用されています。
これは自分で用意したipa(ios package application)をAppSyncによってインストールさせる機能です。
また、AppStoreで配布出来なかったアプリを無償でipaで配布している方もいる(iKeyholeTV等)ので一概にAppSyncを利用しているユーザー=悪というわけにもいきません。
#その他の回避策
他にはInfo.plistが改ざんされるのを利用し、Info.plistのファイルサイズを比較する手法や課金での対策ではレシートのUUIDを比較する(わりと強固)方法があります。
残念ながら現状では最強の海賊版対策というものはありませんし、逆にあまりに強固なガードも考えものです。
また、コストをかけるべき場所なのかをよく考える点でもあります。
もしも有益な情報やご指摘ありましたらコメント頂けると嬉しいです。
#あと就活してます!
来年度卒業のピチピチの大学生です。
5年程iOSアプリ作ってきました!
Objective-CとArtemis(マルチプラットフォームゲームエンジン)が扱えます。
是非、気にかけてくださいましたらご連絡下さい!!うんこ!
cromteria☆gmail.com