• ベストアンサー

バイナリファイルから文字列を検索するコマンド

hi-mi-tsuの回答

回答No.6

sun os は使ったことが無いのですが GNU の gcc, binutils なら以下でいいと思います。 もし違ったら、同様のコマンドがあるかもしれないので探してみて下さい。 使うのは、 nm => 実行ファイル、オブジェクトファイルからシンボル一覧を出す c++filt => シンボルをデマングルする です。 関数 int hoge(int a)と double hoge(double a)が 探したいとして以下のように作業します。 % cat a.cc int hoge(int a) { return a*2; } double hoge(double a) { return a*2; } int xyz(); int main() { xyz(); } % cat b.cc int hoge(int a); double hoge(double a); int xyz() { return hoge(1) * hoge(2.2); } % g++ -c a.cc % nm a.o | grep hoge 0000000a T _Z4hoged 00000000 T _Z4hogei % nm a.o | grep hoge | c++filt 0000000a T hoge(double) 00000000 T hoge(int) % g++ -c b.cc % nm b.o | grep hoge U _Z4hoged U _Z4hogei % nm b.o | grep hoge | c++filt U hoge(double) U hoge(int) % g++ -o bin a.o b.o % nm bin | grep hoge 0804840e T _Z4hoged 08048404 T _Z4hogei % nm bin | grep hoge | c++filt 0804840e T hoge(double) 08048404 T hoge(int)

thamansa
質問者

お礼

ありがとうございます。 今日会社でちょうどnmコマンドが使えるかもとアドバイスをもらったところだったので、nmとgrepでなんとか目的が達成できそうでした。 nm -C でデマングルできるようなのですが、マングル化の文字列も同時に出力されてじゃまだったので、週明けに c++filt を試して見ます。

関連するQ&A

  • Windows・Linuxのバイナリコード解釈違い

    先日、LinuxマシンからWindowsマシンにFTPにてファイルを転送してこんなことがありました。 ・Linuxマシンから転送してきたファイルを、Windows上のサクラエディタで開く。 ファイル内容を見ると、「#!」とある ・転送したファイルをLinuxマシン上で、バイナリ表示する(odコマンドを使用) ファイル内容を見ると、「1234 ・・・・・」とある※正しいコードは忘れました。 バイナリコードと文字の対応表?を見ると 12=! 34=# ・サクラエディタで開いたファイル内容は「#!」だが、バイナリコードを見ると「!#」となるはず。 この箇所だけではなく、ファイル内の全てが、2文字ずつ同じようなことがありました。 単純に逆から書かれているわけではないと思うのですが、どういうことなのでしょうか。

  • バイナリファイル内の文字列を検索したい

    初心者で恐縮ですがよろしくお願いします。 入力された値でバイナリファイル内検索し、その値がある行を特定したいのですが、file_get_contentsしてみても歯抜けになってしまっていて、そのままの状態で文字列として取得することができません。↓でPHPはバイナリファイルも文字列として検索でいるとあったんですが・・・  http://blog.asial.co.jp/707 バイナリファイルはphpやjavascriptが該当すると認識しているんですが、正しいでしょうか?htmlゃcssファイルもバイナリファイルと言っていいんでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • たくさんのファイルから文字列を検索するコマンド

    例えば、サーバーのホームディレクトリ内にある たくさんのファイルの中から、電話番号などの文字列を 検索するには、どんなコマンドを実行すればいいのでしょうか? Linux / Unix です。

  • バイナリファイルの文字化け

    3GPファイルをバイナリエディタで書き換えたいのですが、文字列の部分が文字化けして、いまいち良くわからない状況です。バイナリエディタというものは今まで使ったことが無かったので少々解らないことだらけです、一様、フリーソフトでいくつかやってみても結果は同じでした。解決方法を教えてください。他にいいフリーソフトのバイナリエディタがあったら教えてください。OSは98SEです。因みにこれがやりたいんです。http://cgi15.plala.or.jp/uniphi/pyuki/wiki.cgi?3GPP%28AAC%29

  • バイナリエディタのstirlingで文字列を検索したいのですが、やりか

    バイナリエディタのstirlingで文字列を検索したいのですが、やりかたがわかりませんご存知の方宜しくお願いします。

  • バイナリファイルとバイナリ文字列の違い

    がわかりません。 例えば >http://e-words.jp/w/E38390E382A4E3838AE383AAE58897.html をみるとバイナリ列は1バイトを連ねたものだというらしいです。 つまり【文】という文字列を文字コードUTF-8でバイト配列化すると [1] => 230 [2] => 150 [3] => 135 となります。 (これはPHPでunpackかけましたが他の言語のGetBytes()などでも同じバイト値がでました。) この【文】という文字列はバイナリ列になるわけですよね? 例えばこの【文】という文字だけを保存したbun.txtというファイルはバイナリーファイルに なるのでしょうか? バイナリファイルの定義をみると >http://e-words.jp/w/E38390E382A4E3838AE383AAE38395E382A1E382A4E383AB.html 上記URLだと >文字コードの範囲などを考慮せずに作成されたファイル というのがバイナリファイルであるとあります。 つまりバイナリファイルとは 1バイト・・つまり8ビット(0~255)までの数値で表したものを連ねたもので なおかつ、文字コードなどの解釈を一切行わなずに、バイト値のみが記述されたデータと おもってもよいのでしょうか?

  • バイナリファイルからの文字列抽出

    バイナリファイルをCSVに変換するツールがございます。 CSV変換した後の文字列は、"日付" "数字"となっています。 今回、問題となっておりますのは、 バイナリファイルのサイズが大きく CSV変換に時間がかかってしまいます。 少しでもバイナリファイルのサイズを小さくするべく、 バイナリファイルから特定の"日付"を 抽出しようと考えておりますが、 可能でしょうか? また、その手法をご教授ください。 OSはWINDOWSです。 よろしくお願いします。

  • バイナリファイルの検索について

    いつもお世話になります。 今、検索について学習しているのですが、 文字列検索の場合はstrstrなどを使用すれば 検索できることは理解できました。 しかし、バイナリファイルの検索について理解できていません。 もし、バイナリ(画像や動画etc)ファイルの 中身を解析したい場合、 (1)JPEGなどのバイナリファイルを開く場合、fopen()でひらいてもいいのでしょうか?その他の方法ありますか? (2)バイナリファイルを開いた後、バイナリファイルの 0xfffeなど指定する値の検索がしたい場合は どのように検索したらいいのでしょうか? 関数や方法などありましたら教えてください。 どうぞよろしくお願い致します。

  • Linuxコマンドにて ファイル内の文字列を置換えしたい

    Linuxコマンドにて ファイル内の文字列を置換えしたい 内容 16進データ 22 0D 0A→22 0Aに置換えたい ※このパターンのみ 0Dを削除したい  trではダメみたい、現在は、Windowsのバイナリーエディタにて行っていますが、Linuxコマンドにて行いたい よろしく御願いします

  • FTPのアスキーモードってバイナリーモードって?

    FTPにはアスキーモードとバイナリーモードとありますが、どちらを使用したらよいか分かりません。 例えばWINDOWSのnotepadで作成したsqlファイルをUNIXサーバへ転送する時はアスキーモードでしょうか? internetでダウンロードしたEXEファイルをWINDOWSからUNIXサーバへ転送する時はバイナリーモードでしょうか?教えて頂けないでしょうか?よろしくお願いいたします。