

No.2ベストアンサー
- 回答日時:
書いたことはないですがこんな感じでインプリできると思います。
1.解凍用ソースをコンパイルする(この実行コードをAとする)
2.Lhaplusで自己解凍アーカイブ作成時に、まず圧縮ファイルの先頭にAを書き込む。
3.続けて圧縮ファイルに、データを圧縮化形式で継ぎ足す。
Lhaplusで実際どうやっているかは、逆コンパイルするか作者にメールして見るのが早いでしょうー。
ご回答ありがとうございます。
ファイルの継ぎ足しをしているだけだったのですか。高等な技術が必要かと思っていましたが、意外に簡単な仕組みで実現できるものなのですね・・・。
No.3
- 回答日時:
圧縮ソフトウェアはあらかじめ解凍プログラムをコンパイルして実行形式にしたものをデータとして保持している。
解凍プログラムの実行形式の後ろに圧縮したデータを繋げたものを生成すると自己解凍アーカイブになる。もちろん解凍プログラムは自身の後ろの部分を解凍対象のデータとするように組んでおく必要があります。あと、実行形式にファイルサイズとか含まれていれば自己解凍アーカイブの作成時に書き換える必要があります。ですが、これらは実行形式のフォーマットを知っていれば決まった位置の数値を幾つか書き換えるだけなので難しくはありません。
ご回答ありがとうございます。後ろに繋げるだけで作成していたのですね。
ファイルサイズの操作はなんか難しそうに聞こえますが、そんなに難しいことではないのですね・・・。
No.1
- 回答日時:
C言語 でインテル互換CPUは動きます。
Windows OS上でBasic言語のようなランタイム、コンパイラなどはなしで動作します。
C言語の開発ツールは多くあります。機械語:アセンブラ とは違います。
実行イメージは 圧縮.exe が実行されると、読み込まれたC言語のプログラムで、自分のファイルの一部に取り込まれているデータを自己解凍していく。
運送屋(圧縮ソフト)が荷物を積んで(圧縮)、配送先で
運転手が自分(埋め込まれた解凍ソフト)で荷降ろし(解凍)するイメージ。
ご回答ありがとうございます。
バイナリを直接扱ったことがないので、ファイルをプログラムの中に取り込むことは難しいような印象があったのですが、そこまで難しいことでもないのですね・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
powershell を使いカレントディ...
-
C言語で途中までしか、プログラ...
-
アクセス[ファイルを開かずに、...
-
独立した複数のプログラムを統...
-
.NetのBackgroundWorkerクラス...
-
家電製品の電力周波数を変える機械
-
if ( a & b == b )
-
アプリケーションが終了するま...
-
C言語プログラミングで、多項式...
-
C#で通信処理。応答がない場合...
-
実行時のコマンドプロンプトを...
-
マルチスレッドのスレッド数を...
-
PIC mainループについて
-
VBA:CSVファイルの読出し手法...
-
bmp → jpeg への変換
-
.sb3のファイルを.sb2に変換す...
-
常駐するアプリケーションを初...
-
スレッドがサスペンドされてい...
-
InvalidateRectがうまくいかない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
powershell を使いカレントディ...
-
パソコンの演算速度について
-
RPG パラメーターについて
-
sendkeysにてALT+CTRL+INSERTを...
-
VBAで外部プログラムを非表示で...
-
C言語で途中までしか、プログラ...
-
並列計算をしたときのシステム...
-
VB上で実行中の無限ループの止め方
-
MACで動く実行ファイルをWindow...
-
vba GetAsyncKeyState関数について
-
C言語でフォルダを開く
-
システム資源とは?
-
アクセス[ファイルを開かずに、...
-
他の実行ファイルを実行するプ...
-
ExcelのVBAでX=0〜1の定積分を...
-
実行時エラー429
-
clock関数は正確じゃないの?
-
sleep()関数について
-
プログラムの再起動
おすすめ情報