31

バイナリにソース ファイルへの参照はありますか? バイナリで文字列を実行しようとしましたが、リストされているソースファイルへの参照が見つかりませんでした...

4

3 に答える 3

32

objdumpソースファイル名を参照する、バイナリにコンパイルされた DWARF デバッグ情報を使用します。バイナリがデバッグ情報を使用してコンパイルされていない場合、またはobjdumpソース ファイルが見つからない場合は、出力にソース コードが含まれず、アセンブリのみが得られます。

stringsDWARF は圧縮を使用するため、バイナリでを使用する場合、ソース ファイル名は表示されません。

于 2010-03-24T22:31:03.810 に答える
12

バイナリ内の dwarf 情報には、命令 (実際には命令ポインターまたは IP) とソース ファイルおよび行番号の間のマッピングが格納されます。ソース ファイルは完全なパスを使用して指定されるため、バイナリを移動しても見つけることができます。この情報を表示するには、使用できますobjdump --dwarf=decodedline <binary>(もちろん、バイナリは でコンパイルする必要があります-g)。

あなたがそれを言うobjdump -S <binary>と、このドワーフ情報を使用して、逆アセンブリとともにソースコードを提供します.

于 2012-12-03T18:42:32.697 に答える