sym.loop
,它包含一个switch
,它有4个cases
调用了不同的功能。在执行任何函数调用之后,程序退出loop
函数。这是我的问题:雷达显示的第一个exit
后,反汇编代码停止。我看不到该函数的其余代码,尽管在退出函数后有跳转指示存在更多内容。一个错误? 以下是循环功能的代码:
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。
评论
嗯,这可能是问题所在,您能帮我启用它吗?
–弗洛林
17年8月16日在13:50
Simpy从雷达外壳内部运行anal.jmptbl = true。进一步了解配置:radare.gitbooks.io/radare2book/content/configuration/intro.html
–巨型甜菜
17年8月17日在5:54
@Megabeets刚获得了最新版本,也将e anal.jmptbl设置为true,但结果是相同的。但是:如果我按pC可以在更多行中可视化代码,则将显示整个功能(可能会有帮助)
–弗洛林
17年8月17日在9:18
为什么该选项不是默认选项?
– joxeankoret
18年6月16日在17:13
评论
您能否分享pdf @ sym.loop的输出?另外,您是否可以共享二进制文件以便我们进行更深入的研究?您是如何编译的?是否打开了任何优化?可以将二进制文件放在某处吗?
问题仍然存在吗?您可以共享二进制文件吗?