Русский / Russian English / Английский

Сейчас на форуме: sss123 (+6 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Вопросы новичков —› ReadProcessMemory returns 0
Посл.ответ Сообщение

Ранг: 0.2 (гость)
Статус: Участник

Создано: 9 июня 2013 16:59 New!
Цитата · Личное сообщение · #1

Здравствуйте. Вообщем столкнулся с такой проблемой. пишу тренер для онлайн игры. Раньше работало всё норм. Но после последнего обновления функция ReadProcessMemory не может ничего прочитать. Покапался в гугле, говорят защищённый процесс. Хотя такая программа как CheatEngine читает всё без проблем. Пожалуйста помогите решить данную проблему. прогу писал на masm32.

Ранг: 23.1 (новичок)
Статус: Участник

Создано: 9 июня 2013 17:09 New!
Цитата · Личное сообщение · #2

Тут смотрел http://exelab.ru/f/index.php?action=vthread&forum=6&topic=13602 ?

Ранг: 0.2 (гость)
Статус: Участник

Создано: 9 июня 2013 17:22 New!
Цитата · Личное сообщение · #3

да. ответа не нашёл...или не так понял


Ранг: 669.3 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 9 июня 2013 17:24 New!
Цитата · Личное сообщение · #4

gsnake
Отладочные привилегии получали?

Ранг: 403.1 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 9 июня 2013 17:36 New!
Цитата · Личное сообщение · #5

Для начала, GetLastError должен прояснить ситуацию.

Ранг: 0.2 (гость)
Статус: Участник

Создано: 9 июня 2013 17:42 · Поправил: gsnake New!
Цитата · Личное сообщение · #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

Ранг: 617.3 (!)
Статус: Участник

Создано: 9 июня 2013 17:46 · Поправил: Vovan666 New!
Цитата · Личное сообщение · #7

попробуй PROCESS_ALL_ACCESS

или попробуй до ReadProcessMemory выполнить VirtualProtectEx


Ранг: 2006.0 (!!!!)
Статус: Модератор
retired

Создано: 9 июня 2013 17:54 · Поправил: Модератор New!
Цитата · Личное сообщение · #8

Ты бы вопрос чётко сформулировал. Что не можешь открыть процесс-с этого начинать надо было. Ясный красный, если не можешь открыть с нужными правами, то и читать он не будет. Если дело именно в открытии, то сначала отладочную привилегию получи. Если и с ней не работает, видимо, драйвер сидит и фильтрует открытия процессов, разберись, так ли это.
А проверить правильность включения отладочной привилегии отлично можно через Process Hacker/Process Explorer/аналогичный софт в свойствах процесса, нежели предложить нам рыться в куче кодеса, который ещё по неизвестной причине на асме.

Ранг: 85.4 (постоянный)
Статус: Участник

Создано: 10 июня 2013 13:56 New!
Цитата · Личное сообщение · #9

а еще делать ReadProcessMemory из 32-х битного приложения в 64-х битное - моветон
 eXeL@B —› Вопросы новичков —› ReadProcessMemory returns 0

Видеокурс ВЗЛОМ