![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| александр1 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 26.10.2009 Репутация: нет Всего: нет |
здравствуйте! хотелось бы узнать с помощью какой утилиты можно снать дамп памяти конкретного системного процесса, или как это реализовать самому программно (с помощью функции MiniDumpWriteDump пробовал, на мобайле не катит)
|
|||
|
||||
| smoke_man |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 25.1.2007 Где: Рязань Репутация: 5 Всего: 17 |
Читает 20 байт памяти текущего процесса:
Добавлено через 1 минуту и 36 секунд на WM не проверял - но попробывать можно. -------------------- 0x2b|~0x2b |
|||
|
||||
| DrHex |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 2.5.2009 Репутация: нет Всего: нет |
Надо повышать своему процессу привелегии.... Лучше всего через ring-0 --------------------
google.com и это все. |
|||
|
||||
| александр1 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 26.10.2009 Репутация: нет Всего: нет |
smoke_man спасибо, именно то что нужно было, 1 вопрос только: как получить начальный адресс процесса
у вас он сразу задан int start = 0x00411172; |
|||
|
||||
| smoke_man |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 25.1.2007 Где: Рязань Репутация: 5 Всего: 17 |
Для текущего процесса можно так:
-------------------- 0x2b|~0x2b |
|||
|
||||
| bra1ny |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
Из PEB можно узнать.
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
| александр1 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 26.10.2009 Репутация: нет Всего: нет |
немножко несовсем понял можно поподробней?)) а разве нет каких нибудь апи функции для этого?
int start; __asm{ call blabla blabla: mov eax, [esp] mov start, eax sub esp, 4 } это вариант не работает Это сообщение отредактировал(а) александр1 - 29.10.2009, 22:26 |
|||
|
||||
| smoke_man |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 25.1.2007 Где: Рязань Репутация: 5 Всего: 17 |
ты его на wm6 использовал?
-------------------- 0x2b|~0x2b |
|||
|
||||
| александр1 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 26.10.2009 Репутация: нет Всего: нет |
на эмуляторе проверял
нашел на одном сайте такой способ: I. Открываем процесс // Открываем процесс (DWORD dwProcessId - идентификатор процесса) HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessId); II. Получаем HMODULE процесса Для дальнейшей работы необходим этот идентификатор. Для Своего процесса его можно легко получить с помощью GetModuleHandle(NULL). Как показывает практика он и для других процессов такой же, даже более того он похоже всегда равен 0x00400000, но для надежности следует его получать правильно. А правильно его можно получить с помощью одного выкрутаса // получаем HMODULE HMODULE hMod = NULL; HANDLE hThread = CreateRemoteThread(hProc, NULL, 0, (LPTHREAD_START_ROUTINE)GetModuleHandle, NULL, 0, NULL); WaitForSingleObject(hThread, INFINITE); GetExitCodeThread(hThread, (LPDWORD)&hMod); CloseHandle(hThread); Здесь в другом процессе создается поток который предстовляет собой апишную функцию GetModuleHandle, к счастью параметры его совпадают с параметрами LPTHREAD_START_ROUTINE а адреса таких функций во всех процессах находятся по одним и тем-же адресам, так что вызов её произойдет без особых проблем. III. Читаем память Здесь уже может быть куча вариатнов работы. Самое простое воспользоваться функцией из библиотеки PSAPI - GetModuleInformation. Правда для этого в VC 6.0 нужнор последнее SDK или грузить функцию напрямую из psapi.dll. Как с этим обстоят дела в Делфи - незнаю. Вот пример - // Получаем стартовый адрес и размер MODULEINFO modinfo; GetModuleInformation(hProc, // handle to process hMod, // handle to module &modinfo, // information buffer sizeof(MODULEINFO) // size of buffer ); // Создаем буфер и читаем туда =) PBYTE pBuffer = new BYTE[modinfo.SizeOfImage]; ReadProcessMemory(hProc, modinfo.lpBaseOfDll, pBuffer, modinfo.SizeOfImage, &dwReaded); Но хоть убей что не делаю, функцию CreateRemoteThread не распознает компилятор Oo |
|||
|
||||
| smoke_man |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 25.1.2007 Где: Рязань Репутация: 5 Всего: 17 |
Ну на wm6 этот код работать конечно не будет - но можно сделать по аналогии - разница в том что у тебя WM крутится под арм-контроллером. У него несколько другая архитектура и ассемблер тоже. А насчет CreateRemoteThread нужно посмотреть в sdk на wm6 - поддерживается она платформой или нет. Насчет PEB тоже можно посмотреть в sdk.
-------------------- 0x2b|~0x2b |
|||
|
||||
| александр1 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 26.10.2009 Репутация: нет Всего: нет |
||||
|
||||
| smoke_man |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 25.1.2007 Где: Рязань Репутация: 5 Всего: 17 |
ты какую среду используешь для WM6? Кстати, PEB тоже не попользуешь.
-------------------- 0x2b|~0x2b |
|||
|
||||
| александр1 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 26.10.2009 Репутация: нет Всего: нет |
Visual Studio 2008
|
|||
|
||||
| smoke_man |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 25.1.2007 Где: Рязань Репутация: 5 Всего: 17 |
Windows Mobile 6 SDK установлен?
-------------------- 0x2b|~0x2b |
|||
|
||||
| александр1 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 26.10.2009 Репутация: нет Всего: нет |
да, установлен
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |