トップページ > 記事閲覧
UPXによる圧縮
名前:Carl 日時: 2021/09/26 14:36

以下はホームページに載っているサンプルコードです。 #include "DxLib.h" // プログラムは WinMain から始まります int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1 ; // エラーが起きたら直ちに終了 } DrawPixel( 320 , 240 , GetColor( 255,255,255 ) ) ; // 点を打つ WaitKey() ; // キー入力待ち DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 } ・上記をVisual studio 2019のReleaseでx86, x64と2種類コンパイルし、それぞれが正常に起動することを確認。 ・上記で作成した2個のexeファイルをUPX-3.96のwin32とwin64のデフォルト設定で圧縮した後に起動させると、  「このアプリはお使いのPCでは実行できません」と出て実行できません。 ・OSはwin10でパッチなどは最新版に更新済みです。 私の環境のせいでしょうか?? ちなみに8年くらい前にDxlibで作ったゲームは当時のUPXで無事に圧縮できていました。
メンテ

Page: 1 |

Re: UPXによる圧縮 ( No.1 )
名前:管理人 日時:2021/09/28 01:24

> 私の環境のせいでしょうか?? > ちなみに8年くらい前にDxlibで作ったゲームは当時のUPXで無事に圧縮できていました。 私も試してみましたが、圧縮された実行ファイルは起動できませんでした 原因は不明ですが、現在の UPX でDXライブラリを使用した実行ファイルを圧縮すると 起動できなくなるようです
メンテ
Re: UPXによる圧縮 ( No.2 )
名前:ひろかず 日時:2021/09/28 18:49

気になったので私も試してみました。 私の環境では問題はありませんでした。 ただし、UPX圧縮を行った実行ファイルは、ウィルス検知ソフトによって実行をブロックされました。 私が使用しているウィスル検知ソフトはカペルスキーなのですが、「HEUR:Trojan.Win32.Generic」と 判定されました。 なお、UPX圧縮を行う前の実行ファイルはウィルスチェックを行っても問題無しと判定されました。 おそらく、ウィスル検知ソフトの誤判定ではないかと推測されます。 また、ソースコードの内容によってウィスル判定されたりされなかったりするようです。 私の手元にある適当なソースコードを実行ファイルにしてUPX圧縮を行っても、ウィルス判定にはならず 問題なく実行する事が出来ました。
メンテ
Re: UPXによる圧縮 ( No.3 )
名前:管理人 日時:2021/09/29 00:31

お試しいただきありがとうございます ウイルスと誤判定されてしまっているのですね… 最近は普通の実行ファイルでもウイルス誤判定されてしまうくらいですから 圧縮されたサイズの大きい実行ファイルを実行時に解凍して実行するという 処理はセキュリティソフト的には『怪しい動作をしているソフト』と判定するには 十分な挙動なのかもしれませんね… セキュリティの判定基準が厳しい昨今 UPX による実行ファイルの 圧縮は時代にそぐわないのかもしれません (- -; ( サイズが大きくなるDXライブラリ使用の実行ファイルは余計に… )
メンテ
Re: UPXによる圧縮 ( No.4 )
名前:Carl 日時:2021/09/30 22:11

管理人様、ひろかず様 書き込みありがとうございます。 私はESETを使用していますが、ウイルスソフトを無効にしてもダメでした…。 ウイルスソフトが入っていないwin10でもダメでした。 DXLibを使用していない純粋なc++アプリはUPXで圧縮しても起動できました。 ちなみにUPXではなくてASprotect32(お試し版)というパッカーで圧縮すると起動できましたが、 環境が変わったりソースコードが変わったりするとどうなるかわからないので、 パッカーで圧縮するのは諦めることにします(^_^;) この問題を解決するのは(多分)無理ということがわかっただけでも非常に助かりました。 どうもありがとうございました!
メンテ
Re: UPXによる圧縮 ( No.5 )
名前:ひろかず 日時:2021/10/01 11:40

お二方と私の実行結果に違いがあるので不思議に思い再度確認したところ、実行環境に違いがあることが判明しました。 申し訳ございません。お詫び申し上げます。 私の環境では、DXライブラリの「3Dモデル機能&ソフトウエアレンダリング機能無しパッケージ」を使用しており、 上記発言はその環境での結果になります。 改めで、DXライブラリの通常パッケージをインストールした状態で、実行ファイルをUPX圧縮したところ、 「このアプリはお使いのPCでは実行できません」と出て実行出来ませんでした。 以下、パッケージ別でUPX圧縮を試した結果です。 1.通常パッケージ 「このアプリはお使いのPCでは実行できません」と出て実行出来ない 2.ソフトウエアレンダリング機能無しパッケージ 「このアプリはお使いのPCでは実行できません」と出て実行出来ない 3.3Dモデル機能無しパッケージ 問題無く実行可能。ウィルス検索にも引っかからない 4.3Dモデル機能&ソフトウエアレンダリング機能無しパッケージ ウィルス検索に引っかかるが、除外設定を行えば問題無く実行可能 以上、ご参考までに。
メンテ
Re: UPXによる圧縮 ( No.6 )
名前:管理人 日時:2021/10/03 04:34

ご情報ありがとうございます セキュリティに誤判定される問題はこれまでもありましたが そもそも実行できない状態になってしまっているようにも見受けられますね… ( 『このアプリはお使いのPCでは実行できません』の文言が、明言されていないだけで  ウィルス判定されているのだとしたら全体的にウィルス誤判定が原因と考えられますが… ) 3Dモデル機能無しにするとウィルス誤判定が無くなったり 設定次第で実行できるようになったりするのは恐らく実行ファイルの それなりの容量を締めているシェーダーコードバイナリが無くなるからだと思います シェーダーコードバイナリを実行ファイルから外せば誤判定される確率はグッと下がると 思いますが、プログラムの実行には exeファイルの他にシェーダーファイルが必要、 となるのは避けたいので難しいところです (- -;
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存