1. 程式人生 > >php_screw安裝,使用,編譯,問題說明

php_screw安裝,使用,編譯,問題說明

安裝步驟:
1. 下載原始碼:
wget http://nchc.dl.sourceforge.net/project/php-screw/php-screw/1.5/php_screw-1.5.tar.gz

2. 解壓縮:
tar zxvf php_screw-1.5.tar.gz

3. 通過README.en檔案可以看到該版本軟體包要求PHP5.x 環境,並要求zlib支援(通過執行指令碼來檢查)。如果你使用的是PHP4.X版本,請下載php_screw_1.3版本

4. 進入原始碼目錄
#cd php_screw_1.5
[email protected]:~/php_screw-1.5# vim php_screw.h
#define PM9SCREW “\tPM9SCREW\t”
#define PM9SCREW_LEN 10
#define PM9SCREW “\tLAURENCE\t”
#define PM9SCREW_LEN 9


每個加密的檔案頭部都一個很明顯的字串PM9SCREW, 這樣很容易被人猜到是用screw加密的.

   這個問題的解決需要在安裝的第一步就開始. 該標識串在原始碼的php_screw.h中. 在編譯之前, 可以更改這個字串, 例如,更改為PeterHu, 相應的下面的長度就不再是10了, 而是\tPeterHu\t,一共7個了.

#define PM9SCREW        "\tPM9SCREW\t"
#define PM9SCREW_LEN 10

5. php_screw.h檔案,如果不改這個檔案,你加密的檔案內容開頭就會有 PM9SCREW ,你複製到google搜尋下就知道是用screw模組加密的,雖然目前網上沒發現解密演算法,但以後就不一定,這麼做就是為了隱藏加密演算法,可以讓別人不 知道你是用的什麼演算法加的密。改成COOL後10也要改成6.因為LAURENCE後字元長度是9發字元,如果你不對應加密後解密解析不了。
my_screw.h
[email protected]
:~/php_screw-1.5# vim my_screw.h
short pm9screw_mycryptkey[] = {
11152, 368, 192, 1281, 62
};
short pm9screw_mycryptkey[] = {
12852, 968, 192, 1281, 62, 269
};
自定義加密種子檔案,這個可能是該程式的亮點,用你喜歡的文字編輯器開啟原始碼目錄下的my_screw.h,修改檔案裡面的陣列檔案,可以用數字添 加該陣列的長度。陣列越長,加密越可靠。而且該陣列的長度不會影響加密以及你的PHP程式執行的速度.測試發現不要大於5位數,大了就會解密解析有問題。

6. phpize
#phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519


如果你的系統提示沒有該命令就需要安裝apt-get install php5-dev Centos 估計是yum -y install php5-devel ,如果還是提示上述命令不存在,可能是由於你的php沒有安裝在標準目錄下,請到php安裝目錄的bin資料夾下尋找,確定是否有該檔案。然後回到 php_scre_1.5目錄下,執行
#/full/path/to/phpize
要成功執行phpize,需要有autoconf 和M4軟體包。成功執行後,原始碼資料夾下出現configure檔案
如果沒有裝錯誤如下:phpize command not found
解決:centOS: yum -y install php-devel
:RHEL :up2date -i php-devel

7. 配置
./configure
如果php安裝在非標準目錄,需要檢視在phpize目錄下是否有php-config檔案,然後執行該目錄如下
./configure –with-php-config=/full/path/to/php-config

8. 安裝
make
make install

這個時候有時會出現一個問題:
‘zend_compiler_globals’ 沒有名為 ‘extended_info’ 的成員make: *** [php_screw.lo] 錯誤 1
解決方法:
需要修改php_screw.c (有兩個地方需要調整)
把CG(extended_info) = 1;
修改為:
CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;

9. php配置
在php.ini檔案裡面新增擴充套件
vim /usr/local/php/etc/php.ini
extension=php_screw.so
重啟apache,檢視phpinfo()裡面應該有php_screw的相關資訊

10、編譯加密工具     cd tools     make 11、 將 tools 目錄下加密用的工具 screw 拷貝到適當目錄      cp screw /usr/bin/ 在根目錄下建立hello.php  <?echo 'hello';?> php hello.php 輸出:hello screw hello.php 輸出:Success Crypting(hello.php),說明加密成功,目錄下會多出一個檔案hello.php.screw,現在的hello.php已經是加密過的了,而多出的則是原始檔的備份. cat hello.php顯示亂碼. php hello.php 輸出hello.指令碼方式解析加密檔案成功了.

PS:編譯過程中碰見的幾個問題如下(解決方法)

1。 /root/php_screw-1.5/php_screw.c: In function ‘pm9screw_compile_file’:

解決方法:

需要修改php_screw.c

把第78,84,93行的org_compile_file(file_handle, type);
修改為:
org_compile_file(file_handle, type TSRMLS_CC);

然後再make就成功了。

2. /opt/soft/php_screw-1.5/php_screw.c: In function ‘zm_startup_php_screw’:/opt/soft/php_screw-1.5/php_screw.c:124: 錯誤:‘zend_compiler_globals’ 沒有名為 ‘extended_info’ 的成員/opt/soft/php_screw-1.5/php_screw.c: In function ‘zm_shutdown_php_screw’:/opt/soft/php_screw-1.5/php_screw.c:133: 錯誤:‘zend_compiler_globals’ 沒有名為 ‘extended_info’ 的成員make: *** [php_screw.lo] 錯誤 1

解決方法:
需要修改php_screw.c

把CG(extended_info) = 1;
修改為:
CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;

php_screw如何對當前目錄下,對目錄下包含的檔案,以及包含目錄下的檔案進行整體加密

find ./ -name "*.php" -print|xargs -n1 screw //加密所有的.php檔案

find ./ -name "*.screw" -print/xargs -n1 rm //刪除所有的.php原始檔的備份檔案

命令都實驗過成功的.........應該沒什麼再補充的咯.....


相關推薦

修改marathon源碼後如何編譯部署到集群中?

mesos、 marathon首先,marathon源碼是由scala語言編寫,由sbt進行項目構建的;與spark不同,spark是由maven進行項目構建;方案一:使用intellij idea導入marathon源碼【目前不可行】A、使用intellij idea導入marathon源碼B、更新源碼C、

C語言編碼轉換gb2312 to utf8utf8 to gb2312 代碼GCC編譯支持Windows、Linux

inb style fine mem amp blog linu print from 編譯:gcc -o f.exe f.c -liconv #include <stdio.h> #include <stdlib.h> #include <

Win10專業版CMake3.8.2opencv3.3.0編譯ffmpeg文件

鏈接 編譯 tro 一個 了解 mpeg baidu 找不到 程序 編譯是真的麻煩,到處都在出問題,還找不到是哪兒的問題,自己真是太垃圾了。 目的是在CLion上編寫一個opencv的小程序。以前是學JAVA的,對C++了解的不是很多,遇到了不少的麻煩。 重點:在使用CMa

(轉)靜態編譯動態編譯靜態連結庫動態連結庫

1.定義 LIB檔案中包含函式程式碼本身,在編譯時直接將程式碼加入程式當中。稱為靜態連結庫static link library。 LIB包含了函式所在的DLL檔案和檔案中函式位置的資訊(入口),程式碼由執行時載入在程序空間中的DLL提供,稱為動態連結庫dynamic link libr

多多小程式釋出 2.0.1新增編譯重啟實時日誌功能

   多多(doodoo)小程式釋出 2.0.1,新增編譯,重啟,實時日誌功能 1、應用列表新增刪除和修改應用名稱功能;     2、新零售新增&ldquo;社群團購&rdquo;模板;     3、點選事件&am

Vuejs2.0學習之二(Render函式,createElementvm.$slots函式化元件模板編譯JSX)

vue中的render函式,我在網上找了很多,下面這一篇文章最詳細 { // 和`v-bind:class`一樣的 API 'class': { foo: true, bar: false }, // 和`v-bind:style`一

【Object-c基礎】預定義條件編譯陣列

1.     預定義:#define 在object-c中,跟C語言一樣都是採用#define才使用,但末尾是沒有分號的; 例子: #define PI 3.14 在之後即可引用,這點在iphone開發中一定每個組建的tag非常好用,並且可以集合放一個定義檔案中。 2.     條件編譯:#ifdef,

Xcode提高編譯速度增量編譯ccache

前言貝聊目前開發的兩款App分別是貝聊家長版和貝聊老師版,最近因為在快速迭代開發新功能,專案規模急速增長,單個端業務程式碼約23萬行,私有庫約6萬行,第三方庫程式碼約15萬行,單個客戶端的程式碼行數約60萬。現在打包一次耗時需要11~12分鐘。雖然還遠遠比不上 Faceboo

靜態編譯動態編譯靜態連結庫動態連結庫

1.定義 LIB檔案中包含函式程式碼本身,在編譯時直接將程式碼加入程式當中。稱為靜態連結庫static link library。 LIB包含了函式所在的DLL檔案和檔案中函式位置的資訊(入口),程式碼由執行時載入在程序空間中的DLL提供,稱為動態連結庫dynamic li

我的floyd演算法有什麼問題啊?看了好多次可以編譯就是執行有問題。

void hfloyd(h &a)//floyd實現兩點最短路徑利用友元函式實現 {int i,j,k;for(i=1;i<=a.adnum;i++)//初始化路徑陣列for(j=1;j<=a.adnum;j++)         {a.dist[i][j]=a.arc[i][j];if(

php_screw安裝使用編譯問題說明

安裝步驟: 1. 下載原始碼:wget http://nchc.dl.sourceforge.net/project/php-screw/php-screw/1.5/php_screw-1.5.tar.gz 2. 解壓縮:tar zxvf php_screw-1.5.t

Nginx 編譯加入未編譯安裝模塊ngx_cache_purge

nginx 編譯 options dsm line arguments ror tor apps creating Nginx 編譯,加入未編譯安裝模塊ngx_cache_purge 官網下載nginx及第三方ngx_cache_purge 模塊

應用技巧vim用法編譯安裝軟件包

軟件安裝 /etc efi ini 註意 ati c++ then 復制 應用技巧 1.1 問題 本例要求掌握在運維中比較常用的一些擴展命令技巧的使用,完成下列小技巧操作: 采用數值形式將目錄/root的權限調整為 rwx------ 將記錄的歷史命令條數更改為 200

tomcatjdk編譯安裝並基於Apache負載均衡session綁定

arc logs thp .rpm sta gui auth virt 測試 下載tomcat:wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.5.34/bin/apache-tomcat-8.5.34.ta

http協議--Apache-Httpd服務基本配置-rpm安裝-編譯安裝(HTTP2.2HTTP2.4)

超文本標記語言 cookie信息 multiview 異步 表達 tp服務器 The 計算 改變 socket: OSI七層: 上三層:用戶空間 下四層:通信子網,內核空間 ip:主機到主機通信 M

mqtt服務的解除安裝重新編譯安裝

Mqtt服務的解除安裝: 查詢mqtt服務檔案:whereis mosquitto 刪除已安裝的mqtt檔案即可,重新解壓安裝配置安裝mqtt服務 mqtt服務配置檔案 資料夾/etc/mosquitto mqtt命令檔案 /usr/local/sbin/mosquitto 相關mosq

PHP編譯安裝時常見錯誤解決辦法php編譯常見錯誤

轉載自:http://www.bkjia.com/PHPjc/1008013.html   This article is post on https://coderwall.com/p/ggmpfa configure: error: xslt-config not foun

Centos yum安裝php-fpm不用編譯安裝

1、刪除 1.1、如果之前編譯安裝了php,則進入安裝位置直接刪除 一般安裝位置為/usr/local/php 1.2、如果之前使用yum安裝的,則執行 yum remove php php-common 2、安裝 參考:https://webtati

保姆級教程——Ubuntu16.04 Server下深度學習環境搭建:安裝CUDA8.0cuDNN6.0Bazel0.5.4原始碼編譯安裝TensorFlow1.4.0(GPU版)

寫在前面 本文敘述了在Ubuntu16.04 Server下安裝CUDA8.0,cuDNN6.0以及原始碼編譯安裝TensorFlow1.4.0(GPU版)的親身經歷,包括遇到的問題及解決辦法,也有一些自己的經驗,希望能對讀者有所幫助。期間參考了許多前人的文章,後文會一一附上鍊接,在此先行謝過。在下能力有限,

CentOS下x264安裝編譯ffmpeg x264編譯

從官網的git地址下載x264最新程式碼: 進入x264目錄下,執行命令: ./configure --enable-shared --enable-static make & make install 編譯時可能會提示 Minimum version i