ロボットと共に

Life with Robot

Windowsのインストーラーツールの紹介

はじめに

 ソフトウェア製品を開発している人の最後の作業になる実行ファイルにしたEXEファイル含めた付属ライブラリやファイルなどをインストーラーにして納品・販売することがほとんどだと思います。そのままバイナリ圧縮して提供することもありますねw(ことらの方が簡単ですし!!)

今回は、インストーラーツールのご紹介をしたいかと思います。

インストーラーツール

  1. InstallShield

  2. InnoSetup

  3. ClickOnce

  4. NSIS

  5. WiX Toolset

 一番有名なのはなんといっても「InstallShield」ではないでしょうか、機能限定の無料版もあり、日本語対応、GUIで簡単に作成できるツールです。有料版は50万くらい?と高いですが、ソフトウェア製品を開発しているときは使用していました。InnoSetupは、日本ユーザによるネット情報も多く、簡単なものはGUIにて開発できますが、私はスクリプトで書いています。また、ライセンス認証を実装したい場合はいろいろと自前でサーバ構築やらいろいろありますが、ニュートン社「認証レスキュー!2」で整備できるのではないかと思われます。

サンプル

 私は最近、InstallShieldからInnoSetupへと変わりました。理由としては、InstallShieldが動作が重く感じていたのとライセンスの関係で開発メンバーとの共有が難しいこともあったためです。あとは無料かつネット情報も多いですし♪

InnoSetupのインストーラー作成手順は簡単で、初心者でも簡単に作れるGUIがあり、スクリプトを知らなくてもある程度作成できます。

  1. 空のスクリプト選択
    f:id:Mikan6:20170911023831p:plain
  2. アプリケーション情報入力
    f:id:Mikan6:20170911023715p:plain

  3. インストール先フォルダ選択
    f:id:Mikan6:20170911023719p:plain
  4. 実行ファイルの選択(付属ライブラリやファイル)
    f:id:Mikan6:20170911023724p:plain

  5.  ショートカット選択

    f:id:Mikan6:20170911023728p:plain

  6.  コンパイル設定(パスワード設定や出力など)

    f:id:Mikan6:20170911023742p:plain

  7.  手順に沿って進めると下図のようなスクリプトが自動で作成され、スクリプトを知らなくとも準備できます。最後にコンパイルするとインストーラのEXEファイルが生成されます。

    f:id:Mikan6:20170911023821p:plain

実際に作成されたインストーラーを実行すると

  1. インストーラ設定で言語「Japanese」を選択しておくと、「English」「日本語」選択ができます。
    f:id:Mikan6:20170911023827p:plain

  2. パスワード設定している場合は、入力します。(ライセンス条文など設定すると同意確認画面などが表示されます。)
    f:id:Mikan6:20170911023755p:plain

  3. インストール先の選択
    f:id:Mikan6:20170911023759p:plain
  4. ショートカット選択
    f:id:Mikan6:20170911023802p:plain

  5. 以上で簡単にインストールができるようになります。
    f:id:Mikan6:20170911023806p:plain

最後に

 あくまでも参考としてご利用下さい。また、各種ライブラリのライセンスにも目を通して、ご利用下さい。
ご利用した方は、コメント頂けると個人的に励みになります。

C#の難読化と逆コンパイルを試してみる

はじめに

 ソフトウェア開発者にとってリバース エンジニアリング対策を考慮しなければいけないことは悩みの種であるわけで、特に.NET系やJavaなどはリバースエンジニアリングしやすいということで、対策が必要とされています。

 ということでC#で難読化したものを逆コンパイルして試してみます!!

難読化が必要な理由

 Microsoftが記載する「難読化が必要な理由」から引用

.NET 用に作成されたプログラムは、リバース エンジニアリングが簡単です。これは .NET のデザインに不備があるからではありません。最新の中間コンパイル言語が採用されているからです。.NET は表出的なファイル構文を使用して実行可能コード、すなわち MSIL (Microsoft Intermediate Language) を配信します。このような中間ファイルは、バイナリのマシン語コードよりも高度なもので、直接表示でき、最終的に理解可能な識別子やアルゴリズムを積み重ねたものです。判読性を高め、柔軟性と拡張性を持たせながら、同時に重要な部分を難読化することは、もちろん容易なことではありません。
.NET 逆コンパイラは誰でも無償で入手でき、これを使用してコードを簡単にリバース エンジニアリングできます。誰でもすぐに、ライセンス供与されたコード、コピー保護メカニズム、所有権を有するビジネス ロジックなどを、(合法的であるかどうかは別として) かなり判別しやすい状態にすることができます。どのような目的であれ、ソフトウェアの詳細を隅々まで調べることができるため、セキュリティ上の欠陥を探して利用したり、ユニークなアイデアを盗んだり、プログラムをクラックすることなども可能です。
これが必ずしもリスク、または重大な問題になるわけではありません。知的財産について懸念のある組織は、.NET プラットフォームを考える際、リバース エンジニアリングを防ぐためのソリューションが存在することを知っておく必要があります。難読化は、アセンブリ内のシンボルの名前をシームレスに変更する技法であり、その他にも逆コンパイラを妨害する対策を備えています。難読化を正しく適用すると、アプリケーションはそのままにして、さまざまな規模の逆コンパイルに対する保護を高めることができます。

 

難読化ツール

  1. ConfuserEx
  2. DotNet Patcher
  3. NanDoKu
  4. Obfuscar
  5. Phoenix Protector
  6. SharpObfuscator

なかでも今回は個人的に一番難読化された感があるConfuserExで難読化を試してみます!!なお逆コンパイルツールは有名な「ILSpy」を使用します。

難読化結果の比較

 サンプルソースコードは、こちらの過去のソースで試してみます。

robot-egg.hatenablog.com

 

ConfuserExの使い方は、下記をご参考ください。

heetnote.com

 

実際に難読化する前と後をご覧ください。難読化する前はまるわかりですねw

実は一部、元ソースとは別の記述になっている箇所もあります。逆コンパイルしたからといって、そのまま動くとは限りません!!しかし、頑張れば動きそな雰囲気はプンプンしますねw

そして、難読化後は一見キレイに逆コンパイル出来ているかのようにも見えますが、よくわからない記述がたくさんあり、元ソースとも難読前の逆コンパイルしたソースとも異なります。このコードでは頑張っても、同じ機能が動くようには到底思えませんねw

特にいちばん大事な「https://api-us.faceplusplus.com/facepp/v3/detect」がパっと見では記述されていないように見えます!!こちらを解読する用のクラスがありますが、やはりパッと見ではわからず、実装して動かさなければいけない努力と時間、コーディング技術、理解力などが必要になりますね♪

難読化前

f:id:Mikan6:20170827012410p:plain

難読化後 

f:id:Mikan6:20170827012415p:plain

最後に

 難読化は、エンジニアには面倒な作業ですがソースコードの財産を守るには、コストと時間を考慮して必要になる重要な要素ですね!!有料版を購入できれば、難読化や暗号化含めて簡単でかつ効果的な良いものがあるかと思いますが、フリーでここまでできれば御の字かと...

 サンプルソースコードは、あくまでも参考としてご利用下さい。また、各種ライブラリのライセンスにも目を通して、ご利用下さい。
ご利用した方は、コメント頂けると個人的に励みになります。

C#[WPF]のUIコンポーネント有料版ご紹介

はじめに

 以前、C#[WPF]で使えるフリーのUIコンポーネントライブラリ関連を書きましたが、今回は有料版で良いものを調べてみました。というのもフリーでWordやExcelなどドキュメントツールを作成する際に、フリーでは読み書きはできるが、WordやExcelライクのUIまで提供しているものが、私が調べた限りだとなかったが、こちらはExcelシートそのままで、表計算機能もあり、まさにExcelが自分オリジナルソフトとして利用できるので、購入を検討していることもあり、その中でもこちらの2つ「Infragistics」「ComponentOne Studio」に注目してみました。

robot-egg.hatenablog.com

 

Infragistics

 Infragistics は、ASP.NETWindows Forms、WPFSilverlightjQueryASP.NET MVC、およびモバイルのためのユーザー インターフェイス (UI) コントロールコンポーネントを提供しており、Infragistics Ultimateの価格は198,000円です。

  • UIデザインツール Indigo Studio
  • デスクトップ向け Windows Forms/WPF
  • Web向け ASP.NET/Ignite UI / MVC/ React / Angular
  • モバイル向け Xamarin/UWP/iOS/Android

f:id:Mikan6:20170623122044p:plain

ComponentOne Studio

  「ComponentOne Studio Enterprise」は、ComponentOne Studioが提供するWindowsフォーム、WPF、UWP、Xamarin、ASP.NET Web Forms/MVCSilverlightの7つのエディションをすべて収録しており、ComponentOne Studio Enterpriseの価格は、¥162,000です。

f:id:Mikan6:20170623122030j:plain

最後に

 それぞれ会員登録後、試用期間内でサンプルコードが動かせます。では、どちらのほうが良いか、Infragisticsの方がコンポーネントの総合的に購入価格としては高めですが、それを補う対応種類が豊富で、WPFの機能だけで比較すると、両社にさほど差はありませんが、若干Infragisticsが凝った機能があるように感じました。また、InfragisticsはUIデザインツール「Indigo Studio」もあり、この点は完全に差別化できる点です。個人的な感想としては、価格・機能から判断して、Infragisticsが良いと感じたので購入しました。
最後に、ご覧になった方は、コメント頂けると個人的に励みになります。