Сейчас на форуме: asfa, Rio, _MBK_, Adler (+9 невидимых)

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

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

Создано: 09 июня 2013 16:59
· Личное сообщение · #1

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



Ранг: 23.1 (новичок), 3thx
Активность: 0.010
Статус: Участник

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

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



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

Создано: 09 июня 2013 17:22
· Личное сообщение · #3

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




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 09 июня 2013 17:24
· Личное сообщение · #4

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

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 09 июня 2013 17:36
· Личное сообщение · #5

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



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

Создано: 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



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

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

попробуй PROCESS_ALL_ACCESS

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




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

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

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



Ранг: 85.4 (постоянный), 51thx
Активность: 0.090
Статус: Участник

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

а еще делать ReadProcessMemory из 32-х битного приложения в 64-х битное - моветон


 eXeL@B —› Вопросы новичков —› ReadProcessMemory returns 0
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати