難読化コード
難読化コード ( Obfuscated code )とは、コンピュータプログラムにおいて、その内部的な動作の手続き内容・構造・データなどを人間が理解しにくい、あるいはそのようになるよう加工されたソースコードやマシンコードのこと。 目次 1 概要 2 娯楽としての難読化 2.1 例 3 難読化の欠点 4 難読化コードを生成するソフトウェア 5 脚注 6 参考文献 7 関連項目 8 外部リンク 概要 おおよそ2つのいずれかの目的のため、プログラマのコーディング、専用アプリケーション、または開発ツールの補助機能によって、ソースコードや実行コードに対して故意にコードやロジックを難読化、曖昧化を施される。 コードの目的を隠蔽したり、( 難解さに基づくセキュリティ (英語版) )、改竄(タンパリング)やリバースエンジニアリングを阻止するため。 コードを解読するもののためのパズルや娯楽として。 コード難読化は ハードウェアの曖昧化 (英語版) とは本質的に異なっており、後者は電子回路の配置、構造を機能隠蔽を目的として改変することを意味する。 他のプログラミング言語に比べ、いくつかの言語はその構造や性質により、難読化が容易なものもある [1] [2] 。C言語 [3] [4] 、C++ [5] 、Perl [6] はその一例である。 娯楽としての難読化 難読化ソースコードの作成や解読はプログラマにとって、頭の体操(brain teaser)となる。いくつかコンテストもあり、創作性などを検討し表彰されるコンテストもある。例えば、国際難読化(英単語の正確な訳としては「難読化された」)Cコードコンテスト(IOCCC)、 Obfuscated Perl Contest (英語版) 、International Obfuscated Ruby Code Contest [7] などである。これらのコンテストはプログラムの働きの意外性(見た目と全く異なる働きをするなど)などもコンテストのうちに含まれることも多く、難しさを競うコンテストではないし、単に難しいだけといった作品はまずない。 難読化のパターンには色々あり、単純なキーワード置換、スペースをうまく利用...