我在libc库中搜索面向回归编程的小工具。我遇到的难题是类似小工具的偏移量(或相对地址)在两个不同系统(我和同事)的库(同一版本,2.15)中有所不同。
我的系统规格:
OS: Ubuntu 12.10
Processor: Intel i5 M480
Virtual OS: Yes
Libc version: 2.15
同事的系统规范:
OS: Ubuntu 12.04
Processor: Intel Core 2 Duo T6670
Virtual OS: No
Libc version: 2.15
以下小工具
pop ecx ; pop eax ;;
有两个不同的相对地址。我的地址是0xf2c60
,我的同事是[{1}}。
然而这个小工具
0xf2d21
在两个系统上具有相同的相对地址 - mov [eax] ecx ;
。
我有两个问题。
在安装操作系统时是否编译了libc,因此两个库的不同之处因为它们编译的系统不同?或者它们是libc的两个不同版本(我不排除这一点,因为Ubuntu的版本不同 - 如果我听起来很无知,对不起)但是GCC不打算反映版本代码中的微小变化吗?
我已经读过,通过浏览源可以找到小工具的相对地址,并且不需要二进制文件。如何实现这一目标?请不要指向" Hacking Blind"纸。我已经阅读了它并且他们没有显示出实现这一目标的方法,而是展示了一种逐一猜测小工具的方法。这对于示威来说是不可行的。或者,如果第一个问题的答案确实是系统规范的差异,我可以使用一个工具来交叉编译libc吗?