
私は、Macbook 上のさまざまなアプリケーションを調べて、そのソース コードを確認し、特定のアプリケーションがどのように構築され、どの言語/フレームワークが使用されているかをより深く理解しようとしています。おそらく、私の混乱の一部は、アプリケーション インフラストラクチャについて十分に理解していないことに起因しています。
しかし、コンピューターに複数のアプリをインストールし、その内容に cd で移動して、すべてのディレクトリを調べましたが、実際のソース コードは見つかりません。見つかったのは、CodeSigniture ファイル、CodeResource ファイル、および .plist ファイルなどのコードだけです。.js/.py/.c/.cpp ファイルを見つけるにはどうすればよいですか?
セキュリティや知的財産権を維持するために、これらのファイルを何らかの方法で暗号化しているのではないかと思います。しかし、そうだとしたら、これらのアプリケーションを実行するために私のコンピューターはどのようなデータを読み込んでいるのでしょうか?
どのようなご意見でも大歓迎です!
答え1
プログラムは、解釈されるか (命令が必要になるたびにソース コードが解析され、システム レベルの命令に「オンザフライ」で変換される)、またはコンパイルされる (ソース コードが解析され、システム レベルの命令に 1 回変換され、システム レベルの命令は後で使用および再利用できるように保存される) 場合があります。アプリケーションが、通常コンパイルされる言語 (C、C++、C#、Pascal など) で記述されている場合、ソース コードを見ることはできません。プログラムを実行するためにコンピューターにソース コードをインストールする必要はなく、システム レベルの命令 (Windows では EXE ファイルと呼ばれるもの) のみが必要です。
ECMAscript、PowerShell、Perl、Python、Ruby などの他の言語は解釈され、それらの場合、通常はインストールされたファイルを調べることでソース コードを見つけることができます。
一部のインタープリタ言語の実装では、ソースコードを「エンコードされた」形式(Base64など)に変換し、カスタマイズされたインタープリタに追加する「ラッパー」も許可されていることに注意してください。見た目コンパイルされたプログラム (Windows 上の EXE など) のようにユーザーに提供されます。アプリケーションがこれらのいずれかを使用して作成された場合、ソースを簡単に見つけることはできません。
答え2
アプリ内にソースコードはありません。
彼らです編集済みソース コードから実際の実行可能ファイルに変換されます (TheApplication.app/Contents/MacOS/TheApplication の内部を見ると、コンパイルされたアプリ自体であることがわかります)。そこにある他のほとんどすべては、アプリが依存しているライブラリか、言語の変更などを制御する単純なプレーンテキストの XML ファイルです。
また、App Storeなどで有名な開発者のアプリをいじると、コード署名が一致しなくなったとフラグが立てられる可能性があり、それをゴミ箱に捨ててオリジナルを再度ダウンロードする必要があります。macOSはアプリの改ざんに対してますます厳しくなっています。Catalinaではさらに厳しくなり、
コード署名だけでなく、公証第三者によるアプリの改変はほぼ不可能になります。
答え3
バイナリ/実行可能ファイルをリバースエンジニアリングしたい場合は、ギドラ. YouTubeには独立系開発者によるチュートリアルもいくつかあり、始めるのに役立ちます(これは親しみやすいと思いました)。
他の回答でも述べたように、コンパイルされた言語 (例: *.cpp
、、 )*.c
では*.java
ファイルがきちんと利用できないため、調べる必要があります。