【圧縮】UPX ってどうなの?

このエントリーをはてなブックマークに追加
1 ◆WINNtSV.
ハードディスクがものすごく安くなった今日この頃。
皆様いかがお過ごしでしょうか?

NT4.0スレでちらっと出てましたけど、
こいつを使うと、ExeやDllがものすごく小さくなっちゃいます。
圧縮したままで普通に実行可能です。
C:\WINNT とか C:\WINNT\SYSTEM32 とかに適用したら凄そう。
一部で有名な「MAME」の配布バイナリもこれで圧縮してますよね。

・NTFS圧縮との兼ね合いはどうなのか?
・アンチウイルスソフトに蹴られないのか?
・本当に元に戻せるの?
などなど、実際いろいろ試してみよう! 人柱タンいろいろ教えて!
というスレッドです。

↓本家はこちら
ttp://wildsau.idv.uni-linz.ac.at/mfx/upx.html
↓日本語フロントエンドはこちら
ttp://www.urikire.net/UPXF.htm
2 ◆WINNtSV. :01/09/11 06:11
31 ◆WINNtSV. :01/09/11 06:28
PhotoShop6.0j のフォルダにやってみました!

$ upx *.exe
$ upx *.dll

47.3MB → 18.7MB になったよ!
ハァハァ…
4名無し~3.EXE:01/09/11 06:32
起動も心持ち速くなるよ。
その代わりメモリ食うけど。
51 ◆WINNtSV. :01/09/11 06:41
>>4
おお!先行者タン! ハァハァ…

起動時にはメモリ喰いそうですけど、
起動後もずっとなんでしょうか?
6名無し~3.EXE:01/09/11 06:58
>>5
ずっとそうだよ。
試してみりゃいいじゃん。
ちなみに起動が速くなるっていうのはディスクアクセスの関係。
>>3のように50MBが20MBになったら多少読み込み時間が早くなるんでね。
メモリに展開しなきゃならないけどそのさいの時間ロスは微々たるもんでしょ。
もっとも昨今の速いHDDじゃ30MBの差くらいどうってことないかもしれないけど。
FDDなんかだと顕著にわかるんだけどね。
7結論君:01/09/11 07:04
結論:
何十MBも小さくできる場合はディスクアクセススピードの関係によりUPX圧縮は起動速度を速くする。
ただ、小さい実行ファイルをUPX圧縮するとディスクアクセスはほぼ一瞬なのであまり効果は無く、メモリを多く使用する分やらないほうが良い。
8名無し~3.EXE:01/09/11 07:12
大きいけれども長時間起動しないようなアプリには理想的なわけですね。

といっても、具体例がさっぱり思いつきませんが。
91 ◆WINNtSV. :01/09/11 07:23
>>6
ナルホド! 謹言ありがとうございます。

同一プロセスである以上、起動時に展開用に確保されたメモリ(データ、opコードとも)は
死ぬまで解放されないということでしょうか?(てきとう)


>>7
というわけで
================== 終了 =====================

じゃなくて、

1. 起動(ディスクアクセス)速度が向上
2. 占有メモリが増えてしまう
がバーターな関係になってしまうというのもわかるんですけど、

3. 占有するディスクスペース節約!
ていうのに惹かれましたです。ハァハァ。

貧乏性ですかねえ。
101 ◆WINNtSV. :01/09/11 07:31
だって、
C:\WINNTのサイズ、 1.31GBですよ…。

ゲイツ君ヒドイヤ!
11名無し~3.EXE:01/09/11 07:37
>>10
・・・、アホに説明するのは疲れるからなにも言わない。
12名無し~3.EXE:01/09/11 07:38
うん、貧乏性だな。
俺はディスクスペースの節約より起動速度の短縮に価値を見出した。
でもメモリ食うのはなぁ。とりあえずでかい実行ファイルでやってみよう。
131 ◆WINNtSV. :01/09/11 07:50
個人的には、

KERNEL32.DLL
USER32.DLL
GDI32.DLL
NTDLL.DLL
ADVAPI32.DLL
COMDLG32.DLL
COMCTL32.DLL

このへんを圧縮したときの影響も気になり。
でも一回ロードしたら使い回すんでしたっけ?
14名無し~3.EXE:01/09/11 07:56
>>13
システム保護がきいてるから駄目だよ。
どうしてもやりたいって言うなら設定で無効にしないとね。
まあがんばれ。

参照・・・
Windows 2000 のシステムファイル保護を無効にするには?
http://homepage2.nifty.com/winfaq/w2k/hints.html#1164
151 ◆WINNtSV. :01/09/11 07:55
>>11
配下にプロファイルもテンポラリファイルも置いてないよう!
…ちがう? やっぱり俺アホ?

ディスクスペース的なオーバーヘッドも、
アロックされるメモリ的なオーバーヘッドも、
検証してみないといけませんね。

でも、どうすればいいかなあ。
多重起動できるEXEで試せばいいかな。
16名無し~3.EXE:01/09/11 07:57
>>15
そんなわけないだろ。
ページングファイルとか休止状態のためのファイルがあるんじゃないの?
171 ◆WINNtSV. :01/09/11 08:10
>>14
でも、upx.exe自体が

KERNEL32.DLL
USER32.DLL
NTDLL.DLL

をインポートしており…
この3つは無理ナノカッ!


>>15
そんなわけありますよう。

ページング: D:\
TEMP: C:\TEMP
ProfilesDir: D:\home
ハイバネ: こんなもんいらん!無効化!

で運用中でアリマス!
C:\WINNTにへんなテンポラリが入るのはいやでアリマス!
ちなみに当方独身、Win2000Proでアリマス!
18名無し~3.EXE:01/09/11 08:29
>>17
俺もWin2kProだけど700MBで収まってるよ。
19名無し~3.EXE:01/09/11 09:10
そもそも何を入れたら1.3gなんじゃ
めちゃめちゃ意味不明コンポーネントの塊では?
ちなみにウチの2000は
win2000フォルダ(648MB)
Document関係(26MB)
ページング(190MB)
これで2000全部。
NTフォルダだけで1.3て...
20名無し~3.EXE:01/09/11 09:17
winnt847MB
21名無し~3.EXE:01/09/11 09:27
大きいけれども長時間起動しないようなアプリといえば。。。
HP表示テスト用のネスケ6とかか?
22名無し~3.EXE:01/09/11 09:42
普通のアプリは気にしなくてもいいけど、
UPXは圧縮後のファイルにチェックサム出してくれないから
NT系では KERNEL32.DLL 等が正しく動くかどうか不安。
仮にチェックサムなしで動いたとしてもUPXは KERNEL32や USER32 のように
複雑な DLL は圧縮できそうにない。

あと、元に戻すといっても、非可逆圧縮だから完全には戻らない。
バックアップを取っておいた方が無難。

HDDを買ってくるのがもっと無難。
23名無し~3.EXE:01/09/11 10:04
WINNT 1.28 GB (1,378,898,790 バイト)
ファイル数 10.915
フォルダ数 330

presp3関係で135MB
ServicePackFiles 167MB
system32 569MB

1年以上再インストールしていない。
241@会社:01/09/11 10:35
うーんと、うちもWin2000が出てすぐからだから1年半近く使ってます。
安定してるなあ。

\FONTS がでかいのと、\DLLCACHE をそのままにしてることが問題かな。
25名無し~3.EXE:01/09/11 10:53
4年ぐらい再インストールせず、Windows2000上書きすると1G余裕で超えます。
開発系アプリが入っていなければそこまで行かないかもしれんが。
26名無し~3.EXE:01/09/11 10:53
>あと、元に戻すといっても、非可逆圧縮だから完全には戻らない。
それは恐い。
27名無し~3.EXE:01/09/11 11:03
うちWin2000 SP2インストールしたばかりだが873M
いらないと思われるものは消したんだけどなぁ…
>19 dllcache も消したの?
28名無し~3.EXE:01/09/11 11:12
メモリを喰うのはCopy on WriteとかMapCache(Win98/Me)
等が有効に働かなくなるから。
29名無し~3.EXE:01/09/11 15:00
>>23
非可逆圧縮でプログラムが動くと思ってるのか、阿呆。
30名無し~3.EXE:01/09/11 15:00
ごめん、>>22だった
3122じゃないが:01/09/11 15:19
>>29-30
実行コード部分は確かに可逆じゃないと動かんだろうが、
PEヘッダとかデータ領域とかは多少変わってもOKっす。

っつーか、実際UPXかけてから-dで展開してみろ。完全には戻らないから。
32名無し~3.EXE:01/09/11 15:33
>>31
ヘッダにはさ日時が入ってるんだよ。
おんなじソースコンパイルしても .exe 一致しないのが証拠。
そこが変わってんじゃないの?
3322:01/09/11 15:59
>>29
わかりにくいね。。。。。スマソ。「非可逆」だけにしとくんだった。

>>32
UPX & 日本語フロントエンドを使って見て欲しい。
「余分なデータを取り除く」
「[Export]セクションを圧縮する」
「移動レコードを削除する」
っていうオプションがあって、
「余分なデータを取り除く」以外はデフォルトだ。
まあそのオプションにチェック入れなきゃ可逆と呼べるかもしれないが。
34名無し~3.EXE:01/09/11 17:09
言いたいことはわかったよ。
日本語フロントエンドってのは使ってないんだけど、
「余分なデータを取り除く」 ってオプションはどれだかわかんないや。
35名無し~3.EXE:01/09/11 18:49
>>34
ヘルプによれば
>  圧縮したあとに残るゴミデータを除去するオプションです。
> わずかながらサイズが減少するので、このチェックつきで圧縮しても
> エラーが起きなければ問題はないんじゃないかなぁ。
だそうだから、
--overlay=stripかな?ってこれぐらいしかないと思うけど。
36名無し~3.EXE:01/09/11 19:32
1が出てこないのは起動不能になったから(藁
37名無し~3.EXE:01/09/11 20:46
UPXで圧縮なんかするのQ2の接続ソフトぐらいだろ?
ダウンロードの時間を少しでも縮小しないといけないからね。
381@家 ◆WINNtSV. :01/09/11 22:26
あーぢつはHDD買ってきてしまいました!IBMの60GB!
ついでにメモリも256だけ。…ダメスカ?

ブートドライブの引っ越し方法を知らないもんで、
いろいろ調べモノ中。
貿易センタービルも気になっちゃうし、
俺の中のUPXプライオリティがダウソしております!

先行者タン、人柱タン いろいろよろしくです!
39名無し~3.EXE:01/09/12 20:49
DLLをいくつか圧縮したら元に戻らなくなった。
その上エラーが出るようになった。
鬱だ…
401 ◆WINNtSV. :01/09/16 11:16
HDD引っ越しは何とかなったけど、
ちと仕事が忙しくて…、スミマセン。
でも快適にナリマシタ!

●わかったこと
HDDをFDISKしたら、アクティブパーティションを作っておかないと、
ブートドライブにならない。

--
「Photoshop6.0JフォルダUPXed計画」の後日談を。

ImageReady.exeへのショートカットのアイコンが、
WindowsEXE標準のアイコンに化けました。
ショートカットのプロパティでアイコンの変更しようとしても、
「利用できるアイコンが見つからない」状態です。トホホ。

win32PEを圧縮すると、先頭のアイコンリソース「だけ」は
外から参照できるところに出すはずなのに…。

Photoshp.exeは目玉アイコンだけ見えるんですけどねえ。
まあPhotoshp.exeのアイコンリソースを、
画像ファイルタイプのアイコンに指定してたりすると、
ちと困ったことです。

USER32.DLLなんか、エライことになりそうですぞ。
41名無し~3.EXE:01/09/16 11:54
>>40
アイコンリソースのオプションをいじくれ。
まったく圧縮しないオプションもあるしな。

> HDDをFDISKしたら、アクティブパーティションを作っておかないと、
> ブートドライブにならない。
・・・・・・・・・・・
421 ◆WINNtSV. :01/09/16 11:59
>>41
$ upx --help
打ってみたら、オプションがイパーイですねえ。
俺も日本語フロントエンド使ってみるです。
431 ◆WINNtSV. :01/09/16 14:26
upx同梱版のフロントエンド落としてみました。
同梱されてるのは1.08ですねえ。。。
1.20使った方がいいですよね。

あらためていろんなオプション見てみました。
この辺使えば問題が減るのはわかるけど、
高圧縮が期待できる部分だからなあ…。

--compress-exports=0
Don't compress the export section.
Use this if you plan to run the compressed
program under Wine.

--compress-icons=0
Don't compress any icons.

--compress-resources=0
Don't compress any resources at all.
44ff:01/09/16 14:34
45名無し~3.EXE:01/09/16 14:39
うちはWin2000の環境変数に
  --best --compress-icons#0
を指定して使ってる。
アイコンリソースは削らず、最大限の圧縮。

自己改変チェックがついてるシェアウェアを
圧縮してしまって困ったこともあったね・・・。

圧縮ファイルは複数起動したり多重にロードすると
その数に比例して無駄なメモリ消費が増える。
複数アプリに同時使用されるシステムDLLなんかを
圧縮してしまったら、目も当てられないことになるはず。

また圧縮ファイルの使用時に一度すべてメモリに読み込むから
非圧縮でも同様になるネットワーク経由の起動以外では
起動速度面でのデメリットが出るし、余計にメモリも喰う。
圧縮して「○○KB小さくなった」と思ったら、大体それと
同じくらいメモリ消費量が増えると思っていい。

結局、メリットもデメリットも理解する「ユーザ」が使うべきなのだろうね。
最近ではソフトの「作者」が使っていることが多いけど、「ファイルサイズが
小さくなる」ということ以外に何も知らない作者が、かなり多いみたい・・・。
4645:01/09/16 15:22
環境変数でオプション指定しておくと、フロントエンド使う必要あるの?と
思ってしまうかも。折角ワイルドカードも使えるのだし・・・。

http://nmnl.port5.com/ にあるDropUpは一度だけ使ってみたことがあるけど
感じたメリットは、初心者でも忘れずにバックアップが取れるということくらいかな。
うちはバッチファイルでバックアップ取り→UPX圧縮を手軽にしてる。

知人にWin98をシステム丸ごとUPX圧縮した人が居るけど、期待通り(?)
通常使用不可能、OS再インストールになった。元々再インストールする
つもりだからその前に、ということで試したようだけど。

>>1
>・アンチウイルスソフトに蹴られないのか?
というのがあるけど、古いUPXでの圧縮実行ファイルでNAVが固まったように
なってしまったりしたことはある。古いアンチウィルスソフトでは警告を出すものも
存在するみたい。最近ではUPXも対策してるし、アンチウィルスソフトやその他の
バイナリ操作系ソフトでも、UPXなどで圧縮されたファイルでトラブルが出ないよう
対策を加えてきたソフトが増えてきたから、圧縮ファイルそれ自体以外での
トラブル要因はだいぶ減ったと思う。
47名無し~3.EXE:01/09/16 23:20
UPX?
48名無し~3.EXE:01/09/17 10:26
特にプログラムの知識が無い人間が試してみるなら
>1の日本語フロントエンドと
http://homepage2.nifty.com/maskp/upxhtm/upxmask.htmと
どっちがいいだろうか。
49名無し~3.EXE:01/09/18 22:24
U
50名無し~3.EXE:01/09/18 22:56
>>48
どっちでもいいよ。
51名無し~3.EXE:01/09/20 18:41
UP
52名無し~3.EXE:01/09/23 17:14
UPXで圧縮したプログラムを使うと理論上スワップファイルが増えるんだけどね。
53名無し~3.EXE:01/09/29 18:19
既出
54名無し~3.EXE:01/09/29 18:24
>>52
がいしゅつ
55名無し~3.EXE:01/09/29 18:36
>>52
きしゅつ
56名無し~3.EXE:01/09/29 18:46
>>55
がいしゅつ
57名無し~3.EXE:01/09/29 18:56
>>56
既出
58名無し~3.EXE:01/09/29 19:33
>>57
がいしゅつ
59名無し~3.EXE:01/09/29 19:39
57までは筋が通っていたが・・・。
60名無し~3.EXE:01/09/29 20:08
>>59
がいしゅつ
61名無し~3.EXE:01/09/30 15:25
>>60
即出
62名無し~3.EXE:01/09/30 17:39
>>61
結納
63 :01/09/30 22:44
>>60
変質
64 :01/10/02 11:11
ahya
65 :01/10/05 23:51
UPX
66名無し~3.EXE:01/10/06 00:04
それよりこれ何て読むのよ?
ウプックス(・∀・)?
そこんとこどーなのよ?
67名無し~3.EXE:01/10/06 00:13
>>66
「うぷっくすはにゃぁ?」
68 :01/10/06 01:00
the Ultimate Packer for eXecutables
691 ◆WINNtSV. :01/10/07 17:23
ムム。微妙にageられてる!

仕事も佳境にはいってるくせに、ウルチマオンラインなんか始めちゃって、
UPXで実験するヒマねーっす!

「UPX」の読み方は、

  「ゆうぱっく」

ですよ。(ウソ
70名無し~3.EXE
Unko Project X