echowxsy 发表于 2020-12-22 00:01:53

两行代码搞定myBase Desktop Ver735 [macOS + Linux]

本帖最后由 echowxsy 于 2020-12-22 00:01 编辑

以 Linux 为例(懒得再加载一次macOS版的了)
首先把程序拖入 Hopper Disassembler,搜索注册框的提示字符串:

这里有个小tips:mybase对所有的按钮提示文字进行了混淆,搜license之类的很难定位。
通过查找引用就能找到注册窗体的代码:

再往上找就能找到注册逻辑,代码如下:

int sub_5c6ba0(int arg0, int arg1, int arg2, int arg3, int arg4) {    //省略代码
    rax = sub_555bb0(&var_D8, arg0, arg2, arg3, arg4); //唤起注册窗口,获得用户名和code
    if (QDialog::exec() != 0x0) {
            //省略代码
            rax = sub_590eb0(0xb04ae0, &stack[-616], &var_258);//校验
            if (rax != 0x0) {
            //成功逻辑
            }
            else {
            //失败逻辑
            }
    }
    rax = QDialog::~QDialog();//提示窗口
    return rax;
}

现在进入sub_590eb0,看看校验逻辑的实现:

int sub_590eb0(int arg0, int arg1, int arg2) {
//省略代码
//长度判断
//格式检查
//新版本的key "1-CA……"
rax = sub_5762a0(&var_48, rbx, r12);//检测算法
r13 = 0x1;
if (rax == 0x0) {
    //旧版本的key "1-15……"
    rax = sub_5762a0(&var_58, rbx, r12);//检测算法
    r13 = rax;
    //旧版处理代码省略
}
if (r13 != 0x0) {
    //正确的逻辑省略
    rax = 0x1;
} else {
    rax = 0x0;
}
return rax;
}

在这里我犯了个小聪明,直接修改返回值为0x1,在注册的时候任意字符会提示成功,但是关于界面还是试用。说明校验的地方不止一处。
所以我们要更深入一点,再深入一点,进入sub_5762a0里面,查看一下sub_5762a0的引用:

大致浏览了一下,校验都用了这个函数,所以我们对这个动手就可以了。

在这里我们直接让程序ret并在这之前把eax设置为0x1,修改结果如图:

这里有个细节,为了保证堆栈平衡,保留了sub rsp, 0x68和add rsp, 0x68,理论上同时去掉这两个应该也没有问题,这块我不是很懂,还需要学习一个。
到这里,如果你的Hopper像我一样,就可以 File > Produce New Executable... 生成修改后的程序。

没有也没关系,我们看十六进制模式:

注意两点:字节值 和 offset
用这两行代码写修改脚本:

printf'\xB8\x01\x00\x00\x00' | dd seek=$((0x1762ac)) conv=notrunc bs=1 of=./myBase
printf'\xE9\x5B\x01\x00\x00' | dd seek=$((0x1762b1)) conv=notrunc bs=1 of=./myBase
printf'\xC0' | dd seek=$((0x176416)) conv=notrunc bs=1 of=./myBase

啊,为了直观我分成了三段,请不要介意。
同样,macOS下的修改代码:

printf'\xE9\x57\x01\x00\x00\x00' | dd seek=$((0x19b631)) conv=notrunc bs=1 of=/Applications/myBase.app/Contents/MacOS/myBase
printf'\xB0\x01' | dd seek=$((0x19b78d)) conv=notrunc bs=1 of=/Applications/myBase.app/Contents/MacOS/myBase

解释一下代码:printf '\xXX' 是生成16进制的数据,seek是文件的offset,of是输出文件
最终效果:





egaokiss 发表于 2020-12-22 08:19:41

感谢分享,您辛苦了。

不破不立 发表于 2020-12-22 09:21:12

Hopper 是亮点 {:biggrin:}

小七柒 发表于 2020-12-22 10:10:48

半夜发帖。支持支持。

lizooo 发表于 2020-12-22 16:09:16

看完之后虎躯一震茅塞顿开,感谢楼主

天玄 发表于 2020-12-22 21:44:08

大表哥优秀 虽然看不懂 但是我会默默支持 的

a6307a 发表于 2021-3-4 18:03:24

Hopper 是亮点

山海团队 发表于 2023-1-14 23:51:57

macOS是直接在终端输入这两行代码吗,好像没有用
页: [1]
查看完整版本: 两行代码搞定myBase Desktop Ver735 [macOS + Linux]