+ Reply to Thread
Results 1 to 8 of 8

Thread: Дампер процесса

  1. #1

    Default Дампер процесса

    Здравствуйте уважаемые форумчане. В целях самообразования пытаюсь написать дампер процессов ,с помощью VirtualQueryEx и ReadProcessMemory. Вроде бы всё сделал, проверил на собственной программе , всё прекрасно работает, но попытался натравить её на целевую программу, мой дампер зацикливается, посмотрел в отладчике происходит это из-за того что VirtualQueryEx не заполняет структуру MEMORY BASIC INFORMATION, и дампер не может сдвинутся дальше, это зацикливание происходит на секции с заголовками и я не могу понять почему так происходит. Ниже прикреплю проект , если не обходимо, заранее спасибо
    Attached Files

  2. Пользователь сказал cпасибо:
    Dark Koder (22-06-2014)
  3. #2
    JKornev's Avatar

    Default Re: Дампер процесса

    Наверно потому что в VirtualQueryEx кладётся дескриптор процесса без соответствующих прав:
    The handle must have been opened with the PROCESS_QUERY_INFORMATION access right, which enables using the handle to read information from the process object.
    High tech, low life

  4. Пользователь сказал cпасибо:
    root (29-06-2014)
  5. #3

    Default Re: Дампер процесса

    Всё спасибо , разобрался ) Проблема была в том что в качестве целевой платформы была выбранна x64

  6. Пользователь сказал cпасибо:
    root (29-06-2014)
  7. #4

    Default Re: Дампер процесса

    Прошу прощения . У меня возник еще один вопрос, как рассчитать смещение EntryPoint в файле , т.е RVA адрес в хэдере взять можно но он не соответствует тому что в файле, по нему в файле данные идут. Где то находил формулу Offset = RVA - VirtualAddress+PointerToRawData . Тогда виртуальный адрес чего необходимо взять , и поле PointerToRawData вроде только у секций есть. Или я не так понимаю?

  8. #5
    ximera's Avatar

    Default Re: Дампер процесса

    Code:
    IMAGE_OPTIONAL_HEADER->AddressOfEntryPoint;
    вроде так.
    Чтобы избегать ошибок, надо набираться опыта; чтобы набираться опыта, надо делать ошибки. © Лоренс Питер

    Неизбежное прими достойно. © Сенека Луций Анней

    Господи... храни сумасшедших. © Сумасшедший Фрэнки

  9. #6

    Default Re: Дампер процесса

    1. Взять AddressOfEntryPoint
    2. Найти секцию в которую входит этот адрес - AddressOfEntryPoint >= Section virtual address && AddressOfEntryPoint < Section virtual address + Section virtual size
    3. Отнять от AddressOfEntryPoint базу секции
    4. Прибавить PointerToRawData секции
    5. ???
    6. PROFIT

    Upd: Можно так же воспользоваться функцией ImageRvaToVa. Она делает тоже самое в общем-то.
    Last edited by DarthTon; 01-07-2014 at 13:30.

  10. 3 пользователя(ей) сказали cпасибо:
    Dark Koder (03-07-2014) Shizoid (02-07-2014) ximera (03-07-2014)
  11. #7

    Default Re: Дампер процесса

    DarthTon спасибо большое , именно то что нужно было !!

  12. #8
    500mhz's Avatar

    Default Re: Дампер процесса

    ImageBase + EntryPoint = Точка входа в запущенном файле (в памяти соответственно)

  13. 2 пользователя(ей) сказали cпасибо:
    Dark Koder (03-07-2014) ximera (03-07-2014)
+ Reply to Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
All times are GMT. The time now is 01:29
vBulletin® Copyright ©2000 - 2018
www.reverse4you.org