우선 wiki 에서 본 결과
vDSOs (virtual dynamically linked shared objects) are a way to export kernel space routines to user space applications, using standard mechanisms forlinking and loading i.e. standard Executable and Linkable Format (ELF) format.[1][2]
It helps to reduce the calling overhead on simple kernel routines, and also can work as a way to select the best system call method on some architectures.
An advantage over other methods is that such exported routines can provide proper DWARF (debug with attributed record format) debugging information.
Implementation generally implies hooks in the dynamic linker to find the vDSOs.
즉, kernel space routines를 user space application으로 export 하기위한 방법이다.
이부분을 공부하게 된 이유는 .. codegate작년 문제 (codegate Prequals 2014)중에 minibomb 문제를 풀면서
다른 블로그글을 보고있는데
처음 보는 영역을 디스어셈 하는것을 볼 수 있었다. 그래서 찾게되었다..
cat /proc /self/maps
좀더 자세한 내용은 linux manual page 내용을 발췌한것이다 참고바란다 .
The "vDSO" (virtual dynamic shared object) is a small shared library
that the kernel automatically maps into the address space of all
user-space applications. Applications usually do not need to concern
themselves with these details as the vDSO is most commonly called by
the C library. This way you can code in the normal way using
standard functions and the C library will take care of using any
functionality that is available via the vDSO.
Why does the vDSO exist at all? There are some system calls the
kernel provides that user-space code ends up using frequently, to the
point that such calls can dominate overall performance. This is due
both to the frequency of the call as well as the context-switch
overhead that results from exiting user space and entering the
kernel.
The rest of this documentation is geared toward the curious and/or C
library writers rather than general developers. If you're trying to
call the vDSO in your own application rather than using the C
library, you're most likely doing it wrong.
원본 페이지 : http://man7.org/linux/man-pages/man7/vdso.7.html
vdso영역을 공부하려하다보니까 자연스럽게 core파일에 대한 내용을 접하게되었다.
좋은 블로그가 있어서 URL을 추가한다.
http://egloos.zum.com/studyfoss/v/5183491
cat /proc/self/maps 라는 명령어에서 사용하는 경로들의 각각의 특징은
'과거의 컴퓨터 공부 > System Hacking' 카테고리의 다른 글
GOT OverWrite,FAKE EBP (0) | 2014.11.30 |
---|---|
Shared Library Hijacking (0) | 2014.08.16 |
GOT OverWrite (0) | 2014.05.16 |
RTL 문서 (0) | 2014.05.08 |
BOF 문서 (0) | 2014.05.07 |