Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Чтение памяти процесса. Добавлено: 17.01.07 00:30  

Автор вопроса:   | Web-сайт: domkratt.com | ICQ: 278109632 
Private Declare Function VirtualProtectEx Lib "kernel32" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flNewProtect As Long, lpflOldProtect As Long) As Long
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Long, ByVal lpBuffer As Any, ByVal nSize As Long, ByVal lpNumberOfBytesWritten As Long) As Long
Private Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long
Private Declare Function CloseHandle Lib "Kernel32.dll" (ByVal Handle As Long) As Long
Private Declare Function VirtualAllocEx Lib "kernel32" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long
Private Const MEM_RESERVE = &H2000&
Private Const PROCESS_QUERY_INFORMATION = 1024
Private Const PROCESS_VM_READ = 16
Private Const PAGE_EXECUTE_READWRITE = &H40&
Private Const PAGE_READWRITE = 4&
Private Const PAGE_EXECUTE = &H10&
Private Const PROCESS_VM_OPERATION = &H8

Public Function DumpProcess(ByVal lPid As Long, ByVal pAddr As Long, ByVal dwSize As Long) As Long
    Dim OldProt As Long
    Dim hProcess As Long
    Dim addr As Long
    Dim ret As Long
    lpAddr = pAddr
    hProcess = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ, 0, lPid)
    ret = VirtualAllocEx(hProcess, VarPtr(lpAddr), dwSize, MEM_RESERVE, PAGE_READWRITE)
    '....
    '....
    '....
    ret = VirtualProtectEx(hProcess, VarPtr(lpAddr), dwSize, PAGE_EXECUTE, VarPtr(OldProt))
    CloseHandle hProcess
End Function


Есть такой код. И он не работает(
Хэндл процесса определяется правильно.
VirtualAllocEx и VirtualProtectEx возвращают 0.
В pAddr передается база образа исполняемого файла читаемого процесса. В dwSize - размер.
Подскажите, пожалуйста, где я недоглядел.

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 JMP



Вопросов: 6
Ответов: 171
 Профиль | | #1 Добавлено: 17.01.07 00:51
Смотрите что вы делаете:
Открыли хэндл к процессу,

дальше в этом процессе вы пытаетесь зарезервировать память(создать новый блок памяти) по тем адресам которые уже заняты процессом) - абсурд то бишь.

вам надо сперва тормознуть (усыпить процесс)
потом разблокировать участок памяти занятый процессом на чтение,
потом в своем процессе создать блок памяти куда вы будете копировать чужой процесс, и только потом ReadProcessMemory и потом вернуть протекшен чужому процессу какие были, и разбудить процесс (точнее его триды) опять.

Ответить

Номер ответа: 2
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #2
Добавлено: 17.01.07 01:29
ага... спасибо. пробую.

Ответить

Номер ответа: 3
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #3 Добавлено: 17.01.07 02:06
А можно конкретно что ты хочешь сделать с процессом? Если прочитать кусок памяти по адресу - так много готовых примеров...

Ответить

Номер ответа: 4
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #4
Добавлено: 17.01.07 02:22
не... мне надо сдампить процесс (регион, секцию или просто куск процесса) на диск.

Ответить

Номер ответа: 5
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #5 Добавлено: 17.01.07 02:41
http://bbs.vbstreets.ru/viewtopic.php?t=23485&sid=020e18dbab7af91affdc74de3ec18255

Ответить

Номер ответа: 6
Автор ответа:
 VerhoLom



Вопросов: 20
Ответов: 285
 Профиль | | #6 Добавлено: 20.01.07 18:19
http://www.wasm.ru/publist.php?list=21
Там скачайте 3 статьи товарища Ms-Rem под названием "Перехват API функций в Windows NT" - это 3 части довольно таки неплохого материала, правда написанного для Дельфи и С, но используются АПИ - значит перевести можно. Методы чтения-записи памяти процесса там рассматриваются.

Ответить

Номер ответа: 7
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #7
Добавлено: 20.01.07 23:11
Статьи MS-REM'а я уже читал когда-то.. Но я уже разобрался, и скоро выйдет бета-версия проги. Всем спасибо. Примеры кода размещу здесь, на сайте. А может и статью накатаю.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам