Devil9313 Опубликовано 25 ноября, 2015 Поделиться Опубликовано 25 ноября, 2015 (изменено) Доброго времени суток ребят у меня возникла проблема мне нужно изменить значение по адресу который находится в модуле game.dllTrainer не меняет значение по адресу в этом модуле помогите решить проблему если вам не трудно Изменено 25 ноября, 2015 пользователем Devil9313 Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 25 ноября, 2015 Поделиться Опубликовано 25 ноября, 2015 Название и версию игры в студию, а так же код трейнера, которым меняешь значение, или кусок кода трейнера, если он твой. А если трейнер чужой - рекомендую обратиться к автору трейнера, так как мы заранее не можем знать, как у него написан трейнер. Ссылка на комментарий Поделиться на другие сайты Поделиться
Devil9313 Опубликовано 25 ноября, 2015 Автор Поделиться Опубликовано 25 ноября, 2015 Вот кусочек кода трейнера if CheckBox1.Checked then DebugPrivilege; GameID := ProcessID('PointBlank.exe'); if GameID = 0 then Label1.Caption := 'ID процесса не найден, запустите игру!' else Label1.Caption := 'ID процесса:' + #32 + IntTostr(GameID);procedure TTrainer.CheckBox20Click(Sender: TObject);const A: Array [1..2] of Byte = ($0F, $84); B: Array [1..2] of Byte = ($0F, $85);begin if CheckBox20.Checked then WriteBytes(ESP_Name,A) else WriteBytes(ESP_Name,;end;Название и версию игры в студию, а так же код трейнера, которым меняешь значение, или кусок кода трейнера, если он твой. А если трейнер чужой - рекомендую обратиться к автору трейнера, так как мы заранее не можем знать, как у него написан трейнер.А причем тут версия и название игры речь идет не об игре а о том как работать с модулями игры то как изменять значение в памяти exe я знаю проблема в том что я не знаю как работать с модулем который подгружает играть нужный мне адрес находится не в exe игры а в её модуле game.dll Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 25 ноября, 2015 Поделиться Опубликовано 25 ноября, 2015 AOBScan (сканер сигнатур) пишешь, и он найдет адрес в любом месте адресного пространства игры (модули туда же подгружаются). А далее работаешь с этим адресом как тебе нужно. Ссылка на комментарий Поделиться на другие сайты Поделиться
Vlad2 Опубликовано 25 ноября, 2015 Поделиться Опубликовано 25 ноября, 2015 Что передаешь в ESP_Name? Как работает процедура WriteBytes? Расскажи подробней, как пытаешься писать в память. Ссылка на комментарий Поделиться на другие сайты Поделиться
Devil9313 Опубликовано 25 ноября, 2015 Автор Поделиться Опубликовано 25 ноября, 2015 Что передаешь в ESP_Name? Как работает процедура WriteBytes? Расскажи подробней, как пытаешься писать в память.procedure WriteBytes(Address: Integer; WriteValue: array of Byte);var pHandle: LongInt; NumWritten: DWORD_PTR;begin pHandle := OpenProcess(PROCESS_VM_READ or PROCESS_VM_WRITE or PROCESS_VM_OPERATION,False,GameID); VirtualProtectEx(pHandle,Ptr(Address),SizeOf(WriteValue),PAGE_EXECUTE_READWRITE,old_Protect_ON); WriteProcessMemory(pHandle,Ptr(Address),@WriteValue,SizeOf(WriteValue),NumWritten); VirtualProtectEx(pHandle,Ptr(Address),SizeOf(WriteValue),old_Protect_OFF,old_Protect_ON); CloseHandle(pHandle);end;Кто поможет реализовать в Delphi поиск адреса по сигнатуре мой Skype: gm..4game Ссылка на комментарий Поделиться на другие сайты Поделиться
Cemi4ka Опубликовано 25 ноября, 2015 Поделиться Опубликовано 25 ноября, 2015 По поводу поиска сигнатуры в игре : http://zhyk.ru/forum/showthread.php?t=887570 По поводу если тебе нужно записать инструкцию - байты в игру ну не в самой ехе , а в длл игры есть функцияДумаю как использовать догадаешся сам ?*function G_Base(ProcessID: Cardinal; MName: String): Pointer; var Modules : Array of HMODULE; cbNeeded, i : Cardinal; ModuleInfo : TModuleInfo; ModuleName : Array[0..MAX_PATH] of Char; PHandle : THandle; begin Result := nil; SetLength(Modules, 1024); PHandle := OpenProcess(PROCESS_QUERY_INFORMATION + PROCESS_VM_READ, False, ProcessID); if (PHandle <> 0) then begin EnumProcessModules(PHandle, @Modules[0], 1024 * SizeOf(HMODULE), cbNeeded); SetLength(Modules, cbNeeded div SizeOf(HMODULE)); for i := 0 to Length(Modules) - 1 do begin GetModuleBaseName(PHandle, Modules[i], ModuleName, SizeOf(ModuleName)); if AnsiCompareText(MName, ModuleName) = 0 then begin GetModuleInformation(PHandle, Modules[i], @ModuleInfo, SizeOf(ModuleInfo)); //Get the information of module Result := ModuleInfo.lpBaseOfDll; CloseHandle(PHandle); Exit; end; end; end; end; Ссылка на комментарий Поделиться на другие сайты Поделиться
Devil9313 Опубликовано 25 ноября, 2015 Автор Поделиться Опубликовано 25 ноября, 2015 У меня несколько ошибок1. TModuleInfo; // Ошибка2. EnumProcessModules // Ошибка3. GetModuleBaseName // Ошибка4. if AnsiCompareText // Ошибка5. GetModuleInformation // Ошибка6. lpBaseOfDll // ОшибкаDelphi XE7 Ссылка на комментарий Поделиться на другие сайты Поделиться
Vlad2 Опубликовано 25 ноября, 2015 Поделиться Опубликовано 25 ноября, 2015 uses ... tlhelp32, psapi; Ссылка на комментарий Поделиться на другие сайты Поделиться
Devil9313 Опубликовано 25 ноября, 2015 Автор Поделиться Опубликовано 25 ноября, 2015 (изменено) tlhelp32 для этой функции не нужен подключил библиотеку psapiошибка осталась только тут if AnsiCompareText(Name, ModuleName) = 0 thenVlad2, ESP_Name константа с нужным мне адресом constESP_Name = $6749AF; // ESP подсветка ников подключил библиотеку SysUtils шибок нет Изменено 25 ноября, 2015 пользователем Devil9313 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения