php擴展對於源代碼加密輪子,php 源碼加密

本文目錄一覽:

php 部分源代碼加密

PHP加密必定用到服務器擴展,不然怎麼對加密後的代碼解密呢?不依賴擴展,最多只能用一些工具對代碼進行混淆壓縮,但這只是清除代碼格式,刪除多餘的換行和空格,將變量命替換為單字母等,並不能真正加密,經過分析後仍然能解開。

如何對PHP文件進行加密

Zend Guard是目前市面上最成熟的PHP源碼加密產品。

經過本人搜集資料,親身測試後,總結了如何利用Zend Guard對PHP文件進行加密,以及如何利用Zend Loader對加密後的PHP文件進行解密。

我使用的是Wampserver2.2,其中php的版本是5.3.10。(注意:這個裡面自帶的php版本屬於TS版本,即Thread safety線程安全)

Zend Guard的安裝及破解

點擊下載 Zend Guard5.5.0,下載完成後,請自行傻瓜式安裝。

破解需要注意以下幾點:

1、本KEY的有效時間為2010年7月10號,因此激活時,請將自己電腦的系統時間調整到這個時間之前,如:2009-01-01

2、本KEY激活的為試用版,加密過的文件只有14天有效時間,因此在加密文件時,請將自己電腦的系統時間向後調整幾年,如:2020-01-01

3、點擊下載授權文件 zend_guard授權文件.zip,解壓得到zend_guard.zl,即激活用的文件

4、打開Zend Guard 5.5.0,[Help] – [Register] – [Search for a license file on my disk],選擇zend_guard.zl授權文件激活即可

如何使用Zend Guard進行加密?

1、打開Zend Guard 5.5.0,[File]-[New]-[Zend Guard Project],新建項目。

彈出如下的對話框:

2、點擊 Next ,下一步。彈出如下對話框,選擇要進行加密的源文件或文件夾。

本步驟是選擇要加密的文件,可以是單個文件[Add File]或整個文件夾[Add Folder],然後[Next]。

(此處,我選擇的是對整個文件夾進行加密。即 D:\wamp\www\demo 里的所有文件進行加密。)

3、接下來是選擇PHP的版本[與你web服務器上PHP的版本相對照],這裡很重要,版本不對會出錯,[Finish]完成項目的創建。

注意: 對於Zend Guard 5.5.0這個版本的加密軟件,最高只可支持5.3版本的PHP。如果您的PHP版本較高,請到Zend Guard官網下載對應的高版本加密軟件。

(由於,我的PHP版本是PHP 5.3.10,故這裡我選擇PHP 5.3,其他地方可以默認,直接點擊完成)

4、在Zend Guard左側的Guard Explorer中,可以看到你新建的項目了,鼠標選中項目名稱後,右鍵單擊[Encode Project],完成。

如此,就實現了對PHP源碼的最簡單的加密。

我們可以在產品的輸出目錄(D:\productDir)里,看到加密後的文件。

可以看出,產品輸出目錄里的PHP文件已被加密了。

這種最簡單的加密方式,我們並沒有設置加密的有效期,也沒有設置許可證支持(即解密時,是否需要許可證文件),默認是永不過期,不需要解密許可文件。

如果要設置解密時的許可證文件,可以點擊 項目名稱(project_test) ,再點擊 項目主窗口中的 Overview 旁邊的 Security 選項卡,就可以進行更加安全的加密設置了。 如下圖:

Zend Loader 解密

上面我們已經對PHP代碼進行了最簡單的加密(編碼),加密後生成的PHP源代碼,就不能再被web服務器上的PHP模塊解析了。

當我們將加密後的php文件放到web服務器上執行時,會顯示如下信息:

Zend Guard Run-time support missing!

One more more files on this web site were encoded by ZendGuard and the required run-time support is not installed orproperly configured.

……

原來,加密後的php代碼需要ZendGuardLoader模塊才能正常運行。

因為我的php版本是5.3.10的,所以我這裡只提供了ZendGuardLoader-php-5.3-Windows,如果是其他版本的php,請自行百度。

點擊下載 ZendGuardLoader-php-5.3-Windows

下載後,解壓壓縮包,找到目錄里的 ZendLoader.dll 文件,將它複製到你的php目錄里的ext目錄(PHP的擴展庫目錄)下,再編輯PHP的配置文件php.ini,添加如下代碼:

[Zend.loader],

zend_loader.enable=1

zend_loader.disable_licensing=1

zend_loader.obfuscation_level_support=3

zend_loader.license_path=

zend_extension=”d:\wamp\bin\php\php5.3.10\ext\ZendLoader.dll”

註:

zend_loader.enable 表示是否啟用zend loader,1表示啟用,0表示禁用

zend_loader.disable_licensing 表示是否禁用許可證,1表示禁用,0表示不禁用 (由於上面我加密php文件的時候,沒有設置許可證支持,故解密時,禁用許可證)

zend_loader.obfuscation_level_support 表示代碼混淆級別

zend_loader.license_path 指定許可證文件的路徑

zend_extension 指定zend loader 擴展文件 的路徑

配置完成後,重啟wampserver,如果您的php的版本是NTS(非線程安全的話),就可以正常執行加密後的PHP文件了。

但是,多數情況下的php版本都是TS(線程安全)的,比如,我這個wampserver集成環境中的php是php-5.3.10-ts,它是沒有辦法支持Zend Guard Loader擴展文件的。故還會報出上面的錯誤提示信息。

因為,Zend Guard Loader 只能支持 NTS版本的php,終極解決辦法是下載安裝 NTS 版本的php。

為了實現PHP源文件的 Zend 解密測試,可以下載安裝 php-5.3.29-nts-Win32-VC9-x86,再來配置 Zend Loader 擴展支持。

如何查看安裝好的PHP的版本及PHP是否已經成功支持Zend Loader?

通過查看 phpinfo() 函數的輸出信息,利用 Ctrl + F 快速查找關鍵字Thread Safety 和 Zend Guard Loader。

如本人安裝好php-5.3.29-nts版本的php後,phpinfo()的輸出信息如下:

可以看到,Thread Safety 對應的值為disabled,就說明該php的版本是 NTS (非線程安全)的,否則就是TS版本的。

輸出信息中,還可以看到 Zend Guard Loader v3.3 字樣,說明 Zend Guard Loader 也安裝成功了。

再往下面看,還可以查看 Zend Guard Loader 的配置信息,如下:

到此,整個 Zend Guard 加密和 Zend Guard Loader 解密,就介紹完畢了。

溫馨提示: 為了順利實現PHP代碼的zend加密和解密,建議使用PHP官網上主流的PHP的NTS版和Zend官網上對應的Zend Guard加密軟件、 Zend Guard Loader解密插件。

相關附件:

Wampserver2.2

Zend

Guard5.5.0

php-5.3.29-nts-Win32-VC9-x86

mod_fcgid-2.3.6-win32-x86.zip

php源碼怎麼加密

一、無需任何PHP擴展的加密

此類加密的代表有 威盾PHP加密專家、PHP在線加密平台、PHP神盾 等。

此類加密都是以eval函數為核心,輔以各式各樣的字符串混淆和各種小技巧,來達到加密目的(更準確的說,應該算是混淆)。下面以一個簡單的hello world為例來說明此類加密的大體過程。

?php

echo “hello world”;

首先 ,我們把這段代碼變為通過eval執行的

?php

eval(‘echo “hello world”;’);

然後 ,我們再進行一些轉換,比如說base64編碼

?php

eval(base64_decode(‘ZWNobyAiaGVsbG8gd29ybGQiOw==’));

就這樣子,我們的第一個加密過的php代碼新鮮出爐了。。。

上面這個例子非常非常簡單,基本上任何有一點php語言基礎甚至別的語言基礎的人都能輕鬆的看懂並解密。因此,我們需要一些方法讓這個加密至少看上去不是那麼簡單。

二、同時採用多種編碼函數

除了剛才提到的base64,php還有許多內置的編碼函數,例如urlencode、gzcompress等。把這些函數混合使用可以提高解密的複雜度(不是難度),此外還可以使用strtr來制定自己的編碼規則。 使用變量來代替函數名 使用特定字符來命名變量

這兒所說的特定字符是一些極其相似的字符,如I和1,0和O。試想一下滿屏都是O和0組成的變量,並且每一個的名字長度都在10個字符以上。。。 判斷文件自身是否被修改

這個功能看似容易,對文件做一下摘要再進行下對比即可知道是否被修改了,但是如何才能在文件內把摘要嵌入進去呢?我沒有找到完美的方案,但一個變通的方案還是很容易的。。。

?php

$code = substr(file_get_contents(__FILE__), 0, -32);

$hash = substr(file_get_contents(__FILE__), -32);

if (md5($code) !== $hash) {

exit(‘file edited’);

}

ACBC41F727E00F85BEB3440D751BB4E3

當然,你可以把這個校驗字符串放在別的位置來提高破解的難度。有了這個,別人想破解你的程序可就得多費一點功夫了。。。

既然知道了原理,那解密自然也就非常簡單了,總體來說就三步:

把eval替換為輸出,比如echo 根據編碼規則把字符串還原 如果文件未解密完全,從第一步開始繼續

當然,實際上的解密過程並沒有這麼簡單,比如說如果加密的時候使用了gzcompress,那得到的數據將會包含一些二進制數據,而採用一般的文本編輯器打開時這些數據都會顯示為亂碼,並且在保存時丟失部分數據。解決方法很簡單也很麻煩,那就是使用二進制(16進制)方式打開、修改和保存。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/190311.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-29 22:32
下一篇 2024-11-29 22:33

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • g3log源代碼學習

    g3log是一個高性能C++日誌庫,其代碼十分精簡和可讀性強,本文將從3個方面詳細介紹g3log源代碼學習。 一、g3log源代碼整體架構 g3log的整體架構十分清晰,其中有3個…

    編程 2025-04-29
  • 雲智直聘 源碼分析

    本文將會對雲智直聘的源碼進行分析,包括前端頁面和後端代碼,幫助讀者了解其架構、技術實現以及對一些常見的問題進行解決。通過本文的閱讀,讀者將會了解到雲智直聘的特點、優勢以及不足之處,…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • Python網站源碼解析

    本文將從多個方面對Python網站源碼進行詳細解析,包括搭建網站、數據處理、安全性等內容。 一、搭建網站 Python是一種高級編程語言,適用於多種領域。它也可以用於搭建網站。最常…

    編程 2025-04-28
  • 數字孿生源代碼的介紹

    數字孿生源代碼是一種用於模擬現實世界的技術。它將現實世界的實體或場景進行數字化,使得我們可以通過計算機程序對其進行模擬,以便進行分析和預測。數字孿生源代碼包含了許多組件和算法,下面…

    編程 2025-04-28
  • 源碼是什麼

    源碼是一段計算機程序的原始代碼,它是程序員所編寫的可讀性高、理解性強的文本。在計算機中,源碼是指編寫的程序代碼,這些代碼按照一定規則排列,被計算機識別並執行。 一、源碼的組成 源碼…

    編程 2025-04-27
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若服務器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • Go源碼閱讀

    Go語言是Google推出的一門靜態類型、編譯型、並髮型、語法簡單的編程語言。它因具有簡潔高效,內置GC等優秀特性,被越來越多的開發者所鍾愛。在這篇文章中,我們將介紹如何從多個方面…

    編程 2025-04-27

發表回復

登錄後才能評論