2016年1月6日 星期三

PHP教學 - 利用 php 混淆器將程式碼進行編譯

因為工作的關係研究了一下 PHP 程式碼加密,假如不使用付費版的加密程式是否有替代的方式?發現到 php obfuscator 有些現成的套件可以使用,測試一下大陸寫的 php 代碼混淆器2.0版是可以進行簡單的 php 程式碼編譯,下載網址為 http://download.csdn.net/source/2805147
使用的方式如下:
將套件包下載後放置 www 目錄( xampp 為 htdocs/),開啟 indexok.php 更改來源資料夾和目的資料夾如下
//要混淆的文件位置
$mwww='C:\xampp\htdocs\test';
//混淆后的文件存放位置
$mdir='C:\xampp\htdocs\output';

開起網頁執行

測試結果,是可以編譯加密,但這僅僅只是處理簡單的 php 程式,如果寫到物件導向、mvc 的架構,該套件處理函式及物件導向恐怕會有問題。

於是又找到另一個套件 YAK Pro https://www.php-obfuscator.com/?demo
該套件處理較完整,支援的函式也多,目前也有專門在維護,但稍為複雜點,說明如下
先從網站 github 下載套件並放置在 www (xampp htdocs/)
開啟 cmd (windows 要做環境設定增加 php.exe)
執行會發生錯誤


C:\xampp\htdocs\yakpro-po-master>php yakpro-po.php
Error:  PHP-Parser is not correctly installed!
You can try to use the following command:
        # git clone --branch=1.x https://github.com/nikic/PHP-Parser.git

因為沒有安裝 PHP-Parser 套件,再次下命令安裝

C:\xampp\htdocs\yakpro-po-master>git clone --branch=1.x https://github.com/nikic/PHP-Parser.git
Cloning into 'PHP-Parser'...
remote: Counting objects: 7100, done.
remote: Total 7100 (delta 0), reused 0 (delta 0), pack-reused 7100
Receiving objects: 100% (7100/7100), 2.63 MiB | 462.00 KiB/s, done.
Resolving deltas: 100% (3706/3706), done.
Checking connectivity... done.

好了後再次測命令又發生錯誤
C:\xampp\htdocs\yakpro-po-master>php yakpro-po.php
Info:   Using [C:\xampp\htdocs\yakpro-po-master\yakpro-po.cnf] Config File...
Error:  source_directory and target_directory not specified!
        neither within command line parameter,
        nor in config file!

因為沒設定來源資料及目的資料,從 yakpro-po 中可以發現到操作方式

yakpro-po source_filename -o target_filename Obfuscates code to target_filename
yakpro-po source_directory -o target_directory Recursivly obfuscates code to target_directory/yakpro-po (creates it if it does not already exist


再次下命令
C:\xampp\htdocs\yakpro-po-master>php yakpro-po.php C:\xampp\htdocs\test -o C:\xampp\htdocs\output
Info:   Using [C:\xampp\htdocs\yakpro-po-master\yakpro-po.cnf] Config File...
Info:   Process Mode            = directory
Info:   source_directory        = [C:\xampp\htdocs\test]
Info:   target_directory        = [C:\xampp\htdocs\output]
Obfuscating C:\xampp\htdocs\test/hello.php
Obfuscating C:\xampp\htdocs\test/test.php
Info:   [variable      ] scrambled      :        2
Info:   [function      ] scrambled      :        0
Info:   [method        ] scrambled      :        0
Info:   [property      ] scrambled      :        0
Info:   [class         ] scrambled      :        0
Info:   [class_constant] scrambled      :        0
Info:   [constant      ] scrambled      :        0
Info:   [label         ] scrambled      :       27


編譯成功!

沒有留言:

張貼留言