ganlvtech/php-enphp-decoder

不知道在哪留言了,就这吧先

Closed this issue · 3 comments

最近拜读了大佬的zym乱码调试这篇文章

不才,我找了一个样本进行了一番尝试

最后发现好像是二次混淆了,我自己尝试的结果总是还有部分代码没还原回来

不知道大佬可否不吝赐教

1.zip

过程中我尝试打开错误提示运行原始代码,会提示函数未定义 "die"

后用php_parser转换,得到的文件直接调试会报错

不知道是不是因为php_parser转换过程丢了东西

注释掉报错的语句后可以正常调试,最后没有还原到原始代码


其实我更想知道这些字节码是如何整理成算法的、、、

我用vscode调试的时候大部分函数都看不到名字

可能是我太菜吧

睡了2019年6月12日00:53:07

又尝试了一上午,最终还原了代码

自论坛文章后,原作者看起来应该是改良了算法

原有的二次gzcompress跟base64编码都去掉了

反而加密了中文字符跟一些常见内置函数名

在最后的eval中直接调用了解码函数在内存中还原了代码

故沿着本身算法还原后还会有乱码

最后用了str_replace等一系列彩笔字符串替换函数还原了代码

最后还是感谢大佬的文章给了我灵感

谢谢

如果用 PHP-Parser 的话最好用专业点的调试器,比如在 PhpStorm 中调试,看着能方便点。

就我目前来看,php parser 不会出问题,他的语法分析器还是很靠谱的。

如果用 PHP-Parser 的话最好用专业点的调试器,比如在 PhpStorm 中调试,看着能方便点。

就我目前来看,php parser 不会出问题,他的语法分析器还是很靠谱的。


我又来了、、、

今晚研究的题目是魔方1

不是很懂虚拟机

如果原始文件是对其他文件有依赖的话这时候该怎么处理这个文件?

直接运行目标文件的话会提示依赖的函数未定义

抱歉我表达能力不太好

a文件依赖b文件里的B函数

魔方的加密方式不像zym那样是代码还原后执行

所以运行原始文件的时候就已经报错了,这个时候该怎么解决呢?

原来是我理解错误。。。

后面尝试发现格式化得到的func_map 中decode参数是空白

尝试debug、、

整明白了 以我现在的水平还造不出来这个指令集

歇菜了、、

打扰了、、、