Dtrace 를 이용하여 솔라리스 버전 속이기
그러므로 결국 저는 제 시간을 낭비한 걸까요? 아닙니다! 'dtrace' 가 저를 구원해 주었습니다. 필자는 dtrace 스크립트를 이용하였습니다.
1.실행 파일을 'fubar' 라고 가정해 봅시다. fubar 가 어떻게 솔라리스 버전을 가져오는지를 살펴 봅시다. 결과를 통해서 uname() 시스템 콜임을 알았습니다.
$ truss ./fubar 2>&1 | grep uname uname(0xFFBFF898) = 1
2.'fubar' 가 기대하고 있는 솔라리스 버전을 살펴 봅시다.
$ strings fubar | grep 'SunOS '
SunOS 5.5.1
SunOS 5.6
SunOS 5.7
SunOS 5.8
SunOS 5.7 Generic_106541-05 sun4u
필자가 이것을 이전에 알았다면 아마 솔라리스8 마이그레이션 지원 환경에 설치하였을 것입니다.
3.아래가 'fubar' 를 속이기 위한 dtrace 스크립트 입니다. 'fubar' 는 오직 "SunOS" 와 "5.5.1" 만을 신경 씁니다. 그러므로 솔라리스가 1986년도에 8086에서 돌아가는 것이라도 상관 없습니다.
$ cat unameSol8.d
#!/usr/sbin/dtrace -s
#pragma D option destructive
syscall::uname:entry
/execname == "fubar"/
{
self->addr = arg0;
}
syscall::uname:return
/execname == "fubar"/
{
copyoutstr("SunOS", self->addr, 257);
copyoutstr("PowerPC", self->addr+257, 257);
copyoutstr("5.5.1", self->addr+(257*2), 257);
copyoutstr("gate:1996-12-01", self->addr+(257*3), 257);
copyoutstr("PPC", self->addr+(257*4), 257);
}
필자:
Katsumi Inoue |
이 글의 영문 원본은
Spoofing Solaris version using dtrace
에서 보실 수 있습니다.
'유닉스' 카테고리의 다른 글
솔라리스 Custom Jumpstart Install-Server 구축방법 (0) | 2010.01.19 |
---|---|
솔라리스에서 iso image 생성 (0) | 2010.01.12 |
Solaris System Accounting (0) | 2009.03.19 |
Unable to install patch. Not enough space in /var/run to copy overlay objects. (0) | 2009.03.03 |
Linux, bonding. (0) | 2009.02.13 |