Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

add vmi_get_va_pages #14

Merged
merged 1 commit into from
May 17, 2018
Merged

add vmi_get_va_pages #14

merged 1 commit into from
May 17, 2018

Conversation

Wenzel
Copy link
Member

@Wenzel Wenzel commented May 8, 2018

Implement vmi_get_va_pages from libvmi_extra.h

  • removed glib_build.py, and integrated the glib functions into the main libvmi CFFI module
  • add get_va_pages in libvmi.py
  • add class PageInfo in libvmi.py

@Wenzel Wenzel force-pushed the va_pages branch 3 times, most recently from 03d5b51 to 69ef2e6 Compare May 8, 2018 21:27
@Wenzel
Copy link
Member Author

Wenzel commented May 8, 2018

Ready for review.
@tklengyel @smaresca

@Wenzel
Copy link
Member Author

Wenzel commented May 8, 2018

            dtb = vmi.get_vcpu_reg(CR3, 0)
            va_pages = vmi.get_va_pages(dtb)
            for page in va_pages:
                print('Page: dtb {} vaddr {} size {}'.format(
                    hex(page.dtb),
                    hex(page.vaddr),
                    hex(page.size)))

Result

Page: dtb 0x0 vaddr 0x76f21000 size 0x1000
Page: dtb 0x0 vaddr 0x76f20000 size 0x1000
Page: dtb 0x0 vaddr 0x76f1d000 size 0x1000
Page: dtb 0x0 vaddr 0x76f1c000 size 0x1000
Page: dtb 0x0 vaddr 0x76f1b000 size 0x1000
Page: dtb 0x0 vaddr 0x76f1a000 size 0x1000
Page: dtb 0x0 vaddr 0x76f19000 size 0x1000
Page: dtb 0x0 vaddr 0x76f18000 size 0x1000
Page: dtb 0x0 vaddr 0x76f17000 size 0x1000
Page: dtb 0x0 vaddr 0x76f16000 size 0x1000
Page: dtb 0x0 vaddr 0x76e10000 size 0x1000
Page: dtb 0x0 vaddr 0x7f000 size 0x1000
Page: dtb 0x0 vaddr 0x7e000 size 0x1000
Page: dtb 0x0 vaddr 0x7d000 size 0x1000
Page: dtb 0x0 vaddr 0x7c000 size 0x1000
Page: dtb 0x0 vaddr 0x7b000 size 0x1000
Page: dtb 0x0 vaddr 0x7a000 size 0x1000
Page: dtb 0x0 vaddr 0x79000 size 0x1000
Page: dtb 0x0 vaddr 0x78000 size 0x1000
Page: dtb 0x0 vaddr 0x77000 size 0x1000
Page: dtb 0x0 vaddr 0x76000 size 0x1000
Page: dtb 0x0 vaddr 0x75000 size 0x1000
Page: dtb 0x0 vaddr 0x74000 size 0x1000

Why the dtb field is always empty ??
I need to check if it's the same with a C test file.

@Wenzel Wenzel mentioned this pull request May 8, 2018
5 tasks
@smaresca
Copy link
Member

smaresca commented May 8, 2018

I would agree that result seems incorrect

@Wenzel
Copy link
Member Author

Wenzel commented May 14, 2018

Can i merge this one ?

@Wenzel
Copy link
Member Author

Wenzel commented May 14, 2018

@smaresca it seems there is an issue in Libvmi vmi_get_va_pages:

    /* initialize the libvmi library */
    if (VMI_FAILURE == vmi_init_complete(&vmi, name, VMI_INIT_DOMAINNAME, NULL, VMI_CONFIG_GLOBAL_FILE_ENTRY, NULL, NULL)) {
        printf("Failed to init LibVMI library.\n");
        return 1;
    }

    printf("LibVMI init succeeded!\n");

    uint64_t dtb;
    vmi_get_vcpureg(vmi, &dtb, CR3, 0);
    GSList *va_pages = vmi_get_va_pages(vmi, dtb);
    GSList *loop = va_pages;

    while (loop)
    {
        page_info_t *page = loop->data;
        printf("vaddr: %p dtb: %p\n", page->vaddr, page->dtb);
        loop = loop->next;
    }
    return 0;
vaddr: 0x42000 dtb: (nil)
vaddr: 0x41000 dtb: (nil)
vaddr: 0x40000 dtb: (nil)
vaddr: 0x32000 dtb: (nil)
vaddr: 0x31000 dtb: (nil)
vaddr: 0x30000 dtb: (nil)
vaddr: 0x2f000 dtb: (nil)
vaddr: 0x2e000 dtb: (nil)
vaddr: 0x2d000 dtb: (nil)
vaddr: 0x2c000 dtb: (nil)
vaddr: 0x2b000 dtb: (nil)
vaddr: 0x2a000 dtb: (nil)
vaddr: 0x29000 dtb: (nil)
vaddr: 0x28000 dtb: (nil)
vaddr: 0x27000 dtb: (nil)
vaddr: 0x26000 dtb: (nil)
vaddr: 0x25000 dtb: (nil)
vaddr: 0x24000 dtb: (nil)
vaddr: 0x23000 dtb: (nil)
vaddr: 0x22000 dtb: (nil)
vaddr: 0x21000 dtb: (nil)
vaddr: 0x20000 dtb: (nil)
vaddr: 0x1f000 dtb: (nil)
vaddr: 0x1e000 dtb: (nil)
vaddr: 0x1d000 dtb: (nil)
vaddr: 0x1c000 dtb: (nil)
vaddr: 0x1b000 dtb: (nil)
vaddr: 0x1a000 dtb: (nil)
vaddr: 0x19000 dtb: (nil)
vaddr: 0x18000 dtb: (nil)
vaddr: 0x17000 dtb: (nil)
vaddr: 0x16000 dtb: (nil)
vaddr: 0x15000 dtb: (nil)
vaddr: 0x14000 dtb: (nil)
vaddr: 0x13000 dtb: (nil)
vaddr: 0x12000 dtb: (nil)
vaddr: 0x11000 dtb: (nil)
vaddr: 0x10000 dtb: (nil)

@Wenzel
Copy link
Member Author

Wenzel commented May 14, 2018

@smaresca i opened an issue on libvmi about this empty dtb field, this is not related to libvmi/python.
this PR is ready for review and approval :)

@Wenzel
Copy link
Member Author

Wenzel commented May 17, 2018

I will merge this PR as it contains changes that I need, and the changes are quite straightforward.

@Wenzel Wenzel merged commit b72d02c into master May 17, 2018
@Wenzel Wenzel deleted the va_pages branch May 17, 2018 09:04
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants