BLOGTIMES
2006/01/14

PHPのソースコードを難読化

  php 
このエントリーをはてなブックマークに追加

PHPによる開発で他人にソースコードを公開したくないので「PHPをコンパイルするにはどうしたらいいですか?」みたいなことはメーリングリストとかでも結構流れていたりします。これを手軽に実現するPOBSというソフトをみつけました*1

PHPとJavascriptのソースコードを簡易暗号化:POBS:phpspot開発日誌

POBSを使えばPHPとJavascriptのコードを簡易暗号化することが可能。POBSはユーザ定義の関数、定数、変数をそれぞれMD5化して先頭の8バイトの文字列に置換します。その上で、関数ならFabcdefghのような感じで先頭にFをつけるようになっています。変数はV、定数はC。

簡易暗号化とされていますが難読化と言う方が正しいでしょう。これまでにも、コメントやインデント、改行を消去して難読化を行うというテクニックはあったわけですが、さらに変数名の難読化も行ってくれるわけですね。

もっと強力なソリューションが必要な場合には商用製品としてZend EncoderionCube PHP Encoderがありますが、僕の場合はちょっと難読化ができればいいやということも多いので、そういう機会があったら試してみようと思います。

例えばこんな感じ

例を見てもらえればわかると思いますが、あくまで難読化なので、コメントや改行はとりのぞかれていますが、文字列や定数はそのままですね。

test.php

<?php $a = 1; $b = 2; $c = $a + $b; echo $c; /* comment comment comment */ echo "zzzzzzzzzzzzzzzzzzz\n"; class TestClass { var $test; function setTest($var){ $this->test = $var; } function getTest(){ return $this->test; } } // comment $obj = new TestClass(); $obj->setTest(1); echo $obj->getTest(); ?>

test.php 難読化後

<?php $V0cc175b9 = 1; $V92eb5ffe = 2; $V4a8a08f0 = $V0cc175b9 + $V92eb5ffe; echo $V4a8a08f0; echo "zzzzzzzzzzzzzzzzzzz\n"; class F3b5abadd { var $V098f6bcd; function F5f854b88($Vb2145aac){ $this->V098f6bcd= $Vb2145aac; } function F9c25887d(){ return $this->V098f6bcd; } } $Vbe8f8018 = new F3b5abadd(); $Vbe8f8018->F5f854b88(1); echo $Vbe8f8018->F9c25887d(); ?>

トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/1241
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン