それを調べたところ、IOSurfaceとリンクしていません。しかし、それが を使用していることがdlsym
わかりました。さらにリバース エンジニアリングを行った後、次のことがわかりました。
/System/Library/Frameworks/IOKit.framework/IOKit
IOServiceGetMatchingServices
IOServiceGetMatchingService
IOServiceMatching
IOMasterPort
IOIteratorNext
IORegistryEntryCreateCFProperty
IOObjectRelease
/System/Library/Frameworks/UIKit.framework/UIKit
UIGetScreenImage
/System/Library/PrivateFrameworks/IOMobileFramebuffer.framework/IOMobileFramebuffer
IOMobileFramebufferOpen
IOMobileFramebufferGetLayerDefaultSurface
/System/Library/PrivateFrameworks/IOSurface.framework/IOSurface
IOSurfaceAcceleratorCreate
IOSurfaceAcceleratorTransferSurface
IOSurfaceLock
IOSurfaceUnlock
IOSurfaceGetWidth
IOSurfaceGetHeight
IOSurfaceCreate
IOSurfaceGetBaseAddress
したがって、ここでわかるように、各フレームワーク パスの後には、各フレームワークから動的にロードされるシンボルの文字列があります。これは、Private Framework へのリンクで問題が発生しないようにするためです。実行時に読み込まれるため、静的アナライザーはこのアプリがそれを使用していることを認識できず、検出を逃れます。
私の最初の疑いは正しかったようです。IOSurface を使用して、サンドボックスの制限をすり抜けて生の画面にアクセスしています。UIGetScreenImage
また、ビデオを生成する 2 番目の方法であると思われるも使用します。また、いくつかの IOKit 関数と IOMobileFramebuffer 関数も使用します。アプリが関数から IOSurface を取得しているIOMobileFramebufferGetLayerDefaultSurface
ようです。ただし、IOKitを何に使用するかはよくわかりません。
結論として、このアプリは、静的アナライザーによる検出を回避するためにいくつかの卑劣な手法を使用しています。プライベート フレームワークにリンクするのではなく、シンボルを動的に取得します。IOSurface と IOMobileFramebuffer の組み合わせを使用して、ビデオを記録するかUIGetScreenImage
、他のモードを使用します。これはAppStoreから引き出されるトリッキーなアプリなので、必要な場合は今すぐ入手することをお勧めします。
アップデート:
このアプリは実際に AppStore からプルされたようです。引っ張られる前にコピーを手に入れることができたのは幸運だったとしたら、それは素晴らしいことです。私はそれを手に入れてよかったと知っています。
Apple はおそらく、アプリがプライベート API を使用しており、潜在的なセキュリティ上の問題と見なされる可能性があると述べて、その決定を正当化したと思われます (iTunes のパスワードを入力するのを監視するアプリは、その一例であり、恐ろしい考えです)。これがレビュープロセスの変更につながるかどうかは疑問ですが、おそらくわかりません. 私にとって興味深いことの 1 つは、開発者がアプリの動作を静的分析から隠すために使用できる可能性のあるトリックがまだたくさんあるということです。レビュープロセスは完璧ではありませんが、かなりうまく機能します。Apple がシンボルにリンクするアプリを自動的に拒否したとしてもdlsym
、検出を回避するために使用できる方法があります。
更新 2:
現在、このアプリケーションの別のバージョンが AppStore にあるようです。それは「Disp Recorder」と呼ばれ、最初のものとまったく同じアイコンを持っています。GUI は、いくつかのマイナーな変更を除いて、オリジナルのものとほとんど同じに見えます。私はまだ新しいものを元に戻していませんが、違法行為を隠すために同じ手法を使用したことは間違いありません. 新しいバージョンを元に戻したら、この回答を更新します。新しいものは 5 ドルかかりますが、ジェイルブレイクされていないデバイスで画面記録アプリが必要になったことがある場合は、プルされる前に取得する必要があります。
更新 3:
このアプリケーションがどのように機能するかについて、私は非常に正しかったようです。@coolstarorgによるRecordMyScreenというオープンソースの実装が GitHub にあります。このアプリがどのように機能するのかまだ疑問に思っている場合は、試してみることをお勧めします。