Re: [Q] source code of connect system call
いいじまです。
Linux の実機がないので未確認のまま書いてますが…
> connect のソースを読んでみたいなーとか考えて、libcのソースを get
> してきました (glibc_2.2.5.orig.tar.gz)。が、展開して探してみても
> connectがどこにあるのか探し当てる事は出来ませんでした。connectは
> system callだから、カーネルなのかしらんと、カーネルソースを取得
> してきたのですが、
本題は解決の方向に向かっているとして、問題部分はまず libc にあるはずです。
x86 Linux の場合、アセンブラレベルでのシステムコールの呼び出しには、
レジスタに値をセットして int 0xNN 命令を使うと記憶しています。
バッファ・オーバーフローの exploit code ではこの直接呼び出しが一般的です。
ところがこれは C 言語からは直接には関数呼び出しとして扱えませんので
(インラインアセンブラという方法はありますが)、そのための wrapper が
必要です。そして、wrapper を提供するのは libc です。
ただ、libc を読んでも、もしかしたら connect 関数はアセンブラで書かれて
いて、純粋に int 0xNN への wrapper にしかなっていない、という可能性も
あります。
#アセンブラソースも grep しました?>>柏崎さん
で、それを確認したら今度はカーネルソースをあたる、と。
========================================================================
飯嶋 浩光 / でるもんた・いいじま http://www.ht.sakura.ne.jp/~delmonta/
IIJIMA Hiromitsu, aka Delmonta mailto:delmonta@ht.sakura.ne.jp
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735