KODBOX 逆向研究

声明

文章旨在逆向工程的学习与研究,本人支持正版,如果本文侵犯了您的权益,请联系站长予以删除。

引言

版本信息:1.64.05
前些年记得曾经尝试过分析它,但是最终卡在了data.bin字节大小限制,也就是自校验始终没有解决掉,今天下午比较无聊再次尝试。

自定义bin文件路径

因为bin文件校验如果失败,有些暗桩会删除自身,所以先搞个副本出来,让它走自己的bin(php)文件;
找到helper.function.php文件,其中$_SERVER['_afile'] = BASIC_PATH.base64_decode(strrev('=4Wai5SY0FGZv4Wai9iYpxUZ2lGajJXYvM3akN3LwBXY'));部分经过反转和解码就可以得到 app/sdks/archiveLib/bin/data.bin。

SERVER中的东西

在index.php中尝试dump $_SERVER中的内容

register_shutdown_function(function () {
    $dump = $_SERVER;

    unset($dump['GLOBALS'], $dump['_ENV'], $dump['_REQUEST']);

    file_put_contents(
        __DIR__ . '/_server_dump.php',
        "<?php\nreturn " . var_export($dump, true) . ";\n"
    );
});

虽然有些内容依然是乱码,但是乱码的肯定是关键信息,其它的可以辅助分析。

data.bin自校验

其中这个文件的编码比较奇怪,如果你使用UTF-8进行编辑会导致代码乱掉,所以尝试使用ISO-8859-1进行解析和保存,这样就能保证不会因为编码问题损坏程序的结构。

尝试修改data.bin

在不关键的位置添加一个空格,刷新页面会白屏,删除一个空格也会白屏;修改不关键的空格为分号(不改变字节数)没问题,因此可以判断出自校验是通过字节数。
尝试格式化代码,通过XDebug进行跟踪调试

image.png

此时尝试去掉判断或者判断前赋值即可绕过自校验。有暗桩,很多地方都有检测。

添加接口调用栈

发现好多地方都是通过show_json进行前端返回数据的,这里可以添加traceback信息,便于找到接口对应的后端代码。

'traceback' => debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT) 添加到show_json的响应体中。
image.png

如果嫌输出太罗嗦,把参数改成 DEBUG_BACKTRACE_IGNORE_ARGS

image.png

许可证标识

image.png

初步判断版本类型=A是免费版,溯源找到版本信息的映射。
修改main.js,相关位置添加debugger
image.png
这里可以修改一下t的值,看下页面效果

image.png

找到后端

找到这个加密的字符串来自 index.php?user/view/options&v=1768744372&full=1

image.png

通过我们dump下来的SERVER,找到索引 139
image.png

在data.bin(php)中找相关代码[139],这里就需要经验来判断注入点位置了,在调用ywakc36d9075之前先输出一下这个变量,得到没有加密前的数据。猜测这个函数是AESencode(str,key)
image.png

观察json_show的结果,得到了我们想要的数据。
image.png

结语

分析到这里已经差不多了,但是这里暗桩也很多,改了这里并不能使全局都会改变。其实免费版对于个人用户来说已经完全够用了,所以后面就不分析了。
其实从下午1点开始到现在(10点)连续9个小时分析到现在,踩得坑也非常多。这里我对于开发团队表示崇高的敬意,能够做出如此优秀的软件。

评论 0

还没有评论,来说点什么吧。

提交后需要审核才会公开。