PreEmptive Solutions メニュー

AG-TECH CORPAG-TECH CORP

ENGLISH

セキュリティ強化のための 難読化・アプリケーション整合性保護ツール

PreEmptive PROTECTION

リバースエンジニアリングと逆コンパイル

リバースエンジニアリングとは?

リバースエンジニアリングと聞くと、ハッキング(クラッキング)のような違法行為と思われることも多いでしょう。 実際には、自社or他社の製品(ハードやソフト)を細かく解析して、その仕組みや構成などを明らかにすることを意味します。 例えば、例えば自社製品の脆弱性を調査するといったセキュリティ対策であったり、他社製品のプログラムを複製して 自社製品に取り込むといった不正行為であったりと、その目的によって意味の良し悪しは変わってきます。 次に紹介する「逆コンパイル」は、リバースエンジニアリングを行うための1つの手法ということになります。

逆コンパイルの仕組み

そもそも「コンパイル」とは、プログラム言語(人間が見て理解できる形式)で書かれたソースコードを機械語 (コンピュータが理解して実行できる形式)で書かれたオブジェクトコードに変換することです。よって、 逆コンパイルとは、オブジェクトコード(機械語)をソースコード(プログラム言語)に変換する(元に戻す) という意味になります。ソースコードが入手できない場合でも、逆コンパイルを実行することで、プログラムの仕様を把握することできるようになります。

一般的には、コンパイル時にソースコード内の変数名や関数名といったメタデータの大半は無くなってしまうので、逆コンパイルを実行してもそれらを復元することは困難です。ただし、.NETやJavaのようにコンパイル時には中間コードのプログラムが作られる場合は、関数や変数などのメタデータやプログラムの構造のほとんどが残ったままになり、逆コンパイルされることによって重要な情報が元のソースコードに近い形で露わになるため、善意でのコード解析だけではなく、悪意を持った不正行為も可能となります。

次のブログ記事もあわせて参照ください!
.NETアプリの逆コンパイルは如何に簡単か?(実例付)

難読化とは

セキュリティを守るためには必要な技術

難読化とは、実行ファイルの機能を維持させつつも、例えばコードの中身を人間にとって読みにくい内容に変えることで、リバースエンジニアリング(逆コンパイル)などを用いたコードの改ざんや重要な機能を盗み取ったプログラムの複製、セキュリティを無効化するといった悪意のある行為を防ぐことのできる技術です。次に挙げていくようなコードの変換や他の様々な機能を組み合わせることで、より強固なコードの難読化を実現できます。

1)名称の変更:「変数名」「関数名」「クラス名」などを、分かりにくい名称に変える機能です。これらの名称は、自他共に理解しやすいようなネーミングを行っていることが多いため、意味を持たない名称に変更しておくことが大変重要です。なお、難読化ツール「PreEmptive PROTECTION」には、特許を取得済みの「オーバーロード誘導」という名称変更機能が実装されています。

2)文字列の暗号化:暗号化によってバイナリファイル内の文字列を隠すことができる機能です。メタデータの名称を変更した場合でも、逆アセンブラによって、機械語や中間コードで記述されたオブジェクトコードがアセンブリ言語に変換されると、メッセージ内の文字列や「Login」や「Password」といった重要な意味をもつ文字列が検索されてしまう恐れがあります。文字列の暗号化は、このような文字列の検索による攻撃を防ぐことができます。

3)制御フローの難読化:コードの実行順を把握することが難しくなるように、既存のロジックに対して悪影響を与えない範囲で、不要なコード(=偽(にせ)の条件文など)を挿入する機能です。コードに複雑なロジックをもたせることにより、いわゆるスパゲッティコードが生成されるため、逆コンパイルの実行やコードの解析が困難になります。

最強の難読化ソリューション

難読化を必要とする理由

第三者が自社製品を攻撃しようとした場合、セキュリティが脆弱なままでは、コードの解析が容易に行われてしまいます。システムへのアクセス方法が明るみになると、クラッキングが容易となり、機密情報が流出してしまう恐れがあります。デバッグによるアプリの改ざんや悪意のあるコードを含めた再パッケージが実行されてしまうこともあるでしょう。これらがアプリを提供している側に及ぼす影響は甚大なものです。そのような行為を食い止めることための有効な手段の1つとして、「難読化」が必要なのです。

また、GDPRというEU圏で適用されている個人データ保護に関する法令がありますが、国内企業であっても、データを保存したサーバーがEU圏にある場合は、その法令が適用されることになります。他には、米国のHIPAAという電子化された医療情報を保護するための法令や、PCI-DSSというクレジットカード業界の情報セキュリティ基準があり、こういったセキュリティに関する世界規模の規制に対して、自社製品が求められるセキュリティレベルを満たすためにも、「難読化」を行うことは非常に重要です。

最強の難読化ソリューション

製品について

最強の難読化ソリューション

難読化ツール「PreEmptive PROTECTION」は、各種プラットフォーム(.NET、Xamarin、Java、Android、Node.jsといったJavaScript環境など)に応じた以下の3種類のツールを提供しています。中でも「Dotfuscator」は、2003年からMicrosoft Visual Studioに無料で使用できる簡易版(Dotfuscator Community)がバンドルされており、絶対的な信頼性があります。

.NET / Xamarin 向け
難読化ツール
JavaScript 向け難読化ツール
CLICK
Java / Android / Kotlin 向け
難読化ツール
JavaScript 向け難読化ツール
CLICK
JavaScript 向け
難読化ツール
JavaScript 向け難読化ツール
CLICK

(※各ツールの詳細な仕様は、【> CLICK】アイコンをクリックして、ご確認ください。)

最強の難読化ソリューション

充実した機能

上記に挙げた難読化の技術が、当製品には全て搭載されていることはもちろんながら、難読化の機能だけではなく、アプリケーションの整合性を保護する機能も充実しています。例えば、アプリケーションの改ざん、またはデバッガーの使用を検知するためのコードを挿入し、検知した場合はアプリケーションの機能を制限したり、アラームメッセージを送信したりする機能です。また、アプリケーションの有効期限を設定する機能もあり、特定の日付になればアプリケーションを非アクティブ化することができます。

気になるライセンスと価格は?

「PreEmptive PROTECTION」のライセンスは、使用期間が1年間(※)のサブスクリプション契約となります。(※3年間の長期契約も可能です。)契約期間内は、最新のアップデートやテクニカルサポートをご利用いただけます。また、「フローティングライセンス」をメインに採用しています。当製品の機能適用を含めて同時に実行するビルド数、当製品の適用対象とするアプリケーション数、当製品を利用するプロジェクトの規模(=チーム内メンバーの最大数)などによって、購入可能なライセンスが異なります。ライセンスの詳細や価格については、「ライセンスと価格」の案内ページをご確認の上、お問い合わせください。

Contactお問い合わせ

お気軽にお問い合わせください。

お問い合わせ

    必須会社名

    個人のお客様は「個人」と入力してください。

    必須お名前
    必須メールアドレス
    必須メールアドレス(確認)
    必須ライセンス ありなし
    ダウンロード目的