这是情况:
我正在使用一个装载了LD_PRELOAD模块的程序来分析与驱动程序的交互。幸运的是,我正在处理的系统(嵌入式Linux 2.6.18内核)将数据长度编码到“请求”参数中,因此我可以愉快地使用正确的长度转储ioctl数据。
然而,这些数据中有很多指向其他结构体的指针,我不知道它们的长度(这正是我正在调查的)。因此,我正在扫描指针数据,并在该位置转储数据。但我担心,如果指针靠近段边界,我的代码可能会导致段错误(我的早期测试似乎证明了这一点)。
因此,我想知道是否可以预先检查当前进程是否拥有特定偏移量,然后再尝试进行解引用?这种做法是否可行?
编辑:忘记提到一些非常重要的事情,目标系统是基于MIPS的,尽管我也在我的x86机器上测试我的模块。
我正在使用一个装载了LD_PRELOAD模块的程序来分析与驱动程序的交互。幸运的是,我正在处理的系统(嵌入式Linux 2.6.18内核)将数据长度编码到“请求”参数中,因此我可以愉快地使用正确的长度转储ioctl数据。
然而,这些数据中有很多指向其他结构体的指针,我不知道它们的长度(这正是我正在调查的)。因此,我正在扫描指针数据,并在该位置转储数据。但我担心,如果指针靠近段边界,我的代码可能会导致段错误(我的早期测试似乎证明了这一点)。
因此,我想知道是否可以预先检查当前进程是否拥有特定偏移量,然后再尝试进行解引用?这种做法是否可行?
编辑:忘记提到一些非常重要的事情,目标系统是基于MIPS的,尽管我也在我的x86机器上测试我的模块。