php 代码交付 混淆,解密混淆的PHP程序

团队大佬在做PHP代码审计的时候发现PHP代码是被混淆过的。虽然可以通过自己手动解密可以还原原先的PHP代码,但是混淆过程比较复杂且自己写脚本还原非常麻烦。所以,我这边通过PHP底层的操作对混淆后的PHP代码进行还原。

0x02 PHP代码混淆

PHP代码混淆一般来说有两种方法:

需要PHP扩展

无需PHP扩展

本文我们主要讲解无需PHP扩展的代码混淆的解密。大多数的无需扩展的php代码混淆原理上都是使用eval进行代码的执行。如果我们能够得到 eval 函数的参数,即可获得解密后的代码。

不过,一般来说PHP的混淆都会通过多次 eval 来还原并执行php代码,所以我们可以通过hook PHP的eval函数来打印其参数来解密代码。

0x03 hook eval

PHP中的eval函数在Zend里需要调用 zend_compile_string 函数,我们可以通过调试看看 zend_compile_string 函数。

user@ubuntu ~/php-5.6.35/Zend ~ grep -rn "zend_compile_string" *

zend.c:693:zend_compile_string = compile_string;

我们发现 zend_compile_string 函数其实就是 compile_string 函数。所以我们可以通过写一个简单的PHP代码,看能否在 compile_string 中获取到 eval 参数的值

eval("phpinfo();");

首先我们编译一下下载好的PHP。注意,由于我们后面要进行调试,所以要在编译时加上 -g 参数,加调试符号。

./configure CFLAGS="-

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值