记录

记录

1. trace汇编数量

2. 补系统相关

3. AES魔改点

4. Socket 抓包

5. 获取linker首地址

6. trace分析手段

1 搜索,4字节的直接搜,单字节的搜要注意上下文,找计算生成结果的,不要找赋值的;
2 打印一些关键函数的日志,比如memcpy;
3 traceWrite;
4 SearchData插件;

7.Unidbg典型的methodid问题

解决步骤:
1.看看JNI的上下文,对应的jmethodId是对应在哪个类的哪个方法;
2.抛异常的地方打断点,查看是哪个dvmClass;
3.补全继承关系;

8.获取so基址

static uintptr_t so_base = 0;

int callback(struct dl_phdr_info *info, size_t size, void *data) {
    if (strstr(info->dlpi_name, "libnative-lib.so")) {
        so_base = info->dlpi_addr;
        return 1; // 停止迭代
    }
    return 0;
}

void hook() {
    dl_iterate_phdr(callback, NULL);
    if (!so_base) {
        __android_log_print(6, "sanaTag", "SO not found via dl_iterate_phdr");
        return;
    }

    // 拿到so基址
    __android_log_print(6, "sanaTag", "Success! Base address: 0x%x", so_base);
    *(void **) (so_base + 0x59940) = reinterpret_cast<void *>(reinterpret_cast<long>(myr1));
}

9. 白盒aes

Responses