情况如下:
我正在通过使用挂钩 ioctl() 系统调用的 LD_PRELOADed 模块来分析程序与驱动程序的交互。我正在使用的系统(嵌入式 Linux 2.6.18 内核)幸运地具有编码到“请求”参数中的数据长度,因此我可以愉快地转储具有正确长度的 ioctl 数据。
然而,很多这些数据都有指向其他结构的指针,我不知道这些数据的长度(毕竟这是我正在调查的内容)。所以我正在扫描数据中的指针,并将数据转储到那个位置。我担心如果指针靠近段边界(我的早期测试似乎表明情况如此),这可能会使我的代码对段错误开放。
所以我想知道在尝试取消引用之前我可以做些什么来先发制人地检查当前进程是否拥有特定的偏移量?这甚至可能吗?
编辑:只是一个更新,因为我忘了提到一些可能非常重要的东西,目标系统是基于 MIPS 的,尽管我也在我的 x86 机器上测试我的模块。