[问题]請問 fedora core的linux對 linux-gate.so.1作了什么修改

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
vladdracula
帖子: 31
注册时间: 2006-11-12 10:41

[问题]請問 fedora core的linux對 linux-gate.so.1作了什么修改

#1

帖子 vladdracula » 2006-12-25 15:43

[root@localhost ~]# gcc -o esp esp.c
[root@localhost ~]# ./esp
程式記憶體區段錯誤
[root@localhost ~]# ldd ./esp
linux-gate.so.1 => (0x009a7000)
libc.so.6 => /lib/libc.so.6 (0x002fc000)
/lib/ld-linux.so.2 (0x002de000)
[root@localhost ~]#
我每次的 llinux-gate.so.1 -> 數值都不同 為何會這樣 FC對這做了什么修改
但ubuntu每次都一樣的呀!
头像
spider5
帖子: 351
注册时间: 2005-12-15 21:52

#2

帖子 spider5 » 2006-12-25 16:27

欢迎繁体区的朋友。
这个问题源于ldd早期的bug,
"linux-gate.so.1"对应的地址就是内核映射的代码,它在系统中其实并不存在,只是ldd自己给出的命名而已。
在以前的版本中,由于没有给这段代码命名,ldd结果的显示会出问题,所以后来的ldd打了补丁。
所不同的是,redhat/FC将它指向了动态栈,而debian将它指向了静态栈
如果你仔细观察的话,在FC中多运行几次ldd,会发现linux-gate.so.1对应的栈地址变化是有规律的。

如上面所述,linux-gate.so.1不应该是你这个问题的原因,你可能需要关心其他的库。
vladdracula
帖子: 31
注册时间: 2006-11-12 10:41

#3

帖子 vladdracula » 2006-12-25 17:15

謝謝樓上的朋友 !
假設我需要準確地在FC or redhat下找到linux-gate.so.1对应的栈地址
大大有什么妙計呀! 又或者有沒有方法修改FC or redhat 令它好像debian那麼樣将它指向了静态栈
因為我最近在研究一些東西 需要用到linux-gate.so.1对应的栈地址 謝謝!
头像
spider5
帖子: 351
注册时间: 2005-12-15 21:52

#4

帖子 spider5 » 2006-12-25 19:28

第一次看见esp.c的时候猜测是不是指寄存器,
现在看来果然是阿 :!:
很遗憾,你提的问题太难了,也许论坛上有高手知道,反正我不知道 :-(
我手上没有FC,只有一台rhel4服务器,我不能动,也许看看内核源码你会有思路

改FC的话,重新编译内核你愿意么,把exec-shield,exec-shield-randomize两个参数调整一下?(如果内核微调工具能做到的话,就不用编译内核了)--btw,也许只改第二个就好,没把握。

另外,试试调用edx来代替你的jmp,可以绕过ascii-shield,找到固定地址。
vladdracula
帖子: 31
注册时间: 2006-11-12 10:41

#5

帖子 vladdracula » 2006-12-25 22:43

>另外,试试调用edx来代替你的jmp,可以绕过ascii-shield,找到固定地址。
如何調用edx 可否給出一些源碼呀 ! 不明白調用edx是什么意思 請明示! thank you very munch
回复