-2

実行可能ファイル (C プログラム) 内の char 配列にいくつかの構成情報を格納できるようにしたいと考えています。そして、実行時にその配列の内容を変更する必要があります。しかし、プロセスからファイルを開くことができません。それで...それは可能ですか?もしそうなら-トリックは何ですか? よろしくお願いします。

[1] 問題はそれを行う方法であり、それは良い考えではないのですか?

[2] 実行時に WRITE TO PROCESS' OWN EXEC を実行したいのは、その方法に興味があるからです。ちょっとしたハッキン​​グと考えてみましょう。

4

3 に答える 3

1

解決しました。fork() + execl() の組み合わせで実行可能ファイルのコピーを作成し、問題なく変更してから、 fork + execl mv で元の実行可能ファイルを変更したものに置き換えます。

于 2013-02-06T19:35:05.843 に答える
0

実行可能ファイルへの書き込みは、ほぼ確実に間違った行為です。ここで最も簡単なのは、構成ファイルを使用して、そこから char 配列に読み込むことです。

于 2013-02-06T11:17:30.600 に答える
0

それが悪い考えであることはすでにわかっているので、あえてそれを繰り返しません。

実行可能ファイル形式について読んだほうがよいでしょう。ファイルはおそらく ELF 形式ですが、コマンドで確認できますfile

一般に、ファイルはセクションで構築され、各変数にはセクション内のオフセットがあります。
このnmコマンドは、特定のシンボルのセクションとオフセットを教えてくれます。
各セクションは、ファイル内の特定のオフセットから始まります。objdumpコマンドはこれらのオフセットを見つけることができると思います。

BSS セクションのシンボル (初期化されていない静的変数) では機能しません。これらの値はファイルに保存されません。ロード時に割り当てる必要があるという事実だけです。

これらのオフセットを取得したら、すべてが簡単です - それらを追加し、開き、シークし、書き込み、閉じます。

于 2013-02-06T11:46:15.333 に答える