圧縮ツールでよく見かける、自己解凍形式(EXE)の出力とか。
そんなのを創るにはどうしたらいいでしょう?
アプリケーションとデータの合成の方法は?……って感じですかね。
EXE内のリソースデータをすり替える方法とか、EXEのフォーマットとかの情報とかでもいいので、よろしくお願いします。
自己解凍イメージは、圧縮ファイルを解凍するための小さなアプリと、書庫ファイルを単純にくっつけただけです。
くっつける方法の一つとしてはこんな感じ。
copy /b decompressor.exe + archive.zip sfx.exe
これがやりたいだけであれば、別にリソース差し替えも EXE フォーマット解析も必要ありません。
実行された decompressor.exe は自分のファイルの内容を走査し、書庫ファイルの先頭っぽいところを見つけて、そこから解凍しているだけだと聞いたことがあります。
それはそれとして。
リソースを差し替える API が用意されています。
UpdateResource および関連関数を調べてみてください。
EXE フォーマットについてならば、この辺がおすすめ。
http://web.archive.org/web/20040622153807/http://msdn.microsoft.com/msdnmag/issues/02/02/PE/default.aspx
http://web.archive.org/web/20040607041827/http://www.msdn.microsoft.com/msdnmag/issues/02/03/PE2/default.aspx
オリジナルの記事はなくなっちゃったようなので、Internet Archive に保存されているものを。
(うわぁ、もったいない…資料価値高いページだったのに)
なるほど。
くっつけるだけですかw
よく考えたら簡単ですね。(思いつくのは難しいが^^;
ちょっと気になるのが、exe実行するとデータの部分も勝手にメモリに乗っちゃうんですかね?
いや、この辺は少し調べればわかりそうですね^^;
ありがとうございました。
ツイート | ![]() |