Перейти к содержанию

[CS2D] Запись в переменную стороннего процесса.


Рекомендуемые сообщения

Здравствуйте! Сегодня столкнулся с проблемой, прочитал память процесса, значение на экран выводится, а вот изменятся не хочет, перелазил все по этой теме, но мне ничего из этого не помогло. Я буду рад любой помощи!

 

Вот мой код:

Спойлер

from ctypes import *
import win32process
import win32gui
import ctypes

def ReadProcessMemory(self, hProcess, lpBaseAddress):

try:
lpBaseAddress = lpBaseAddress
ReadBuffer = ctypes.c_float()
lpBuffer = ctypes.byref(ReadBuffer)
nSize = ctypes.sizeof(ReadBuffer)
lpNumberOfBytesRead = ctypes.c_ulong(0)

ctypes.windll.kernel32.ReadProcessMemory(
hProcess,
lpBaseAddress,
lpBuffer,
nSize,
lpNumberOfBytesRead)
return ReadBuffer.value
except (BufferError, ValueError, TypeError):
self.CloseHandle(hProcess)
e = 'Handle Closed, Error', hProcess, self.GetLastError()
return e

#Объявление переменных
WriteProcessMemory = windll.kernel32.WriteProcessMemory #Запись
OpenProcess = windll.kernel32.OpenProcess #Открыть процесс
ReadProcessMemory1 = windll.kernel32.ReadProcessMemory #Чтение процесса

PROCESS_ALL_ACCESS = 0x1F0FFF
AdressPlayer = 0x050278D4
buffer = c_float(353.9980164)
bufferSize = (1000)
bytesread = c_char()

HWND = win32gui.FindWindow(None, "Unreal Software's CS2D") #Найти процесс с указанным именем окна
GameIdProcess = win32process.GetWindowThreadProcessId(HWND) #PID процесса игры
HandleProcess = OpenProcess(PROCESS_ALL_ACCESS, False, GameIdProcess[1]) #Открыть хендл процесса

 = WriteProcessMemory(HandleProcess, AdressPlayer, buffer, bufferSize, 0) #Записать значение
ProcessRead = ReadProcessMemory(HandleProcess, HandleProcess, AdressPlayer) #Чтение памяти процесса

print('Player address: ', proseccadress)
if Result == 1:
print('Status: ''Process write!')
else:
print('Status: ''Falied')
print('Number error:', GetLastError())

 

Вывод:

 

Player address: 947.6382446289062
Status: Falied
Number error: 299

 

Изменено пользователем imaginary
Длинный код не под спойлером
Ссылка на комментарий
Поделиться на другие сайты

Я конечно отвечу, хотя и тема не там, попробуй bufferSize установить адекватный, например float обычно 4 байта. И нужно передавать указатели.
2046754110_.png.c758e700133d7108d9d5d3db8a5f8c54.png

Тема передвинута в правильный раздел

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, PanCacke сказал:

Здравствуйте! Сегодня столкнулся с проблемой, прочитал память процесса, значение на экран выводится, а вот изменятся не хочет, перелазил все по этой теме, но мне ничего из этого не помогло. Я буду рад любой помощи!

 

попробуй передать во WriteProcessMemory все 5 аргументов(кажется на некоторых версиях винды из-за этого проблемы бывают). Также ты неправильный размер данных передаёшь, попробуй делать какой-нибудь sizeof().
А можно и я вопрос задам?? Почему такой язык программирования выбран?

 

26 минут назад, imaginary сказал:

И нужно передавать указатели

в подобных языках нужно только с 5 аргументом изворачиваться, но это не точно.

Изменено пользователем youneuoy
  • Смешно 1
Ссылка на комментарий
Поделиться на другие сайты

Что? Разыменования чего? 0 это тоже самое что NULL в C++, ошибка 299 partial copy error  означает что часть памяти не получилось прочитать, или записать, такое может быть при нарушении прав доступа, а вот тут - указания размера буфера огромного, оно пытается записать в память у которой нету прав на запись, или в не выделенную.

Ссылка на комментарий
Поделиться на другие сайты

3 минуты назад, imaginary сказал:

Что? Разыменования чего? 0 это тоже самое что NULL в C++, ошибка 299 partial copy error  означает что часть памяти не получилось прочитать, или записать

угу, я погуглил что это такое и написал про ноль на всякий случай. У меня были ошибки с этой(или другой подобной, не помню) функцией на win xp, там нуля быть не должно.

  

4 минуты назад, imaginary сказал:

а вот тут - указания размера буфера огромного, оно пытается записать в память у которой нету прав на запись, или в не выделенную.

ага

Изменено пользователем youneuoy
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.