[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

難読化

pointこの用語のポイント

point読みにくくすることだよ

pointソースコードの解読や解析をやりにくくする目的でやるよ

スポンサーリンク

簡単に書くよ

難読化とは

読みにくくすること。
もう少しきちんと書くと

ソースコードとかを読みにくくして、解読や解析をやりにくくすること
です。

image piyo

詳しく書くよ

ソースコードとかを読みにくくするのが「難読化」です。
「ソースコード」は「人間語で書いたプログラムの元ネタ」ね。

難読化

なんでわざわざそんなことをするかというと、中身を見て、勝手にパクったり、あるいは好き勝手に改造したりされるのを防ぐためです。
一言で言ってしまえば、悪い人に対する嫌がらせですね。

もちろん、難読化したからといって、勝手に読まれることを完全に防ぐことはできません。
見ること自体は誰でもできますし、気合の入った人であれば、それでも解析して悪いことをするでしょう。
そのため過信は禁物ですが、難読化することにより相手の「よっしゃ!中身を見て悪いことしてやるぜ!」な心をへし折る効果が期待できるのです。

それでは実際に難読化の例を見てみましょうかね。

例えば、以下のようなJavaScriptのソースコードがあったとします。

var num = 0; //1から10まで加算する数字の元

//1から10まで加算する
for(i = 1; i <= 10; i++){
    num = num + i;
}
//1から10まで加算された数字を表示
alert(num);


これは数字を1から10まで足してその結果を表示してくれるプログラムです。
動かすと画面に「55」と表示されます。
パッと見で、何となくやっていることが分かりますよね?

これを難読化すると、例えば以下のようなソースコードになります。

function a(b,c){var g,h;g=d(b,c);h=0;h=g+h;return h;}function d(e,f){return e+f;}var k=0,l=0;for(o=1;o<=10;o++){l=a(k,o);k=l;}alert(l);

実はこれもやっていることは一緒です。
数字を1から10まで足してその結果を表示してくれるプログラムで、動かすと画面に「55」と表示されます。

どうでしょう?

見た感じでやっていることが分かるでしょうか?
中身を理解するのに「えっとー、ここでここに値を入れてて~、あれ?こっちは何でこれやっているの?」と時間が掛かるはずです。

今回は簡単な例だったので、ちょっと気合を入れれば解析できると思いますが、これが1,000行、10,000行となったらゲンナリですよね?

このように、中身を読みにくくすることによって、悪い人をゲンナリさせる防御策が「難読化」です。

あっ、そうそう。
難読化する際の注意点として、読みにくくする前の元ネタの保管があります。
当たり前ですが、読みにくくする前の元ネタはきちんと残しておきましょう。
残しておかないと、何か変更を加えたいときに涙目になれますよ。

image piyo2

一言でまとめるよ

まぁ「難読化」って単語が出てきたら「読みにくくして、解読しにくくすることなんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク