accessing the contents of video memory

Alexandre Courbot gnurou at gmail.com
Tue Jan 18 02:59:14 EST 2011


On Tue, Jan 18, 2011 at 3:40 PM, Prabhu nath <gprabhunath at gmail.com> wrote:
> If you are working on a desktop machine, then the following idea works.
> Usually, the VGA compatible controller memory will be mapped to the physical
> address space which can be viewed with the help of "lspci -vv" command. Then
> open the device file "/dev/mem" and mmap with the offset equal to the
> physical address of the Graphics card. Here is a small snippet which works
> on my machine
> Now open the device mem as
>           fd = open = ("/dev/mem", O_RDWR)
> and do an mmap as
>           vgamem = mmap (NULL, 0x10000000, PROT_READ | PROT_WRITE,
>                                      MAP_SHARED, fd, 0xd0000000)
> 0x10000000 = 256MB of graphics card memory
> 0xd0000000 = base of the physical address of graphics card memory
>
> vgamem will be the user virtual address which is mapped to the physical
> address of Graphics card memory.
>
> To verify the mapping, write some bit patterns to 256MB of memory starting
> from vgamem.
> If you see distortion on your desktop, then you have written on to your
> graphics card
> memory.

Just gave it a shot, for the fun of it (program attached - needs root
rights). Indeed after running it my screen was stripped with little
black dots, as one could expect. However it also screwed my fonts and
after a few seconds crashed my system. ;) Indeed, the video memory
does not only contain the screen framebuffer, it also hosts other data
related to 3d management, compositing, and probably data structures
that X rely on. But at least this validates your approach to easily
access video memory.

Now all that is needed for Elvis to get the screen contents is to know
the boundaries of the screen's buffer, as well as its format.
Following your idea, he could probably access the memory-mapped
registers of his video card, but this is highly vendor-dependant.
Cannot think of a more generic way though.

Alex.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: vbomb.c
Type: text/x-csrc
Size: 713 bytes
Desc: not available
Url : http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20110118/af9b5920/attachment.bin 


More information about the Kernelnewbies mailing list