1

実行可能ファイル内にコメントまたは文字列として書き込むコマンドまたは方法を知っているかどうかを知りたかったのです。実際、私はすでにこれを行っていますが、XLCコンパイラを使用してこれを行いましたが、 GCC#pragma comment(user, "string")に変更する必要がありますが、 GCCではこれが認識されないという問題があります。#pragma

私の質問は、#pragmagcc の下でそれを行うことができる別の人、またはコンパイル時に実行可能ファイルに書き込まれた情報を回復するための別の処理方法を知っていますか?

ありがとう、エゼキエル

4

2 に答える 2

0

これが簡単な解決策です。ac/c++ プログラムの文字列リテラルは、通常、ELF ファイルの読み取り専用セグメントに配置されます。

あなたのコメントがパターンに従うと仮定します:

My_Comment: .... 

プログラムにいくつかの文字列定義を追加できます。

#include <stdio.h>

void main() {

    char* a = "My Comment: ...";
}

コンパイル:

$ gcc test.c

次に、実行可能ファイルでコメント パターンを検索します。

$ strings a.out | grep Comment
My Comment: ...

コメントを実行可能ファイルに埋め込むユースケースは何ですか?

ファローアップ:

-O3 フラグを指定してコンパイルしている場合、この未使用の文字列は最適化されて除外されるため、ro データにはまったく格納されません。同じ考えに基づいて、次の方法で gcc をだますことができます。

#include <stdio.h>

void main() {

    FILE* comment = fopen("/dev/null", "w");
    fprintf(comment, "My Comment:");
}

次に、コメントを検索します。もちろん、2 つまたは 3 つのシステム コールのオーバーヘッドが発生しますが、問題なく使用できることを願っています。

これがうまくいくかどうか教えてください!

于 2015-09-22T13:31:01.063 に答える