SlideShare a Scribd company logo
5. iOSのマルチタスキング                                                                          PNG画像
                                                                                                         4. Google 先生に聞く
                                                                                                                                                                                                        6. iOSアプリの構造                                 たいていは、Xcodeによりプリマルチプルドアルフ
                                                                                                            Display Recorder
                                                     3. Google 先生に聞く                                                                                                                                                                                 ァ処理が施されるため、MacのQuickLookでは表
                                                                                                                                                                                                                                                     示できない。
                                                        Capture 方法                                                                                             通常

                                                                                                                                                                 最大10分(600秒)
                                                                                                                     Display recorder UIGetScreenImage                                                       ipa形式でPC内に保存                              plist
                                                                                                                                                                                                                                                     アプリに関する各種設定
                                                                                                                                                                無制限                                              (ipa = zip file)
                                                              iOS Screen Capture API                                                                                VoIP
                                                                              nibファイル
             2. iOS の画面録画                                                                                                                                           Location
                                                                                                                                                                                                                                                     アプリケーションのインターフェイス画面。基本的
                                                                                                                                                                    Audio                                                                            にバイナリ形式で保存されている。


                                                                                                                              Display Recorderの解析スレッド                      録画中にステータスバーに                                                                その他
                                                                                                                                                                           音楽再生マークが表示
                                                                                                                           dlsym

                                                                                                                           dlopen
                                                                                                                   サウンド、動画ファイルなど各種リソースファイル
           iOS Dev Center                                                                           Direct access
                                                                                                                           UIGetScreenImage

                                                                                                                           IOSurface

                                                                                                                                                 キーワードをゲ
                                                                                                                                                        ット!
                                                                                                    Screen capture
                                                                     UIGetScreenImage
               iOS Dev Center 『capture』で検索
                                                                   Private API

                                                                   カメラアプリで連写機能実装で利用

                                                                                                                                                                                                                                                               mute500ms.caf
                        アプリをまたいで録画することはできない
                                                                   OS 4で正式にカメラ用のAPIが追加され利用されなくなった

Technical Q&A QA1703




                                              1. iOS のビデオ書き出し


                                                                                                                      iOS 
                                                                              7. バイナリ解析

                                                                                                                application hack
                                                           AVAssetWriter
                                                           AVAssetWriterInput
                    iOS Dev Center                         AVAssetWriterInputPixelBufferAdaptor
                                                                                                                                                                                       otool                                                         nm
                          What'sNewIniPhoneOS.pdf                                                                                                                                   otool -L アプリバイナリ                                            nm -u
                                                                                                                                                                                    ●アプリがリンクしているフレームワークとそのバージョンが表示される                           ●アプリがリンクしているシンボルがリストアップされる

                                              歴代OSの最新機能一覧が掲載                                                                                                                        otool -tv アプリバイナリ
                                              ビデオ書き出し周りについて調査                                                                                                                       ●ディスアセンブラコードの表示
                                                                                                                                                                                                                                             otoolでフレームワークを把握し、具体的にどの関数や
                                                                                                                                                                                                                                             定数が使われているか調査する時に利用できる。
                                                                                                                                                                                       怪しいメソッドの実装コード量や実装を確認すること
                                                                                                                                                                                       ができる。オプション次第でデータセクションの情報
                                                                                                                                                                                       を取得できたりする。                                          strings
                                                                                                                                                                                                                                         strings < アプリバイナリ > ログテキスト
                                                                                                                                                                                                                                         ●バイナリ内に含まれる文字列を抽出してくれる
                                                                                                                                                                                                           解析結果

                         専用ストア Cydia                     Jailbreak
                                                                                                                                 Do you know 
                                                                                               関数名から動作を予測することができる。

                                                                                                                               Display Recorder?
                                                                                                                                                                                UIGetScreenImageが見当たらない
                                                                                                                                                                                                                                        利用しているUIKitのバージョン
                                                                                                                                                                                ●dlsymを使っているところをみると動的に呼び出し
                                                                                                                                                                                                                                        ●UIKitのバージョンは1700。最新のSDKを利用して
                                                                                                                                                                                ている可能性は高い。
                                                                                                                                                                                                                                        いることが判明。
                                                                                                                                                                                ●strings の結果から _OBJC_IVAR_
                                                                                                                                                                                                                                        試しに古いバージョンのSDKをダウンロードして、
                                                                                                                                                                                $_DetailViewController._dylib_handler_uikit がある
                                                                                       2012年6月中旬頃AppStore登場
                                                                                                                            dmgからSDKを取り出し、XCodeにインストールして
                                        プライベートAPI?                                                                                                                              ことを発見。dlopenでシンボルを読み出し、dlsym用                           試してみたところ、そのバージョンは、iOS SDK 4.1
                                                                                       iOS の画面を録画できるアプリ                                                                         のハンドラを保持している。                                           で1300だった。



                  Reject対象!?          本来アプリをまたいで

                                                                                                    ブロ ガーを中心に話題に!                                                               AVAssetWriterの利用                                    Direct Accessモード
                                      録画はできないはず?                                                                                                                                ●strings、nmの結果からAVAssetWriterを使ってい                  ●Display Recorderには、2つのモードがあるが1つ
                                                                                                                                                                                ることが判明。
                                                                                                                                                                                                                                    は、UIKit内のUIGetScreenImage関数を使った
                                                                                                                                                                                ●定数などもnmツールの結果から利用しているプロパ
                                                                                                                                                                                                                                    Capture mode。
                                                                                                                                                                                ティの値も判明。
                                             iOS Dev Forumでも話題に                                                                                                                                                                     もう一つのDirect Accessモードは、
                                                                                                                                                                                ●これによりiOS 4.1 SDK以上を利用していることが
                                                                                                                                                                                                                                    dylib_handler_iosurfaceが用意されているところをみ
                                                                                                                                                                                確定!
                                                                                                                                                                                                                                    るとこれを使ってフレームワークバッファに直接アク
                                                                                                                                                                                                                                    セスする方法で実現されていると思われる。


       7月上旬 AppStore から消える....


                                                                                                                                       とりあえず、ゲームプレイ動画を

                                                                                                                                       撮影するのにむちゃくちゃ便利
                                                       じゃあ、AppStore公開なし
                                                          に自作してみるかと。                                                               でした....

More Related Content

More from Keisuke Hata

CCResourceAsyncLoader
CCResourceAsyncLoaderCCResourceAsyncLoader
CCResourceAsyncLoader
Keisuke Hata
 
Impact beginngers guide_1.19
Impact beginngers guide_1.19Impact beginngers guide_1.19
Impact beginngers guide_1.19
Keisuke Hata
 
Advanced cocos2d
Advanced cocos2dAdvanced cocos2d
Advanced cocos2d
Keisuke Hata
 
Introduction titanium
Introduction titaniumIntroduction titanium
Introduction titanium
Keisuke Hata
 
Hello cocos2d ios
Hello cocos2d iosHello cocos2d ios
Hello cocos2d ios
Keisuke Hata
 
Hello cocos2d ios
Hello cocos2d iosHello cocos2d ios
Hello cocos2d ios
Keisuke Hata
 
Google wave2010
Google wave2010Google wave2010
Google wave2010
Keisuke Hata
 
How To Build Last Fm For I Phone
How To Build Last Fm For I PhoneHow To Build Last Fm For I Phone
How To Build Last Fm For I PhoneKeisuke Hata
 
Mercurial&OnenoteServer
Mercurial&OnenoteServerMercurial&OnenoteServer
Mercurial&OnenoteServerKeisuke Hata
 
Wiipen
WiipenWiipen
Wiipen
Keisuke Hata
 
Are You Enjoy Ruby 1 Day
Are You Enjoy Ruby 1 DayAre You Enjoy Ruby 1 Day
Are You Enjoy Ruby 1 Day
Keisuke Hata
 

More from Keisuke Hata (14)

CCResourceAsyncLoader
CCResourceAsyncLoaderCCResourceAsyncLoader
CCResourceAsyncLoader
 
Impact beginngers guide_1.19
Impact beginngers guide_1.19Impact beginngers guide_1.19
Impact beginngers guide_1.19
 
Advanced cocos2d
Advanced cocos2dAdvanced cocos2d
Advanced cocos2d
 
Introduction titanium
Introduction titaniumIntroduction titanium
Introduction titanium
 
Hello cocos2d ios
Hello cocos2d iosHello cocos2d ios
Hello cocos2d ios
 
Hello cocos2d ios
Hello cocos2d iosHello cocos2d ios
Hello cocos2d ios
 
Google wave2010
Google wave2010Google wave2010
Google wave2010
 
How To Build Last Fm For I Phone
How To Build Last Fm For I PhoneHow To Build Last Fm For I Phone
How To Build Last Fm For I Phone
 
Mercurial&OnenoteServer
Mercurial&OnenoteServerMercurial&OnenoteServer
Mercurial&OnenoteServer
 
Math1 Vector
Math1 VectorMath1 Vector
Math1 Vector
 
Wiipen
WiipenWiipen
Wiipen
 
Gl Rotate
Gl RotateGl Rotate
Gl Rotate
 
Gl Matrix
Gl MatrixGl Matrix
Gl Matrix
 
Are You Enjoy Ruby 1 Day
Are You Enjoy Ruby 1 DayAre You Enjoy Ruby 1 Day
Are You Enjoy Ruby 1 Day
 

iOS app hacks all_map

  • 1. 5. iOSのマルチタスキング PNG画像 4. Google 先生に聞く 6. iOSアプリの構造 たいていは、Xcodeによりプリマルチプルドアルフ Display Recorder 3. Google 先生に聞く ァ処理が施されるため、MacのQuickLookでは表 示できない。 Capture 方法 通常 最大10分(600秒) Display recorder UIGetScreenImage ipa形式でPC内に保存 plist アプリに関する各種設定 無制限 (ipa = zip file) iOS Screen Capture API VoIP nibファイル 2. iOS の画面録画 Location アプリケーションのインターフェイス画面。基本的 Audio にバイナリ形式で保存されている。 Display Recorderの解析スレッド 録画中にステータスバーに その他 音楽再生マークが表示 dlsym dlopen サウンド、動画ファイルなど各種リソースファイル iOS Dev Center Direct access UIGetScreenImage IOSurface キーワードをゲ ット! Screen capture UIGetScreenImage iOS Dev Center 『capture』で検索 Private API カメラアプリで連写機能実装で利用 mute500ms.caf アプリをまたいで録画することはできない OS 4で正式にカメラ用のAPIが追加され利用されなくなった Technical Q&A QA1703 1. iOS のビデオ書き出し iOS 7. バイナリ解析 application hack AVAssetWriter AVAssetWriterInput iOS Dev Center AVAssetWriterInputPixelBufferAdaptor otool nm What'sNewIniPhoneOS.pdf otool -L アプリバイナリ nm -u ●アプリがリンクしているフレームワークとそのバージョンが表示される ●アプリがリンクしているシンボルがリストアップされる 歴代OSの最新機能一覧が掲載 otool -tv アプリバイナリ ビデオ書き出し周りについて調査 ●ディスアセンブラコードの表示 otoolでフレームワークを把握し、具体的にどの関数や 定数が使われているか調査する時に利用できる。 怪しいメソッドの実装コード量や実装を確認すること ができる。オプション次第でデータセクションの情報 を取得できたりする。 strings strings < アプリバイナリ > ログテキスト ●バイナリ内に含まれる文字列を抽出してくれる 解析結果 専用ストア Cydia Jailbreak Do you know 関数名から動作を予測することができる。 Display Recorder? UIGetScreenImageが見当たらない 利用しているUIKitのバージョン ●dlsymを使っているところをみると動的に呼び出し ●UIKitのバージョンは1700。最新のSDKを利用して ている可能性は高い。 いることが判明。 ●strings の結果から _OBJC_IVAR_ 試しに古いバージョンのSDKをダウンロードして、 $_DetailViewController._dylib_handler_uikit がある 2012年6月中旬頃AppStore登場 dmgからSDKを取り出し、XCodeにインストールして プライベートAPI? ことを発見。dlopenでシンボルを読み出し、dlsym用 試してみたところ、そのバージョンは、iOS SDK 4.1 iOS の画面を録画できるアプリ のハンドラを保持している。 で1300だった。 Reject対象!? 本来アプリをまたいで ブロ ガーを中心に話題に! AVAssetWriterの利用 Direct Accessモード 録画はできないはず? ●strings、nmの結果からAVAssetWriterを使ってい ●Display Recorderには、2つのモードがあるが1つ ることが判明。 は、UIKit内のUIGetScreenImage関数を使った ●定数などもnmツールの結果から利用しているプロパ Capture mode。 ティの値も判明。 iOS Dev Forumでも話題に もう一つのDirect Accessモードは、 ●これによりiOS 4.1 SDK以上を利用していることが dylib_handler_iosurfaceが用意されているところをみ 確定! るとこれを使ってフレームワークバッファに直接アク セスする方法で実現されていると思われる。 7月上旬 AppStore から消える.... とりあえず、ゲームプレイ動画を 撮影するのにむちゃくちゃ便利 じゃあ、AppStore公開なし に自作してみるかと。 でした....