能力值:
( LV2,RANK:10 )
|
-
-
2 楼
我又来了,经过gdb远程调试,原因找到了:
是我查找到的sleep的got表项地址跟最终sleep执行获取的got表项地址不一致,至于为啥不一致,因该是我查找got表项的逻辑问题了,最终解决后我会发出来
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
找到原因了:
因为我代码里出现printf("%x\n", sleep)
编译过程中把sleep解析成全局变量了(这点我没有完全确认,不过根据got表包含全局变量及外部函数的地址这点,应该错不了),而其值是sleep函数的入口地址,于是got表中出现了两项sleep入口地址配置的表项,而我的查询got逻辑是找到第一个匹配项就return了,所以找到的可能是全局变量,修改地址后,printf("%x\n", sleep)的输出是变了,但sleep的真正入口got表项仍是原来的,所以出现了我遇到的问题。
|
|
|