外链论坛

 找回密码
 立即注册
搜索
查看: 57|回复: 1

PHP 代码加密实践

[复制链接]

3016

主题

2万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99139149
发表于 2024-7-11 05:09:08 | 显示全部楼层 |阅读模式

咱们研发的项目中,有一部分可能是用于商场用途,会安排在客户供给设备环境中。由于 PHP 本身是解释型语言,因此未进行处理的代码,就会有泄密或被修改的危害那样咱们可能会想到最简单有效的办法便是进行加密混淆,而后协同一系列的校验,来守护咱们的代码。那样本篇文案中,咱们就采用了开源的 PHP 加密扩展 screw-plus 进行关联实践分析。

日前市场上有多种加密方法,但基本都是收费的。咱们这次实践采用了开源的方法。screw-plus 是一款开源 php 加密运行扩展,基于 screw 二次研发,暂时只能运行在 linux 下。虽然有些不足,然则倘若加强一下,能够满足有些场景。

在介绍实现之前,咱们先简单介绍下 PHP 扩展的关联知识以及 Hook 机制。

1 PHP 扩展周期

一款扩展的重点生命周期,便是上面的四个宏定义。

MINIT:扩展模块初始化时执行的动作MSHUTDOWN:扩展模块结束时执行的动作RINIT:请求初始化时的动作RSHUTDOWN:请求结束时的动作

对应于 zend_module_entry 结构中的四个函数指针:

int (*module_startup_func)(INIT_FUNC_ARGS); /* MINIT() */int (*module_shutdown_func)(SHUTDOWN_FUNC_ARGS); /* MSHUTDOWN() */int (*request_startup_func)(INIT_FUNC_ARGS); /* RINIT() */int (*request_shutdown_func)(SHUTDOWN_FUNC_ARGS); /* RSHUTDOWN() */

咱们在实现一款扩展时,基本都会用到上面四个周期宏定义。完整的 PHP 周期见下图:

本篇文案咱们只是介绍下跟该扩展关联的信息,倘若想深入认识能够参考底部链接,自动深入学习。

2 PHP 扩展钩子

在 PHP 内核中,各个执行周期几乎都有供给可重写的钩子,如下表所示。

// AST, Zend/zend_ast.h:void (*zend_ast_process_t)(zend_ast *ast) // Compiler, Zend/zend_compile.h:zend_op_array *(*zend_compile_file)(zend
回复

使用道具 举报

0

主题

1万

回帖

1

积分

新手上路

Rank: 1

积分
1
发表于 2024-9-8 23:31:43 | 显示全部楼层
回顾过去一年,是艰难的一年;展望未来,是辉煌的一年。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-9 03:01 , Processed in 0.060630 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.