首页
社区
课程
招聘
[IDA使用技巧]#162: 我的代码呢?不返回调用的情况
发表于: 2023-12-11 13:48 7555

[IDA使用技巧]#162: 我的代码呢?不返回调用的情况

2023-12-11 13:48
7555

翻译:梦幻的彼岸

原文地址:https://hex-rays.com/blog/igors-tip-of-the-week-162-wheres-my-code-the-case-of-no-return-call/


比方说,你在二进制代码中发现了一个看起来很有希望的字符串,按照交叉引用找到了使用该字符串的函数,然后反编译了一下,想看看该字符串是如何使用的,结果却在伪代码中看不到任何迹象。这是怎么回事?


在这种情况下,设置两个同步的反汇编<->伪代码视图并滚动浏览它们以查找异常之处往往会有所帮助。通常,大多数伪代码行应该映射到一条或多条汇编指令,而大多数汇编指令(可跳过的指令除外,如函数的前导码和尾随码)应映射到伪代码中的某些行。


这里有一个奇怪的例子:伪代码中的单个函数调用不仅映射到调用指令,还映射到其后一系列看似无关的指令:

随后是在伪代码中没有任何映射的指令:

将鼠标悬停在调用上可以提供线索:它被标记为__noreturn(不返回)。


因为在它后面显然还有一些有效代码,所以似乎是误报。从原型中移除 __noreturn 属性(提示:Y快捷键)后,丢失的代码又回来了,指令映射也更规范了:


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 4
支持
分享
最新回复 (1)
雪    币: 2948
活跃值: (30846)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2023-12-12 09:44
1
游客
登录 | 注册 方可回帖
返回
//