• ベストアンサー

圧縮ソフトはどうやって自己解凍ファイルを作成している?

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

書いたことはないですがこんな感じでインプリできると思います。 1.解凍用ソースをコンパイルする(この実行コードをAとする) 2.Lhaplusで自己解凍アーカイブ作成時に、まず圧縮ファイルの先頭にAを書き込む。 3.続けて圧縮ファイルに、データを圧縮化形式で継ぎ足す。 Lhaplusで実際どうやっているかは、逆コンパイルするか作者にメールして見るのが早いでしょうー。

noname#82539
質問者

お礼

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

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.3

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

noname#82539
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • at121
  • ベストアンサー率41% (85/206)
回答No.1

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

noname#82539
質問者

お礼

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

すると、全ての回答が全文表示されます。

関連するQ&A