Сейчас на форуме: Rio (+5 невидимых)

 eXeL@B —› Вопросы новичков —› Доступ к памяти war3
Посл.ответ Сообщение

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

Создано: 29 мая 2008 16:45
· Личное сообщение · #1

Всем привет!
я пробовал (из с#) получить доступ к памяти процесса игры WarCraft3, но у меня ничего не получилось, пишет доступ запрещен, я даже не могу получить список использованных dll процессом
не могу получить заголовок процесса с помощью winapi функции kernel32.dll - OpenProccess()

Кто-нибудь может что посоветовать?



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

Создано: 30 мая 2008 10:57
· Личное сообщение · #2

Совет: приведи пример своего кода



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

Создано: 31 мая 2008 00:59
· Личное сообщение · #3

.....
Process[] wc3 = Process.GetProcessesByName("war3");
int m_hProcess = OpenProcess(0x001F0FFF, false, wc3[0].Id);
.....
.....
[DllImport("kernel32")]
static extern int OpenProcess(uint dwDesiredAccess, bool bInheritHandle, int dwProcessId);

в m_hProcess должен быть записан хэдр процесса
с блокнотом и остальными программами получается, а вот с вариком нет
есть программы, которые, я думаю, могут получать доступ (вот ссылка _http://www.pingme.ru/namespoofer.zip, эта программка может поменять ник в игре)



Ранг: 107.5 (ветеран)
Активность: 0.150
Статус: Участник

Создано: 31 мая 2008 11:59
· Личное сообщение · #4

Xao пишет:
Кто-нибудь может что посоветовать?

Запускай war через свою прогу CreateProcess

-----
Md5 fcbb6c9c9a5029b24d70f2d67c7cca74




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

Создано: 31 мая 2008 16:08
· Личное сообщение · #5

да это помогло, раньше пробовал не получалось, а щас получилось
но интересно, а как прочитать память, не создавая процесс

Stack
а ты делал что-нибудь подобное?
может дашь какие-нить советы по управлению памятью программы



Ранг: 107.5 (ветеран)
Активность: 0.150
Статус: Участник

Создано: 31 мая 2008 17:15 · Поправил: Stack
· Личное сообщение · #6

Xao пишет:
а ты делал что-нибудь подобное?

Пытался трейнер сделать. Если что можешь погуглить на тему WriteProcessMemory и ReadProcessMemory.

Xao пишет:
но интересно, а как прочитать память, не создавая процесс

Ну еще GetWindowThreadProcessId+OpenProcess(PROCESS_ALL_ACCESS,False,id процесса который ты получил при помощи первой функции);

Ну еще можешь снимок процессов создать и сравнить с каждым если твой то опять openProcess

Вот помойму ошибка Xao пишет:
Process.GetProcessesByName("war3")
- может war3.exe.

-----
Md5 fcbb6c9c9a5029b24d70f2d67c7cca74




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

Создано: 01 июня 2008 23:28 · Поправил: Xao
· Личное сообщение · #7

Xao пишет:
Process[] wc3 = Process.GetProcessesByName("war3");
int m_hProcess = OpenProcess(0x001F0FFF, false, wc3[0].Id);


это правильно, он выдает мне такой же ИД процесса (wc3[0].Id), какой и при CreateProcess,
я тут нашел, что надо получить token для привелегий (_http://support.microsoft.com/?scid=kb;en-us;131065), только потом можно использовать OpenProcess

Ну доступ к памяти получил но не могу найти где варик подгружает скрипты из системных mpq архивов, не знаю даже с чего начать искать


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

const uint NORMAL_PRIORITY_CLASS = 0x0020;

bool retValue;
string Application = @"D:\Игры\Warcraft III\war3.exe";
string CommandLine = @"C:\boot.ini";
PROCESS_INFORMATION pInfo = new PROCESS_INFORMATION();
STARTUPINFO sInfo = new STARTUPINFO();
SECURITY_ATTRIBUTES pSec = new SECURITY_ATTRIBUTES();
SECURITY_ATTRIBUTES tSec = new SECURITY_ATTRIBUTES();
pSec.nLength = Marshal.SizeOf(pSec);
tSec.nLength = Marshal.SizeOf(tSec);

sInfo.dwFlags = 0x00000001; //использование wShowWindow
sInfo.wShowWindow = 6; //режим окна - minimized

retValue = CreateProcess(Application, CommandLine,
ref pSec, ref tSec, false, NORMAL_PRIORITY_CLASS,
IntPtr.Zero, null, ref sInfo, out pInfo);


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


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