Xiong。
2022-Jan-07 02:29 UTC
回复: Failed in using LD_PRELOAD to hook mmap system call in qemu(through libvirt)
On Thu, Jan 06, 2022 at 07:44:25PM +0800, Xiong? wrote: > Dear sir: > I want to hook mmap system call in qemu, and I use > libvirt to passthrough the environment argument like this: > <qemu:commandline> > <qemu:env name='LD_PRELOAD' value='/glibcHookMMAP.so'/> > </qemu:commandline> > But it failed. I can hardly find out what is the matter! > The log in libvirt like this:ERROR: ld.so: object > '/glibcHookMMAP.so' from LD_PRELOAD cannot be preloaded > (cannot open shared object file): ignored. Firstly, > I think it's the problem of authority. But the file > glibcHookMMAP.so has been done with command `chmod 777`. > My environment is as follows: Ubuntu 18.04.2 Linux > 5.4.0-92 libvirt 4.0.0 qemu 2.11.1 On Thu, Jan 06, 2022 at 09:47:25PM +0800, Daniel P. Berrang?? wrote: > Aside from normal file permissions, the other likely problem on Ubuntu > will be AppArmor policy. It likely won't allow QEMU to load files from > the / directory - if you put your .so in /usr/local/lib it might > work. On Thu, Jan 07, 2022 at 09:27:25AM +0800, Xiong? wrote: > I have a try, but it does not work and makes the same warning: > ld.so: object '/usr/local/lib/glibcHookMMAP.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored. > However, I use qemu command directly and it works. Command is like this: > sudo LD_PRELOAD=/usr/local/lib/glibcHookMMAP.so qemu-system-x86_64 -enable-kvm ...(other args). > After that, I get print information with my hook program. And I think the problem is in passing the environment args in libvirt. Sorry, I find out what's the matter. The AppArmor policy limits the libvirt, and modifing configuration works. Thank you for your advise! -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://listman.redhat.com/archives/libvirt-users/attachments/20220107/a981b7b8/attachment.htm>