IDA阅读理解

本文介绍了IDA在Windows和Linux下的配置存储位置,以及bss节的作用。还探讨了函数导出序数在Windows DLL中的应用,栈帧的概念,以及几种调用约定的差异。此外,分享了IDA的搜索功能快捷键以及如何恢复变量的默认名称。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IDA会创建注册表项HKEY_CURRENT_USER\Software\Hex-Rays\IDA
许多配置都保存在这个注册表项内,打开过的历史记录也存在了这里
Linux下是存储在一个二进制文件@HOME/.idapro/ida.cfg中

bss节由编译器创建,用于保存程序的所有未初始化的静态变量。既然没有为这些变量指定初始值,那么,就没有必要在程序的文件镜像中为它们分配空间;只需在程序的一个头文件中注明它的大小。当程序执行时,加载器会为其分配所需的空间,并将整个数据块的初始值设为0。

共享库可能会使用导出序数,以方便用户通过序数而非名称访问函数。使用序数可以加快地址查询速度,并允许程序员隐藏函数的名称。Windows DLL即使用导出序数。

栈帧(stack frame)就是这样一种低级概念。栈帧是在程序的运行时栈中分配的内存块,专门用于特定的函数调用。

调用约定
cdecl 参数从右往左入栈,由调用者平衡栈
stdcall 参数从右往左入栈,由被调用者平衡栈
另一种f开头的调用,前两个参数直接传给寄存器,后面的参数入栈,由调用者平衡栈
比如c#调用c++的库,使用cdecl的调用约定,那就是告诉编译器,你的清理工作是交给了c#的gc收集器来做了

alt+t 搜索字符串
ctrl+t 继续前一搜索字符串
alt+b 搜索二进制
ctrl+b 继续前一搜索二进制

如果你希望恢复某个变量的默认名称,打开更名对话框,在输入框中输入一个空白名称,IDA将为你生成默认的名称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值