Skip to content

对于PC QQ 9.7.25.29417的解密 #13

@h4ckm310n

Description

@h4ckm310n

之前9.7.23.29368的时候,用pcqq_get_key.py和pcqq_rekey_to_none.cpp是能正常解密的,更新到9.7.25.29417之后就不行了。
用x64dbg来手动hook,发现获取key的方式还是一样的,因此我又尝试着改动pcqq_get_key.py。

根本问题在于找不到name_function的十六进制特征了,我不确定这个对应的是哪个函数。不过key_function仍然可以找到。

name_function实际上的用途就是从它的第一个参数中得到数据库文件的路径,并进而判断是否是Msg3.0.db。而在我前面hook的过程中也发现,实际上key_function的第一个参数也是数据库的路径,我不确定这是否是9.7.23.29368之后才有的更新,还是原本就是这样。

总之,修改方法就很简单了,把name_function相关的代码都去掉,用key_function的第一个参数来获取数据库路径:

Interceptor.attach(key_function, {
    onEnter: function (args, state) {
        var ebp = this.context.ebp;
        console.log("[-] sqlite3_key called");
        //var dbName = funcName(args[0], NULL).readUtf8String();
        var args0 = ebp.add(0x08).readPointer();
        var dbName = args0.readCString();
......

pcqq_rekey_to_none.cpp这里的问题是找不到open函数了。但毕竟这里解密不需要hook QQ本身,只是需要加载KernelUtil.dll而已,于是我直接找了一个9.7.23.29368版本的KernelUtil.dll,改一下文件名放在Bin下面,改成加载这个旧版的dll而不是新版的,就能正常解密了。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions