php运行phar,phar打包PHP代码

本文介绍了PHP中的Phar技术,详细阐述了如何使用Phar打包PHP代码,包括创建phar文件、设置启动类以及压缩文件。通过实例展示了如何运行phar文件并调用内部方法。此外,还提到了Phar作为一种源码混淆手段,讨论了其混淆程度和反编译可能性。
摘要由CSDN通过智能技术生成

bd3069777fcb

image

前一阵子,参加了一个阿里的PHP技术小会议。主讲人周梦康,分享了一下 phar 这个东东。

之前,还真没咋注意。

正好今儿有时间有兴趣,自己也研究一下。梳理一下流程。

bd3069777fcb

image.png

开始咯。。。。

首先要做的一件事就是...等等。。。好像忘记说了一个东西。

自从 php5.3开始,就集成了 phar 这个东东。但是,但是,但是!!!这玩意儿默认是关闭的。。。

bd3069777fcb

clipboard.png

找到 自己的 php.ini 文件,进入,修改 【phar】phar.readonly 为 off 。它默认是 on。

bd3069777fcb

kengdie.png

寻找自己的 php.ini 找不到的话,在自己的控制台, php -ini | grep ini

bd3069777fcb

phpini.png

不罗嗦了,开始,开始~~~ 真的开始~~~

1.创建a.php文件

class a{

private $b='1';

public function setB($b1){

$this->b = $b1;

}

public function prf(){

echo 'prf function prfffff'.$this->b;

}

}

2、创建c.php文件,实例化类 a

include('a.php');

$a = new a();

$a->prf();

$a->setB('bbbbbb');

$a->prf();

3、 将 a.php 的代码打包,并设置默认启动类

$phar = new Phar('a.phar');

$phar->buildFromDirectory(dirname(__FILE__));

$phar->setStub($phar->createDefaultStub('c.php','c.php'));

$phar->compressFiles(Phar::GZ);

4、在当前目录下,就会出现 a.phar 文件。此文件就是打包好的 phar 文件。此文件可以直接通过 php 运行

bd3069777fcb

4.png

5、直接运行 phar 文件。可以看到,输出上面的结果了。

bd3069777fcb

5.png

6、除此之外,此 phar 包文件,还可以通过代码解析,然后和java类似的方式,进行 Jar 包内的方法调用。而 phar 亦可以达到同等的效果。

//include('a.phar'); // 这种方式,会将a.phar包内的所有的类都加载进来。类似于 java的 import com.a.*的这种效果。将不需要的也导入进来。

真的没必要

include('phar://a.phar/a.php'); //需要啥,就从包内加载啥。很方便,又简洁

$d = new a();

$d->setB('dddd');

$d->prf();

效果:

bd3069777fcb

cd.png

这玩意儿,简直是 做兼职啥的神器啊……不给钱,就不给你源码……

bd3069777fcb

hahjpeg.jpeg

后来又 vim 看了一下, a.phar 里面的内容。

里面全都是

bd3069777fcb

luanma.png

这也算认为是一种混淆了吧~~~~

就是不知道,其混淆程度能不能达到 android 的程度~

android 的原生混淆,亦有各种反编译的存在。但是一旦通过各种第三方比如360,加壳混淆打包等处理一下,基本就反编译无望了。这也应该是目前大部分人在用的吧。

phar 这个玩意儿,不知道能不能反编译回来~拿到源码或者大概能看懂的代码。

有时间再研究吧。就到这里了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值