tonyenc php解密
拿到文件很晕,都是乱码,应该不是常规的混淆,大概率是通过so来解密,先找到php目录
1 |
|
Shell
找到扩展配置目录
tonyenc.ini这个文件很可疑
内容为
1 |
|
Shell
网上搜了一下这个so的文件名,直接搜到了加密项目
https://github.com/lihancong/tonyenc
这个密钥很关键,我们可以在ida进行查找
在解密之前我们需要确认github这个项目和目标so的逻辑是否相同,直接把正确的key修改,根据文档在Linux下编译替换原有的so,打开网页测试代码是否正常运行,或者可以调用enc方法加密同一个文件测试。
经过测试,我编译的so可以正常使用,这样的话直接用github的解密方法吧
解密逻辑比较简单,我们可以直接单独写个程序解密
完整代码
1 |
|
C
1 |
|
Python
重新加密
https://windows.php.net/downloads/releases/archives/
说明:7.2使用VC15编译,本文以PHP7.0.26举例 使用Visual Studio 2017
需要从 官网 下载 PHP7.0.26 的源代码包和已编译的 PHP 程序,再分别解压,得到两个目录(假设在 C 盘):
C:\php-7.0.26-src
C:\php-7.0.26-nts-Win32-VC14-x64
如何编译
1)拿到要编译的代码,在 VS 2017 菜单中选择「文件」-「新建」-「从现有代码创建项目」,然后在弹出窗口中选择你要编译的代码,类型选择「动态库(dll)」。
2)此时 VS 2017 打开了项目,把工具栏中的「Debug」改为「Release」,「x86」改为「x64」,在菜单中选择「项目」-「属性」。然后在弹出窗口的左侧「常规」栏目下,「配置类型」选择为「动态库(.dll)」:
3)然后在左侧「C/C++」-「常规」栏目下,「附加包含目录」中,加入:
C:\php-7.0.26-src
C:\php-7.0.26-src\main
C:\php-7.0.26-src\TSRM
C:\php-7.0.26-src\Zend
4)接着在左侧「C/C++」-「预处理器」栏目下,「预处理器定义」中,加入:
ZEND_DEBUG=0
PHP_EXTENSION
PHP_WIN32
ZEND_WIN32
HAVE_XXX=1
COMPILE_DL_XXX
ZTS
注意,要把上面的 XXX 改为大写的扩展名 (如扩展叫 tonyenc 就把 XXX 改成 TONYENC),否则 PHP 将无法识别扩展。ZTS用于告诉编译器开启线程安全(如果去掉就是不开启)。注意,线程安全的开启与否,取决于前面下载到的 C:\php-7.0.26-nts-Win32-VC14-x64,它如果启用了线程安全编译,这里就开启线程安全。
5)在左侧「链接器」-「输入」栏目下,「附加依赖项」中,加入:C:\php-7.0.26-nts-Win32-VC14-x64\dev\php7.lib,即前面下载得到的已编译的 PHP 程序。
6)点确定,然后菜单中选择「生成」-「生成解决方案」,恭喜你,编译器报错:无法打开包括文件 ../main/config.w32.h,这时把 C:\php-7.0.26-src\win32\build\config.w32.h.in 复制到 C:\php-7.0.26-src\main\config.w32.h (注意没有了后面的 in),然后在 config.w32.h 中加入:
1 |
|
Dos
这将指明运行库是 VC14,与前面下载到的已编译 PHP 程序匹配,重新生成下解决方案,这样就能成功编译了!