エミュレーションは異なるプラットフォームや別のプログラム内で実行される特定のコンピュータープラットフォームやプログラムのイミテーションです。このイミテーションを実行するソフトウェアやハードウェアは エミュレータ と呼ばれます。エミュレータは実デバイスに代わるはるかに安価な代替手段を提供し、ユーザーはデバイスにダメージを与えることを心配することなく操作できます。Android には複数のエミュレータがありますが、iOS には実際に実行可能なエミュレータはほとんどありません。iOS にはシミュレータのみがあり、Xcode 内で出荷されています。
シミュレータとエミュレータの違いはしばしば混乱を引き起こし、二つの用語を同じ意味で使用することがありますが、実際には、特に iOS のユースケースでは、それらは異なるものです。エミュレータはターゲットプラットフォームのソフトウェアとハードウェア環境の両方を模倣します。一方、シミュレータはソフトウェア環境のみを模倣します。
Android 用 QEMU ベースのエミュレータはアプリケーションの実行中に RAM, CPU, バッテリーパフォーマンスなど (ハードウェアコンポーネント) を考慮しますが、iOS シミュレータでは、このハードウェアコンポーネントの動作はまったく考慮されません。iOS シミュレータは iOS カーネルの実装すらありません。結果として、アプリケーションが syscall を使用している場合にはこのシミュレータでは実行できません。
端的に言えば、エミュレータはターゲットプラットフォームに非常に近いイミテーションですが、シミュレータはその一部のみを模倣します。
エミュレータでアプリを実行することにより、その環境を監視および操作するための強力な方法が得られます。一部のリバースエンジニアリングタスク、特に低レベルの命令トレースが必要な場合、エミュレーションは最善の (または唯一の) 選択肢です。残念ながら、このタイプの解析は Android の場合にのみ実行可能です。iOS にはフリーまたはオープンソースのエミュレータが存在しないためです (iOS シミュレータはエミュレータではなく、iOS デバイス向けにコンパイルされたアプリは実行できません) 。利用可能な唯一の iOS エミュレータは商用の SaaS ソリューションである Corellium です。
Last updated 9 days ago