QtをVisual C++ 2008 Express Editionで使えるようにしてみる: Qtで遊ぶ 其の1

前から興味を持っていた、Qtで遊び始めた。

クロスプラットフォームでルック&フィールがネイティブなフレームワークとしてwxWidgetsかQtか迷うところだけどとりあえずQtに手を出してみた。

まず、Qtのオープンソース・Windows版はターゲットとしているコンパイラがMinGWみたいだけどVisual C++ 2008 Express Editionを使いたかったので検索。(1) (2)

でも、結局MinGWも入れないと後のビルド途中でエラーが出てしまったのでMinGWも入れました。

で最初に、「Qt SDK for Windows」をインストールしてみたんだけど、これが大失敗。

configureがインストールフォルダに見つからなくて、色々探した。

結局、「Windows版Qtライブラリ」の方が正解だったみたい。

で「Windows版Qtライブラリ」をインストール。

次に、環境設定とライブラリとサンプルのビルド。

「Visual Studio 2008 コマンド プロンプト」を実行してインストールフォルダに移動。

Z:\Qtにインストールしたので、

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC>Z:
Z:\>cd Z:\Qt
Z:\Qt>

そして、対象の開発環境を指定し環境設定を行う。

今回は、静的リンクでEXEを作りたいので、-staticオプションも追加(*3)

Z:\Qt>set QMAKESPEC=win32-msvc2008
Z:\Qt>configure -debug-and-release -static -D _CRT_SECURE_NO_WARNINGS
Which edition of Qt do you want to use ?
Type 'c' if you want to use the Commercial Edition.
Type 'o' if you want to use the Open Source Edition.
o <-- オープンソース版を使うので'o'を入力
This is the Qt for Windows Open Source Edition.
You are licensed to use this software under the terms of
the GNU General Public License (GPL) version 3
or the GNU Lesser General Public License (LGPL) version 2.1.
Type '3' to view the GNU General Public License version 3 (GPLv3).
Type 'L' to view the Lesser GNU General Public License version 2.1 (LGPLv2.1).
Type 'y' to accept this license offer.
Type 'n' to decline this license offer.
Do you accept the terms of the license?
y <-- ライセンスを受諾したので'y'を入力
--- この後Maikfileの作成などなどが自動で行われます。 ---
Z:\Qt>

この処理自体結構時間がかかる。

でライブラリ類やサンプルのMake。

Z:\Qt>nmake
--- 以下、ずらずらとビルドログが出力されます。 ---
Z:\Qt>

なんか自分の環境では途中で失敗したけどテストアプリが生成できたので放置

OSの環境変数にも追加。

  • set QMAKESPEC=win32-msvc2008
  • set PATH=%path%;C:\Qt\Qt\bin.;C:\Qt\Qt\lib.;C:\Qt\bin.

サンプル(*4)を見ながら、コマンドを打ち込んでいく。

で、Visual Studioのプロジェクトファイルを生成しビルド。

出来た、EXEのインポート情報を見てみると...MSVCR90.DLLをインポートしていた_| ̄|○

プロジェクトのプロパティの構成プロパティ→C/C++→コード生成を開き、「ランタイムライブラリ」を「マルチスレッド (/MT)」に変更。

でビルド...

すると大量のリンクエラーが出るのでリンカを開き「特定のライブラリの無視」に msvcrt.lib を追加しビルド...

でもやっぱりエラーが出る。

で検索(*5)

ライブラリ自体も「マルチスレッド (/MT)」に変更しないといけないみたいなので変更してビルド

ビルドが終わったらサンプルをもう一回ビルド&インポート情報を確認

結果、完全に依存関係が無くなったEXEが出来ました。

EXEのサイズ:約5MB

...むー結構でかいな

*1 : http://www.off-soft.net/ja/develop/qt/qt1.html

*2 : http://www.02.246.ne.jp/~torutk/cxx/qt/QtOnWindowsAndVisualStudio.html

*3 : http://doc.trolltech.com/4.1/deployment-windows.html#building-qt-statically

*4 : http://null.michikusa.jp/misc/qt.html

*5 : http://d.kawataso.net/2008/03/vs2005qt4-1.html


HSP3用難読化&独自スクランブル ツール ”yabuinu” を公開しました

オブジェクト難読化&独自スクランブルツールを公開しました。

hsp3obfusの後続バージョンになります。

HSP3の他バージョン用も簡単に実装できそうですが、とりあえず、HSP3.1用を実装してみました。

ダウンロードは詳細ページからどうぞ。

”yabuinu” 難読化&独自スクランブル ツール for HSP 3.x


”yabuinu” 難読化&独自スクランブル ツール for HSP 3.x

ソフトの説明

HSP3用のオブジェクト難読化&独自スクランブルツールです。

オブジェクトファイルに難読化処理を行い、かつEXEの埋め込みデータに対して独自のスクランブル処理を行うことで、逆コンパイルおよび埋め込みデータの抽出を困難にします。

スクランブル機能は、既存の埋め込みデータの抽出ツールの無効化を目的としています。

難読化機能は、逆コンパイルを行ったときに完全なソースの復元を困難にし機密情報の流出を防ぐことを目的としています。

ただし、困難になるだけなので完全に不可能にすることは原理上絶対に出来ません。(最低でもHSPランタイムがコードを実行できる状態にはなっている必要があります。)

また、副次的効果としてオブジェクトのサイズが小さくなる場合があります。

… 続きを見る