php源代码加密,源码安全

https://github.com/del-xiong/screw-plus

http://git.oschina.net/splot/php-screw-plus

screw plus是一个开源的php扩展,作用是对php文件进行加密,网络上提供php加密的服务很多,但大多都只是混淆级别的加密,被人拿到加密文件问只要有足够耐心就能破解,与之不同的是,screw plus采用扩展来加解密,而且是全球金融业流行的高强度AES256加密,除非破解了服务器,否则黑客拿到了加密文件也只是一堆乱码。

同一个加密级别的有ioncube和官方的zend guard,但这两款都是收费的,一年至少数千元的费用并不值得普通开发者去尝试,而使用screw plus,你不需要多花一分钱。

下面以LNMP一键安装环境为例演示下screw plus的配置

首先克隆一份代码到服务器

git clone https://git.oschina.net/splot/php-screw-plus.git

进入项目目录,然后执行php的phpize文件,phpize是官方提供的可执行文件用于动态生成扩展开发环境,一般在php的bin目录下可以找到。lnmp的phpize

# /usr/local/phpphpize

Cannot find config.m4.

Make sure that you run '/usr/local/php/bin/phpize' in the top level source directory of the module

# cd /usr/local/src/lnmp-install-pakge/php-7.0.27/ext下找到工具

# ./ext_skel --extname=my_module

Creating directory my_module

Creating basic files: config.m4 config.w32 .gitignore my_module.c php_my_module.h CREDITS EXPERIMENTAL tests/001.phpt my_module.php [done].

To use your new extension, you will have to execute the following steps:

1.  $ cd ..

2.  $ vi ext/my_module/config.m4

3.  $ ./buildconf

4.  $ ./configure --[with|enable]-my_module

5.  $ make

6.  $ ./sapi/cli/php -f ext/my_module/my_module.php

7.  $ vi ext/my_module/my_module.c

8.  $ make

Repeat steps 3-6 until you are satisfied with ext/my_module/config.m4 and

step 6 confirms that your module is compiled into PHP. Then, start writing

code and repeat the last two steps as often as necessary.

执行了这个步骤以后你会看到这样的结果

Repeat steps 3-6 until you are satisfied with ext/my_module/config.m4 and step 6 confirms that your module is compiled into PHP. Then, start writing code and repeat the last two steps as often as necessary.

这样以后我们会在这个目录下生成一个目录叫my_module

进入这里面我们看看

# cd my_module/

# ls

config.m4  config.w32  CREDITS  EXPERIMENTAL  my_module.c  my_module.php  php_my_module.h  tests

然后我们要修改文件顺序是

config.m4

my_module.c

php_my_module.h 

# vim config.m4

dnl PHP_ARG_ENABLE(my_module, whether to enable my_module support,

dnl Make sure that the comment is aligned:

dnl [  --enable-my_module           Enable my_module support])

修改成

PHP_ARG_ENABLE(my_module, whether to enable my_module support,

Make sure that the comment is aligned:

[  --enable-my_module           Enable my_module support])

最后在该目录下运行

# /usr/local/php/bin/phpize

Configuring for:

PHP Api Version:         20151012

Zend Module Api No:      20151012

Zend Extension Api No:   320151012

编译配置

# ./configure --with-php-config=/usr/local/php/bin/php-config

编译时,发现少了个re2c

# wget https://nchc.dl.sourceforge.net/project/re2c/0.16/re2c-0.16.tar.gz

# tar -zxvf re2c-0.16.tar.gz 

# cd re2c-0.16/

# ./configure && make && make install

完成编译安装

# make(

./configure --with-php-config=/usr/local/php/bin/php-config)


/bin/sh /usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module/libtool --mode=compile cc -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -I. -I/usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module -DPHP_ATOM_INC -I/usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module/include -I/usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module/main -I/usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module -I/usr/local/php/include/php -I/usr/local/php/include/php/main -I/usr/local/php/include/php/TSRM -I/usr/local/php/include/php/Zend -I/usr/local/php/include/php/ext -I/usr/local/php/include/php/ext/date/lib  -DHAVE_CONFIG_H  -g -O2   -c /usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module/my_module.c -o my_module.lo 

 cc -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -I. -I/usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module -DPHP_ATOM_INC -I/usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module/include -I/usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module/main -I/usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module -I/usr/local/php/include/php -I/usr/local/php/include/php/main -I/usr/local/php/include/php/TSRM -I/usr/local/php/include/php/Zend -I/usr/local/php/include/php/ext -I/usr/local/php/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module/my_module.c  -fPIC -DPIC -o .libs/my_module.o

/bin/sh /usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module/libtool --mode=link cc -DPHP_ATOM_INC -I/usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module/include -I/usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module/main -I/usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module -I/usr/local/php/include/php -I/usr/local/php/include/php/main -I/usr/local/php/include/php/TSRM -I/usr/local/php/include/php/Zend -I/usr/local/php/include/php/ext -I/usr/local/php/include/php/ext/date/lib  -DHAVE_CONFIG_H  -g -O2   -o my_module.la -export-dynamic -avoid-version -prefer-pic -module -rpath /usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module/modules  my_module.lo 

cc -shared  .libs/my_module.o   -Wl,-soname -Wl,my_module.so -o .libs/my_module.so

creating my_module.la

(cd .libs && rm -f my_module.la && ln -s ../my_module.la my_module.la)

/bin/sh /usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module/libtool --mode=install cp ./my_module.la /usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module/modules

cp ./.libs/my_module.so /usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module/modules/my_module.so

cp ./.libs/my_module.lai /usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module/modules/my_module.la

PATH="$PATH:/sbin" ldconfig -n /usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module/modules

----------------------------------------------------------------------

Libraries have been installed in:

   /usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module/modules

If you ever happen to want to link against installed libraries

in a given directory, LIBDIR, you must either use libtool, and

specify the full pathname of the library, or use the `-LLIBDIR'

flag during linking and do at least one of the following:

   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable

     during execution

   - add LIBDIR to the `LD_RUN_PATH' environment variable

     during linking

   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag

   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for

more information, such as the ld(1) and ld.so(8) manual pages.

----------------------------------------------------------------------

Build complete.

Don't forget to run 'make test'.

# make test

=====================================================================

PHP         : /usr/local/php/bin/php 

PHP_SAPI    : cli

PHP_VERSION : 7.0.27

ZEND_VERSION: 3.0.0

PHP_OS      : Linux - Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64

INI actual  : /usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module/tmp-php.ini

More .INIs  :   

---------------------------------------------------------------------

PHP         : /usr/local/php/bin/phpdbg 

PHP_SAPI    : phpdbg

PHP_VERSION : 7.0.27

ZEND_VERSION: 3.0.0

PHP_OS      : Linux - Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64

INI actual  : /usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module/tmp-php.ini

More .INIs  : 

---------------------------------------------------------------------

CWD         : /usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module

Extra dirs  : 

VALGRIND    : Not used

=====================================================================

TIME START 2018-10-30 14:58:33

=====================================================================

PASS Check for my_module presence [tests/001.phpt] 

=====================================================================

TIME END 2018-10-30 14:58:33

=====================================================================

TEST RESULT SUMMARY

---------------------------------------------------------------------

Exts skipped    :    0

Exts tested     :   50

---------------------------------------------------------------------

Number of tests :    1                 1

Tests skipped   :    0 (  0.0%) --------

Tests warned    :    0 (  0.0%) (  0.0%)

Tests failed    :    0 (  0.0%) (  0.0%)

Expected fail   :    0 (  0.0%) (  0.0%)

Tests passed    :    1 (100.0%) (100.0%)

---------------------------------------------------------------------

Time taken      :    0 seconds

=====================================================================

This report can be automatically sent to the PHP QA team at

http://qa.php.net/reports and http://news.php.net/php.qa.reports

This gives us a better understanding of PHP's behavior.

If you don't want to send the report immediately you can choose

option "s" to save it.You can then email it to qa-reports@lists.php.net later.

Do you want to send this report now? [Yns]:

进入tools

# cd tools

# make

把生成的 my_module.so复制到扩展目录下

# cp my_module.so /usr/local/src/lnmp-install-pakge/php-7.0.27/ext 

进入php.ini

# vim /usr/local/php/lib/php.ini

添加

extension=/usr/local/src/lnmp-install-pakge/php-7.0.27/ext/my_module.so

然后重启php服务 这时可以放个php文件输出phpinfo信息,如果看到以下提示说明扩展生效了


在扩展的tools目录,执行./screw [路径],[路径]可以是单个文件也可以是文件夹,然后就可以实现加密了。

/screw [PATH] -d 解密代码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • 对于店面发生的问题、我们要善于发现问题并修正错误,及时的去纠正错误才会减少以后的出错率。 最近店里...
    王敏_阅读 317评论 2 0
  • 我在第一棵合欢树下等你 敬超 当第一滴雨水落下时,你就来 我会在一株合欢树下等你 让整个夜色浓稠一些,温暖一些 桃...
    敬超阅读 316评论 2 3
  • 当一天我发现有人掐住自己的脖子,当我醒来,却发现那个人是我自己,当我向外界呼唤时,却没有一个人听见。 当我自我意识...
    霂噺阅读 417评论 0 2
  • 乌衣巷(刘禹锡) 朱雀桥边野草花,乌衣巷口夕阳斜。 旧时王谢堂前燕,飞入寻常百姓家。
    杨明旭阅读 178评论 0 0