2011-12-17 10 views
3

GNUコンパイラを使用してC++で書かれたようなLinux実行可能ファイルをデバッグモードで使用しています。私は自分の結論が正しいかどうか、それを少なくとも幾分か読みやすいものに逆コンパイルする可能性があるかどうかを知りたい。ここではいくつかの証拠となるスニペットが実行可能である:実行可能ファイルに関する情報を確認する

スニペット1

</heap> 
<malloc version="1"> 
nclears >= 3 Arena %d: 
system bytes = %10u 
in use bytes = %10u 
Total (incl. mmap): 
max mmap regions = %10u 

スニペット2

__gnu_cxx::__concurrence_lock_error 

はスニペット3

ELF file ABI version invalid ◻ invalid ELF header ◻ ELF file OS ABI invalid 

スニペット4

GCC: (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5 ◻ 
GCC: (Ubuntu/Linaro 4.4.4-14ubuntu1) 4.4.5 20100909 (prerelease) 

スニペット5

_dl_debug_vdprintf pid >= 0 && sizeof (pid_t) <= 4  
... 
_dl_debug_initialize (0, args->nsid)->r_state == RT_CONSISTENT 

ファイルには、このような読み取り可能なテキストの完全である(しかし、そのほとんどは、まだちんぷんかんぷんです)。私はあなたがリリースモードでコンパイルされた実行可能ファイルでこの種のテキストを見つけてはいけないと思います(そして、再び、私の知識は非常に限られています)。この実行ファイルで使用するデコンパイラは何ですか?

+0

これらの文字列は、プログラム内の文字列リテラルに過ぎません(最後の文字列を除く)。リリースまたはデバッグモードでプログラムで使用される文字列を読み取ることができます。また、それを逆コンパイルできるかどうかを判断するのではなく、逆コンパイルを試みるのはなぜですか? –

+0

@Seth私はそれを疑う。私はプログラムが何をしているか知っていて、それはそれらの文字列とは関係がありません。そのインタフェースは英語でさえありません。 –

+1

これらは、ライブラリのユーザではなく、ライブラリによって参照される文字列であるため、プログラムがどの言語で書かれても問題ありません。ライブラリがそれらの文字列をデバッグモードでのみ使用するか、知っている。 –

答えて

1

mainにブレークポイントを入れて実行ファイルを実行しないでください。デバッグモードの場合、完全なソースコードを見ることができます(ソースファイルが同じパスにある場合)。各ステップを踏んで、正確な引数で関数呼び出しを見ることができます。

+0

私は、もし私が知っていれば、 :)しかし、チップのおかげで、私はそれを調べます。 –