Radare2 不显示整个功能

逆向工程 拆卸 雷达2 职能
2021-07-05 00:04:45

我正在使用radare2,我已经反汇编了函数:sym.loop,它包含一个switch女巫,有4个cases调用不同的函数。在任何函数调用之后,程序退出该loop函数。

这是我的问题:exit在radare中第一次显示后,反汇编代码停止。我看不到函数的其余代码,尽管有跳转指示退出函数后还有更多内容。

我是否必须按下或做任何事情才能显示其余部分还是它是一个错误?

下面是循环函数的代码:

void loop(int a) {
    type[0] = a;
    while (true) {
        switch (type[0]) {
        case 1:
            function1(arg);
            break;
        case 2:
            function2(arg);
            break;
        case 3:
            function3(arg);
            break;
        default:
            printf("Command unrecognized.\n");
        case 4:
            function4();
            break;
        }
    }
}

注意:如果代码中有任何错误,我可能会导致尝试从调试消息或其他任何内容中清除代码......但这个想法是主代码没有错误,它只是不打印的反汇编程序整个功能。并且反汇编代码在 case1 的中断(退出函数)后停止。

(更新:)这是我正在谈论的错误示例(不是上面的代码,而是相同的错误): 函数未显示整个代码。没有函数返回。

不显示返回值。

1个回答

您可能还需要在分析e anal.jmptbl之前启用跳转分析选项,并且您还需要最新的 git 版本的radare2。

/ 2018 由于功能得到改进,现在默认为 true。