wordpress 采集插件 QQWorld收藏家豪华版 (QQWorld Collector Deluxe)破解手记

php 11个月前 筑路邦
834 0

QQ收藏家插件19年就留意到,当时没有过多的研究的只记得功能挺🐮,这次又重新down下来,直接肝到底。

插件加密层数很多,首先第一层是phpar解包

// unphar('qqworld-collector-v3.3.*-beta999-collector.phar');
function unphar($pharpath = 'collector.phar'){
    try {
        $phar = new Phar($pharpath);
        //🔥 提取到zip 然后手动解压 后续还要进行第二层威盾解密
        $phar->convertToData(Phar::ZIP); 
        
        //直接用foreach / extractTo解包 实测是乱码
        //$phar->extractTo('extract');
        // foreach ($phar as $file) {
        //   file_get_contents($file);
        // }
        // $phar->extractTo('extract', null, true);//提取到目录
    } catch (Exception $e) {}
}

第二层 威盾 省略。

即使上面两步解开后,功能仍然不可用,关键代码藏的很深,而且作者还丢了N多冗余文件😂 。
所以前后瞪眼整理代码用了2天....。

最终发现有第三次加密,解开后是对版本序列号的验证逻辑。
再由此块代执行码验证后,从插件服务器加载一串base64加密后的核心代码,解开才是最终需要的代码。
可以明确说这部分代码同时导致了此款插件有风险,因为可以成功传入webshell的。

public function save_crc($filename, $content, $module, $echo = true) {
    $this->close_error_reporting();
    $filename = md5($filename . $this->domain);
    $tmp_dir = ini_get('upload_tmp_dir') ? ini_get('upload_tmp_dir') : sys_get_temp_dir();
    $filepath = $tmp_dir . DIRECTORY_SEPARATOR . $filename;
    $status = file_put_contents($filepath, $content);
    if ($this->get('activation-status', $module) == 'license') $this->set_transient($filename, $content, 2592000);
    if ($echo) {
        print $status && file_exists($filepath) ? '激活成功' : '激活失败';
    }
    if ($status !== false) $GLOBALS['QC']->cache->delete_cache("{$this->product}-activation-times");
}

会用到的代码: 直接dump

$fp = fopen(QQWORLD_OUTSIDE_COLLECTOR_DIR."decode".$filename.".php","a+");
fwrite($fp,$content."\n");fclose($fp);

如果你进行到这步 ,还可使用到的方法是进到 /tmp目录 设置不允许删除的保护锁。然后会发现痕迹。

但是  但是  最终解密出来其实是试用版的权限,比如远程发布这块试用代码是不会被加载的。

总之经过两天硬刚,又经一番顺藤摸瓜取得了旗舰版核心,任务也就完成了。

 

这款插件代码量多 、功能完善 、表现亮眼,使用顺手。
官方提供采集规则代写服务,性价比非常高。
作者付出的心血也不小。所以有条件的老铁,请移步支持正版吧。

插件官方链接

 

暂无评论

暂无评论...