【解消】質問投稿時のカテゴリ選択の不具合について

 Lhaplusなどの圧縮ソフトウェアでは、exe形式の自己解凍アーカイブ作成機能が付いていることが多いですが、あれはどうやって作成しているのでしょうか? Lhaplusの場合は、フォルダやヘルプを見た限りは、サードパーティ製のコンパイラを利用しているわけでもないようですし・・・。 作者さん方自身で機械語に変換するプログラムを書いていたりするのでしょうか?

A 回答 (3件)

書いたことはないですがこんな感じでインプリできると思います。


1.解凍用ソースをコンパイルする(この実行コードをAとする)
2.Lhaplusで自己解凍アーカイブ作成時に、まず圧縮ファイルの先頭にAを書き込む。
3.続けて圧縮ファイルに、データを圧縮化形式で継ぎ足す。

Lhaplusで実際どうやっているかは、逆コンパイルするか作者にメールして見るのが早いでしょうー。
    • good
    • 0
この回答へのお礼

 ご回答ありがとうございます。
 ファイルの継ぎ足しをしているだけだったのですか。高等な技術が必要かと思っていましたが、意外に簡単な仕組みで実現できるものなのですね・・・。

お礼日時:2007/12/08 22:31

圧縮ソフトウェアはあらかじめ解凍プログラムをコンパイルして実行形式にしたものをデータとして保持している。

解凍プログラムの実行形式の後ろに圧縮したデータを繋げたものを生成すると自己解凍アーカイブになる。

もちろん解凍プログラムは自身の後ろの部分を解凍対象のデータとするように組んでおく必要があります。あと、実行形式にファイルサイズとか含まれていれば自己解凍アーカイブの作成時に書き換える必要があります。ですが、これらは実行形式のフォーマットを知っていれば決まった位置の数値を幾つか書き換えるだけなので難しくはありません。
    • good
    • 0
この回答へのお礼

 ご回答ありがとうございます。後ろに繋げるだけで作成していたのですね。
 ファイルサイズの操作はなんか難しそうに聞こえますが、そんなに難しいことではないのですね・・・。

お礼日時:2007/12/08 22:47

C言語 でインテル互換CPUは動きます。


Windows OS上でBasic言語のようなランタイム、コンパイラなどはなしで動作します。
C言語の開発ツールは多くあります。機械語:アセンブラ とは違います。
実行イメージは 圧縮.exe が実行されると、読み込まれたC言語のプログラムで、自分のファイルの一部に取り込まれているデータを自己解凍していく。 
 運送屋(圧縮ソフト)が荷物を積んで(圧縮)、配送先で
運転手が自分(埋め込まれた解凍ソフト)で荷降ろし(解凍)するイメージ。
    • good
    • 0
この回答へのお礼

 ご回答ありがとうございます。
 バイナリを直接扱ったことがないので、ファイルをプログラムの中に取り込むことは難しいような印象があったのですが、そこまで難しいことでもないのですね・・・。

お礼日時:2007/12/08 22:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報