![]() |
eXeL@B —› Вопросы новичков —› ReadProcessMemory returns 0 |
Посл.ответ | Сообщение |
|
Создано: 09 июня 2013 16:59 · Личное сообщение · #1 Здравствуйте. Вообщем столкнулся с такой проблемой. пишу тренер для онлайн игры. Раньше работало всё норм. Но после последнего обновления функция ReadProcessMemory не может ничего прочитать. Покапался в гугле, говорят защищённый процесс. Хотя такая программа как CheatEngine читает всё без проблем. Пожалуйста помогите решить данную проблему. прогу писал на masm32. ![]() |
|
Создано: 09 июня 2013 17:09 · Личное сообщение · #2 |
|
Создано: 09 июня 2013 17:22 · Личное сообщение · #3 |
|
Создано: 09 июня 2013 17:24 · Личное сообщение · #4 |
|
Создано: 09 июня 2013 17:36 · Личное сообщение · #5 |
|
Создано: 09 июня 2013 17:42 · Поправил: gsnake · Личное сообщение · #6 .486 option casemap:none .model flat,stdcall include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\user32.inc include \masm32\include\advapi32.inc include \masm32\include\ntdll.inc includelib \masm32\lib\kernel32.lib includelib \masm32\lib\ntdll.lib includelib \masm32\lib\user32.lib includelib \masm32\lib\advapi32.lib EnableDebugPrivilege Proto .data szPriv db "SE_DEBUG_NAME",0 _target db "aces.exe",0 hexaddr dd 00010000h,0 .data? hInstance dd ? processcount dd ? sbuffer db 4 dup (?) ;///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// hd dd ? ;///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// pe PROCESSENTRY32 <> processInfo PROCESS_INFORMATION <> of OFSTRUCT<> ;///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// .code EnableDebugPrivilege proc local hTokenNew:HANDLE local tkpNew:TOKEN_PRIVILEGES invoke GetCurrentProcess mov ecx,eax invoke OpenProcessToken,ecx,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,addr hTokenNew .if eax != 0 invoke LookupPrivilegeValue,0, addr szPriv,addr tkpNew.Privileges.Luid .if eax != 0 mov tkpNew.PrivilegeCount,1 mov tkpNew.Privileges.Attributes,SE_PRIVILEGE_ENABLED invoke AdjustTokenPrivileges,hTokenNew,0,addr tkpNew,0,0,0 .if eax != 0 invoke GetLastError .if eax == ERROR_SUCCESS mov eax,1 .else xor eax,eax .endif .endif .endif push eax invoke CloseHandle,hTokenNew pop eax .endif ret EnableDebugPrivilege endp start: call EnableDebugPrivilege speedsrch proc LOCAL hFile :DWORD LOCAL bRead:DWORD procsrch: xor eax,eax mov processcount,00h invoke GetModuleHandle, 0 mov ebx, eax mov pe.dwSize, sizeof PROCESSENTRY32 invoke CreateToolhelp32Snapshot, TH32CS_SNAPPROCESS, 0 mov esi, eax invoke Process32First, esi, addr pe _next: inc processcount invoke lstrcmp, addr pe.szExeFile, addr _target test eax, eax jz _found cmp processcount,90h je noGWT invoke Process32Next, esi, addr pe jmp _next _found: invoke OpenProcess, PROCESS_VM_READ,NULL,pe.th32ProcessID mov hd,eax invoke ReadProcessMemory, hd,hexaddr,addr sbuffer[0],sizeof sbuffer, NULL invoke MessageBox,NULL,addr sbuffer,addr sbuffer,MB_OK noGWT: invoke ExitProcess, 0 speedsrch endp end start пожалуйста проверьте правильно ли я выставил привилегии. Так как опенпроцесс так и выдаёт ошибку 5 ![]() |
|
Создано: 09 июня 2013 17:46 · Поправил: Vovan666 · Личное сообщение · #7 |
|
Создано: 09 июня 2013 17:54 · Поправил: Модератор · Личное сообщение · #8 Ты бы вопрос чётко сформулировал. Что не можешь открыть процесс-с этого начинать надо было. Ясный красный, если не можешь открыть с нужными правами, то и читать он не будет. Если дело именно в открытии, то сначала отладочную привилегию получи. Если и с ней не работает, видимо, драйвер сидит и фильтрует открытия процессов, разберись, так ли это. А проверить правильность включения отладочной привилегии отлично можно через Process Hacker/Process Explorer/аналогичный софт в свойствах процесса, нежели предложить нам рыться в куче кодеса, который ещё по неизвестной причине на асме. ![]() |
|
Создано: 10 июня 2013 13:56 · Личное сообщение · #9 |
![]() |
eXeL@B —› Вопросы новичков —› ReadProcessMemory returns 0 |