- 締切済み
プログラムの改造
80386(?)のプログラムを解析しているのですが、アーキテクチャなどについて詳しくわからないので、つまづいております。 やりたいことは、80386のexeファイルに自作のプログラムを追加したいんです。 が、具体的に、exeファイルをどういじれば、可能なのか? 既存のプログラムを上書きするのはできたので、それらをいじる方法ではなく、他のセグメントにジャンプする方法(?)や、またそれらのコードを、どうexeファイルに入れればいいのか(既存のセグメントのデータの後ろに追加するのか、それとも・・・?)。が知りたいのです。 どなたか、ご教授お願い致します。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- yokohamahope
- ベストアンサー率40% (782/1955)
汎用機の時代のイメージでしか回答できませんが、何かの参考になれば。 >やりたいことは、80386のexeファイルに自作のプログラムを追加したいんです。 >が、具体的に、exeファイルをどういじれば、可能なのか? 一般的には、exeのソースプログラムを修正し、リコンパイルして対応します。 exeに自作プログラムを呼び出す命令を追加するのですが、追加する部分はそのロジックを理解していないと見つけられません。 当該プログラムがOS等から起動された時に1回だけ自作プログラムを呼び出すのか、最後に1回だけ呼び出すのか、何かのイベントが発生する都度毎回呼び出すのか、それは必要とする処理で変わります。つまりロジックを理解した上で初めて目的とする修正が可能になります。 (まさか、あたかもデータファイルにデータを追加するようなイメージで、exeファイルの最後に自作プログラムを追加するなんて考えられてはいないですよね?) >既存のプログラムを上書きするのはできたので 何ができたのでしょうか?上書きは一般的にはリコンパイルで行います。 exeに直接機械語を埋め込んで上書きするような似た方法も昔はとりました。オンラインプログラムの修正の必要がありオンラインを停止できない場合に、メモリ上のプログラムに直接機械語を埋め込むやり方でした。このようなことのためにわざわざプログラム中に修正用の領域を確保していたものです。 なおその修正は、上の例の場合ソースプログラムレベルでは単に目的プログラムをCALLする命令だけでしだが、機械語レベルではメモリ空間の確保→目的プログラムのメモリ空間へのロード→制御委譲(分岐)のような数十の命令で構成されました。 >他のセグメントにジャンプする方法(?)や、またそれらのコードを、どうexeファイルに入れればいいのか(既存のセグメントのデータの >後ろに追加するのか、それとも・・・?)。が知りたいのです。 他の回答にもあるように、もう少し調べた上で具体的に質問されることがいいでしょう、
> 調べ上げたいから、質問してるのです。 改造系の質問がされた時、ターゲットとなるプログラムが具体的に示されていなかったり、それをどうしたいのかはっきり書いていないものはたいてい、よろしくないことをしようとしているか、実はよく解っていないかのどっちかだよ。もしそうじゃないなら、回答者にケンカ売る前にちゃんと補足に書こうぜ?もし書けないんだったら私の予測が当たっていることになるけど、どうよ? > そのソフトが、市販かどうかは、何も言ってません。 うかつに答えるとやばい話に発展する危険があるから、市販ソフトかどうか聞いてるわけ。そうじゃないなら初めからそう書かないと。それに昔のDOSの頃だったら数kBのexeがあったけど、今のMB単位に達するような大規模なexeをソースなしで解析するなんて、普通じゃできない。少なくともここで聞いているようじゃ無理だ。 それと、この手のオープンな場所で質問する時は、違法になるおそれがある質問に具体的回答が付くことは少ないか、付いても削除されるものだと言うことは覚えておくべきだね。それを踏まえて質問しないと。
- Lchan0211b
- ベストアンサー率61% (573/930)
それは、80386アーキテクチャの話ではなく、 Windowsのexeフォーマットの話です。 通常、改変が認められているプログラムは ソースプログラムもあわせて提供されていますから、 そのソースを修正して再ビルドすれば、自作の処理を追加できます。 ソースプログラム無しで、バイナリファイルを直接改造する方法を この質問サイトで回答するのは、ライセンス違反の増長や ウィルス作成の幇助を招く可能性が高いと考えられますので、 【公序良俗に反する行為】として、このサイトではこれ以上回答できません。 (参考) http://psguide.okwave.jp/guide/prohibition.html
補足
ソースも合わせられてない場合もあるかと思いますが。 回答できないなら、あきらめるしかありませんね。
- zwi
- ベストアンサー率56% (730/1282)
もう何も言いません。がんばってください。
補足
そちらこそ、がんばってください。
そうするには、改造しようとしているプログラムを徹底的に解析して、どこで何をやっているのかを把握しなければなりませんが、それって自力でやれそうですか?ここみたいな質問サイトのやりとりで、何とかなる内容ではないですが。 あえて冷たい言い方をすれば、具体的にどういじればできるのかなんて問いを発している時点で無理でしょう。解析するって言うのは、それを自力で調べ上げることですからね。質問から窺えることは、レベル1のキャラでラスボス戦に突っ込もうとしているように見えます。 そもそもそのプログラムが、改造を認めているものなのかも疑問です。市販ソフトだと、改造どころか解析自体を利用許諾で禁じているため、おおっぴらに質問しちゃいけない話になっちゃいますよ。
補足
調べ上げたいから、質問してるのです。 そのソフトが、市販かどうかは、何も言ってません。
- zwi
- ベストアンサー率56% (730/1282)
PEファイルの構造やアセンブラ・機械語の勉強をしてくださいとしか言えません。 ところで今時80386ですか?
補足
命令の仕様の本はいくつかもっているのですが、exeのヘッダなどは、今もっている情報では足りないと思っています。 >ところで今時80386ですか? 今時、「今時」なんていう言葉を使っている人がいるとは思わなかったです。
補足
その調べるのがつまづいてるから、質問してるわけなんですが。。。