记录一次screw加密的PHP代码项目解密过程

admin 2026-01-30 17:47:36 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文记录了审计PHP代码时遇到Screw加密的解密过程。作者通过分析php_screw.so文件,利用IDA或objdump命令获取密钥和头长度,修正了脚本截断密钥需补充00字节的问题。最终成功还原混淆代码并发现漏洞,提供了具体的逆向分析命令。 综合评分: 85 文章分类: 代码审计,逆向分析,WEB安全,漏洞分析


cover_image

记录一次screw加密的PHP代码项目解密过程

原创

Vlan911 Vlan911

我不懂安全

2026年1月30日 11:29 北京

某次项目,在审计源代码的时候,发现代码被加密混淆

完全没法看,而后在设备里找到了php_screw.so文件,这个文件里存放了key和头长度,这两个是用来后去解密的,key可以直接使用ida打开so文件直接查看

通过查看hex获得十六进制的密钥,但是这里很奇怪,脚本里写的是从开头到第一个空字节结束,但是我遇到的这个需要加上00才行

github项目地址

https://github.com/DaBoQuan/php_unscrew

也可以使用命令行查看key

objdump -s -j .data php_screw.so

获取头长度

objdump -s -j .rodata php_screw.so

这个长度PM9SCREW为8,需要加上前后的两个换行符号,就是10

解密效果,可以看到,不加00加密失败,加了00解密成功

也是成功解密,并且成功看到了漏洞代码


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:我不懂安全 Vlan911 Vlan911《记录一次screw加密的PHP代码项目解密过程》

评论:0   参与:  0