• ベストアンサー

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

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

noname#82539
noname#82539

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

  • ベストアンサー
回答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

  • 自己解凍ファイル

    質問させてください。 LhaPlusを使用して解凍圧縮をしています。 自己解凍ファイル(.exe)を作成したいのですが、 出来上がったファイルのアイコンが箱からファイルが飛び出したイメージになっているのですが、 電子レンジのイメージのファイルを作りたいと考えています。 何か設定が設定が必要なのでしょうか? また、違うソフトを使用するのでしょうか? 詳しい方がいましたら、教えてください。 よろしくお願いいたします。

  • 自己解凍用ファイル作成のフリーソフト教えて下さい。

    複数のファイルを圧縮して、1つの自己解凍ファイル(EXE形式)を作成したいのですが、手軽なソフトを教えて下さい。 以前、LZHのDOS版に挑戦したのですが、挫折してしまいました。 Windowsベースでできる自己解凍用ソフトの紹介を、宜しくお願い致します。

  • 自己解凍形式(exe)の作れるソフト

    ちょっと、分からないので、質問させていただきます。 自己解凍形式(exe)を作成したいと思います。 exeファイルの作れる操作簡単な圧縮解凍のフリーソフトを教えてください。 また、実際にexeファイルの作り方も教えていただけると嬉しいです。 よろしくお願いします。

  • 圧縮ファイルのダウンロードについて

    お世話になります。 現在、圧縮ファイル(元はエクセルです)をダウンロードできるようなページを作っています。 現状、.lzh形式で(Lhaplus使用)圧縮をし、アスキーモードでアップロードしました。 ところが、ダウンロードテストを行なうと、ダウンロードはできても、「アーカイブファイルが壊れている可能性があります。」というエラーメッセージがでてきて、その上、エクセルファイルまでおかしくなっています。 私がどこか間違った設定でもしてしまっているのでしょうか?それとも.lzh形式が良くない? 最初は自己解凍書庫がいいかな、と思いチャレンジしたのですが、.exe形式だとうまくダウンロードできませんでした。 恐れ入りますが、解決方法の御教授願います。

    • ベストアンサー
    • HTML
  • 自己解凍形式の圧縮ファイルについて

    自己解凍の圧縮ファイルを作成するために、「WinSFX32」の設定を次のように行いました。 「ウインドウタイトル」と「解凍先ディレクトリー欄タイトル」にはそれぞれタイトルを任意に入力。 「初期値解凍先ディレクトリー」は絶対パスで "c:\Program Files\TEST" 「解凍後実行コマンド」は空欄のまま EXEファイルは問題なく作成されました。 これを別の機械で実行しました。 ところが目的のファイルは  c:\(目的のファイル) 、つまりCドライブの直下に解凍されてしまいます。 別の機械は c:\Program Files まではディレクトリーがありますが、TEST のディレクトリーは存在しません。なくても自動的にこのディレクトリーを作成してその中に解凍すると聞いてますが・・ どこが間違っているのでしょうか。

  • 圧縮(zip形式)フォルダ作成

    デスクトップ上の何もない所で、右クリックをしてメニューを出して、 新規作成から、圧縮(zip形式)フォルダを選択しようとしましたが、何故か?圧縮(zip形式)フォルダというメニューが表示されません。 圧縮解凍ソフト「Lhaplus」をインストールしたら、この圧縮(zip形式)フォルダというメニューが表示されなくなりました。 「Lhaplus」をアンインストールすると、圧縮(zip形式)フォルダは表示されます。 「Lhaplus」をインストールした後に、圧縮(zip形式)フォルダを新規で作る方法、右クリックで圧縮(zip形式)フォルダをメニューに表す方法ってあるんでしょうか? ちなみに、「Lhaplus」のかわりに「+Lhaca」という圧縮解凍ソフトをインストールすると、右クリックで新規に、 圧縮(zip形式)フォルダは現れます。 「Lhaplus」をインストールしても、右クリックで新規に、 圧縮(zip形式)フォルダを出す方法があれば教えてください。 お願いします。 Lhaplus

  • 圧縮ソフトにある自己解凍的な、『暗号化ソフト』について

    CD-Rにデータを焼く際に、暗号化したファイルを、 圧縮ソフトにある自己解凍(***.exe)的な形式にして、 それを、CDの自動実行機能を使い、CD挿入時にパスワードの入力を求めてくるウィザードが出るような『暗号化ソフト』はありますでしょうか? 圧縮ソフトですれば出来ますけど、解凍に時間がかかるため、 復号化だけ出来るものがあればと思います。

  • Archive file (.rar)を解凍できるのですが・・・

    Archive file (.rar) 解凍できるのですが、何回解凍しても同じフォルダや圧縮ファイルが出ます。解決策頼みます。 解凍ソフトは LhazとLhaplus1.56 です。vista。

  • パスワード付き圧縮ファイルを解凍する際、自動でスキップできるソフトをご

    パスワード付き圧縮ファイルを解凍する際、自動でスキップできるソフトをご存知のかた、おられませんか。 lhaplusを使用しているのですが、パスワードつきのアーカイブを解凍する際、いちいちスキップボタンを押さなければなりません。 どなたかスキップの設定ができるソフトをご存知のかた、教えていただけませんか。 宜しくお願いいたします。

  • 圧縮されたファイルの解凍について

    こんばんは 教えてください。よろしくお願いします。 zip圧縮されたmp3形式のファイルがあるのですが、プロパティーを見ると、388MBもあります。 ところが、Lhaplusで解凍すると、1曲分(3.86MB)のファイルしか表示されません。 圧縮ファイルを右クリックして、Compressed zipped folderで中身をみると、沢山曲があるのがわかります。 ところが、その中身を移動も、コピーも、展開もできないのです。 ちなみに、音楽を聴いてみようとしましたが無理でした。 展開しようとすると、圧縮(zip形式)フォルダは、無効であるか、壊れています、とエラーメッセージがでます。 展開する方法はありませんでしょうか。 このファイル自体が壊れていたのでしょうか? よろしくお願いします。

専門家に質問してみよう