在Jserv的這篇看到retty 這一個程式,可以重導其他program的 stdio (or stdout only ?) 到自己的這一個terminal。
因為前一陣子也有需要作重導program stdio,覺得很有趣。
看了一下retty的code,大概是用ptrace( )這個function,對他process的stack操作。
其中 inject_attach( )這一個function,利用ptrace,暫停 目標process,修改stack,將一段code放到目標process的stack中,讓target process執行這一段code。
要讓target process執行這段code,同時又要能返回原來被ptrace( )中斷的地方,所以整個stack frame也要做起來。
那一段被加入的code,是用assembly寫的,大約是用dup2這個function,複製(導向?) 原來的stdio 到準備好的pipe中。
這個動作(大概就叫做code_injection吧)做好後,就可以恢復target process的執行動作,因為stack frame 被改,ip也被改,所以會去執行injected code。把自己的stdout重導到retty準備好的pipe中。
然後... retty的mainloop就把pipe中的資料印出來到自己的stdout,
真有趣,這樣,被 retty 處理過的code,都不知道自己已經執行過dup2( )這樣的動作。
奇怪的是,這 injected code 是放在 target process的stack中,stack 的segment不是 read/write attribe ? 怎麼可以執行呢 ? 不必用上次 Jserv的這一篇,修改memory attrib嗎 ?
星期一, 8月 21, 2006
訂閱:
張貼留言 (Atom)
網誌存檔
-
▼
2006
(434)
-
▼
8月
(37)
- Online Presentation Website
- Google Maps and Google Earth
- Wiki is not easy..
- Some Writely Format Testing
- GreenPhone
- Build ViewML
- CE BSP Installation & Deploy Image to DOM
- XPE : Use Prebuild Environment to get the Taret's ...
- Blogger icon changed ? and I'm not a blog-spammer ...
- 一些有趣的msn暱稱
- Missing Component : VIA AC97 Audio Control
- Diskpart : console mode disk management in XPE pre...
- 網路芳鄰,連線網路磁碟機 - Console Command :
- retty, Code injection..
- About Pentax S5z
- ha ha 真是有趣... (OnePiece)-423
- learned .. from ....
- WXIII
- Technorati
- Technorati need this
- WDM : Driver's Life
- Blogger 升級!! Beta
- debian - updates-alternatives
- Windows Remote Desktop Client
- IBM 570 touch-pad (red-point) driver
- Debian - pcmcia, cardbus ethernet card
- Some Practices about x86 Linux Assembly Programming
- Pizza - 這次的優惠..
- Install Debian Sarge in IBM 570
- uC/OS II v 2.51 - sample proram setup
- Borland C++ 4.5 Installtion and Setup
- Cannot Search My Blog
- Ruby on Rail - Debian
- Bandwidth of 802.11g usb dangle - 11Mbps ?
- 可以呀,Writely的post to blog...
- msn space 改版了...變成 windows live..
- CE 5.0 platform build cannot be installed in Windo...
-
▼
8月
(37)
沒有留言:
張貼留言