[pso] Slideul 39 din cursul 2
Octavian Voicu
octavian.voicu at gmail.com
Mon Mar 8 08:37:10 EET 2010
2010/3/7 Lucian Cojocar <cojocar at gmail.com>
> Chiar dacă ştiu adresa la care este mapat vdsoul procesului dd, tot nu am
> reuşit să-l fac să citească.
>
> Am făcut testul cu dd pe o maşina care mapează în acelaşi loc vdsoul dar
> are activat randomize_va_space -- sau cel puţin, pe maşina respectivă
> /proc/sys/kernel/randomize_va_space e 1 şi vdsoul e mapat mereu în acelaşi
> loc.
>
Pentru a vedea daca vdso-ul e mapat tot timpul in acelasi loc poti rula de
mai multe ori `cat /proc/self/maps | grep vdso' si vedea daca se schimba
adresa. La mine cu randomize_va_space != 0 se schimba.
> Teoretic, dacă funcţionează ce-i mai jos (şi functionează) ar trebui să
> meargă şi testul cu dd pe maşina care mapează vdsoul în acelaşi loc.
>
> Bănuiesc că se leagă de modul în care dd încearcă să citească, a mers
> (oarecum) dacă am dat parametrul conv=noerror la dd.
>
Se pare ca dd crede ca skip-ul esueaza (cu toate ca un strace arata ca
lseek64 nu returneaza nicio eroare si se pozitioneaza unde trebuie).
Eroarea<http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/dd.c#n1635>nu
este fatala si dd continua cu copierea propriu-zisa.
$ sudo sysctl -w kernel.randomize_va_space=0
kernel.randomize_va_space = 0
$ cat /proc/self/maps | grep vdso
7ffff7ffc000-7ffff7ffd000 r-xp 00000000 00:00 0
[vdso]
$ dd if=/proc/self/mem of=linux-gate.so bs=4096 skip=$[0x7ffff7ffc] count=1
dd: `/proc/self/mem': cannot skip to specified offset
1+0 records in
1+0 records out
4096 bytes (4.1 kB) copied, 0.000484768 s, 8.4 MB/s
$ ls -l linux-gate.so
-rw-r--r-- 1 octav octav 4096 2010-03-07 23:59 linux-gate.so
$ file linux-gate.so
linux-gate.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV),
dynamically linked, stripped
Octavian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/pso/attachments/20100308/b35a4b3d/attachment.htm>
More information about the pso
mailing list