|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Дек 12, 2003 18:26:49 Если кто-нибудь знает или разбирался с тем, как работают эти программы, то подскажите: Я выбираю процесс, открываю его OpenProcess с правами PROCESS_ALL_ACCESS (1F0FFFh) после, для перебора его памяти, использую VirtualQueryEx, но вся тема в том, что при нулевом (да и не только) адресе у меня возвращается 0 (в смысле- 0 байтов данных заполнено), а при ВРОДЕ БЫ тех же действиях у O'Matica всё "OK" (1ch байт с вернымы данными). :sm14: Что надо чтобы работало??? |
|
|
Дата: Дек 12, 2003 21:47:10 Попробуй использовать NtQueryVirtualMemory - с помощью этой функции все можно сделать намного проще. |
|
|
Дата: Дек 13, 2003 08:55:12 На сколько я понимаю: NtQueryVirtualMemory( DWORD hProcess, DWORD lpAddress, DWORD HZ, DWORD lpBuffer, DWORD dwLength, DWORD lpdwLength); Что такое HZ (не reserved, ли), и чем мне поможет NtQuery..., если он вызывается из VirtualQueryEx'а, поправь если ошибаюсь. |
|
|
Дата: Дек 13, 2003 10:35:02 Sem А что говорит GetLastError? |
|
|
Дата: Дек 13, 2003 11:24:45 ERROR_ACCESS вроде (в этом он абсолютно прав). |
|
|
Дата: Дек 13, 2003 11:54:40 Может там какие нибудь права лишние? По моему вполне достаточно: PROCESS_VM_OPERATION+PROCESS_VM_READ+ PROCESS_VM_WRITE+PROCESS_QUERY_INFORMATION По крайней мере в моей программе это работало. А OpenProcess вообще открывает процесс? Если баг не найдешь, то кидай код сюда, будем всем форумом думать. |
|
|
Дата: Дек 13, 2003 12:52:00 То, что OpenProcess врозвращает хендл- 100% (дошел до того, что проверял с помощью GetModuleBaseName из PSAPI), права сначала ставил "VM_READ or VM_WRITE or QUERY_INFORMATION" (извини за корявость не помню названий, проще- 430h). Что до кода, то надо немного подождать (не из дома постюсь). |
|
|
Дата: Дек 13, 2003 19:42:42 · Поправил: Sk. Inc. Sem А ты чего, собственно, пишешь? Если трейнер для игрухи, то там все намного проще :) |
|
|
Дата: Дек 13, 2003 20:19:24 Sem Да, кинь сюда свой код - и посмотрим, что не пашет. |
|
|
Дата: Дек 15, 2003 13:46:57 Sk.Inc.: Не не трейнер, просто прибило написать маленький и МАКСИМАЛЬНО быстый LO'Matic (именно такое название), вот тут и дошли до VirtualQueryEx'а Grenader: Косяк НАЙДЕН! Но после его обнаружения, я оПуПел. В новом .asm просто написав OpenProcess(430h,0,PID) (PID- из taskmgr.exe) и VitrualQueryEx(eax,0,offset lpBuffer,1ch) (ОЧ-ЧЕНЬ ВАЖНАЯ ПОПРАВКА: lpBuffer из .data?), всё заработало. В моей проге lpBuffer определён примерно так: SearchValue Proc local vsyakoeGovno1,...,lpBuffer[1000h],vsakoeGovno2... Здоровый буффер потому, что я его потом использую для считывания страницы памяти ReadProcessMemory(). Вобщем меняю на lpBuffer[1ch]- работает. Выпадаю в осадок. СТЕК ЧТО ЛИ КОНЧИЛСЯ В WIN32 ИЗ-ЗА КАКИХ-ТО 1000h БАЙТОВ. Оказыватся Windows для неиспользованного стека только резервирует страницы, а выделяет только по обращению и VirtualQu... на этом обламывалась. Да, уж. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.044 |