Mene からの答えは正しいですが、(言語に関係なく) コンパイルされたバイナリから文字列を抽出することがいかに簡単であるかを知らせるために、2 セントを投入したいと思いました。Linux を使用している場合は、コマンドstrings <compiled binary>を実行するだけで抽出された文字列が得られます。これをやってのけるために、何らかのリバース エンジニアである必要はありません。UbuntuマシンでEclipseバイナリに対して実行し、(切り捨てられた)出力を確認しました:
> strings eclipse
ATSH
0[A\
8.uCH
The %s executable launcher was unable to locate its
companion shared library.
There was a problem loading the shared library and
finding the entry point.
setInitialArgs
-vmargs
-name
--launcher.library
--launcher.suppressErrors
--launcher.ini
eclipse
「%s 実行可能ランチャーは、そのコンパニオン共有ライブラリーを見つけることができませんでした。共有ライブラリーのロードとエントリー・ポイントの検索で問題が発生しました。」という文字列に注意してください。出力に表示されます。この文字列は、間違いなくプログラムにハード コードされています。
文字列 (およびその他のデータ) がプログラムにハードコードされている場合、ほとんどのコンパイラはそれらをバイナリの特別なセクションに配置し、必要に応じてプログラムがアクセスできるように直接メモリにマップできるようにします。バイナリを 16 進エディタで開くと、この文字列を簡単に見つけることができます。