MoL4uN87
-
Постов
17 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные MoL4uN87
-
-
11 минуту назад, Trix сказал:
Мне нужно привести к виду обычного адреса как например 0x111111
Использую это для чтения\записи данных.
Как можно узнать этот модуль и как его использовать? Есть ли где-то простая понятная для новичка документация, буду очень признателен?
По названию exe видно что это 64битный процесс...для 64битного сам ищу как сделать для 32битного процесса смотри в конце мой пример
-
Там Xlive защита её отключать надо сначала!
[ENABLE]
label(xlivekiller)
registersymbol(xlivekiller)
aobscan(aobxlive,74 14 FF 75 14 8B CE FF 75 10 53 E8)aobxlive:
xlivekiller:
db EB 14[DISABLE]
dealloc(newmem)
xlivekiller:
db 74 14
unregistersymbol(xlivekiller) -
Это модульная адресация. То есть, конечный адрес вычисляется как сумма стартового адреса модуля и адреса внутри модуля. Таким образом, адрес будет всегда актуальным, даже если модуль загрузиться по другому адресу. Часто такой вид бывает у указателей. Как использовать в проекте? Смотря что ты хочешь с ним делать?!.
-
Кто как ищет lpBaseOfDll, EntryPoint для 64битных процессов?
-
Для 32bit игр проблема решается function GetModuleBaseAddress(ProcessID: Cardinal; MName: String): Pointer;
Скрытый текстfunction GetModuleBaseAddress(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 //Start the bucle begin GetModuleBaseName(PHandle, Modules[i], ModuleName, SizeOf(ModuleName)); if AnsiCompareText(MName, ModuleName) = 0 then begin GetModuleInformation(PHandle, Modules[i], @ModuleInfo, SizeOf(ModuleInfo)); Result := ModuleInfo.lpBaseOfDll; CloseHandle(PHandle); Exit; end; end; end; end;
Пример использования:
Скрытый текстuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, psapi, tlhelp32, StdCtrls; procedure TForm1.Button1Click(Sender: TObject); var WHandle : HWND; PHandle: THandle; Address, X, Buffer: DWORD; NewValue: Cardinal; ProcessID : Cardinal; begin ProcessID := 0; NewValue := $9999; WHandle := FindWindow(nil, '32bit.exe'); if wHandle = 0 then begin ShowMessage('Игра не найдена'); end else begin GetWindowThreadProcessId(WHandle, @ProcessID); Address := Integer(GetModuleBaseAddress(ProcessID, '32bit.exe')) + $смещение; lbl1.Caption:='$'+inttohex(Address,8); PHandle := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID); ReadProcessMemory(PHandle, Ptr(Address), @Address, 4, X); lbl2.Caption:='$'+inttohex(Address,8); //32bit.exe+смещение -> первый указатель ReadProcessMemory(PHandle, Ptr(Address + $смещение 2), @Address, 4, X); WriteProcessMemory(PHandle,Ptr(Address + $смещение 2),@NewValue,Sizeof(NewValue),X); CloseHandle(PHandle); end; end;
Для 64bit игры function GetModuleBaseAddress - дает 0. Кто поможет и подскажет буду благодарен!
-
Ссылки не работают! (
Так и не смог понять как в Delphi записать [.exe + смещение]
Нарыл функцию
Скрытый текстfunction GetBasePointerOfModule(ProcessId: DWORD; Modulename: string): Int64; var FSnapshotHandle: THandle; FModulEntry32: MODULEENTRY32; begin Result := 0; FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, ProcessId); try if FSnapshotHandle <> INVALID_HANDLE_VALUE then begin FModulEntry32.dwSize := SizeOf(FModulEntry32); if Module32First(FSnapshotHandle, FModulEntry32) then repeat if FModulEntry32.szModule = Modulename then begin Result := Int64(FModulEntry32.modBaseAddr); break; end; until (not Module32Next(FSnapshotHandle, FModulEntry32)); end; finally closeHandle(FSnapshotHandle); end; end;
Но она возвращает 0!
-
Ставь лицензионного Касперского!
-
// Пишем функцию изменения значения адреса на тип Float
Скрытый текстfunction GetFloatValueToAdress(WindowName: PAnsiChar; Adress: integer; WriteValue: single):Boolean; var pid:integer; write :dword; Aob_old_Protect_OFF: dword; Aob_old_Protect_ON:dword; pHandle:LongInt; begin GetWindowThreadProcessId(FindWindow(nil,WindowName),@pid); pHandle:=OpenProcess(PROCESS_ALL_ACCESS,False,pid); if pHandle <> 0 then begin VirtualProtectEx(pHandle,ptr(Adress),SizeOf(WriteValue),PAGE_EXECUTE_READWRITE,Aob_old_Protect_OFF); WriteProcessMemory(pHandle,ptr(Adress),@WriteValue,SizeOf(WriteValue),write); VirtualProtectEx(pHandle,ptr(Adress),SizeOf(WriteValue),Aob_old_Protect_OFF,Aob_old_Protect_ON); CloseHandle(pHandle); end; end; procedure TForm1.Button1Click(Sender: TObject); begin GetFloatValueToAdress('Grand Theft Auto V',$18097BA0,10.5); //Пример end;
-
что-то в последнем билде спидхак не работает выдает ошибку Ошибка определения того, что означает realgettickcount
-
помогите разобраться в коде:
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
aobscan(healthscriptAOB,F3 0F 2A 81 7C 03 00 00 F3 0F 11 04 24)
label(healthscriptAOB_jmp)
registersymbol(healthscriptAOB_jmp)
label(pHealth)
registersymbol(pHealth)
alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(originalcode)
label(exit)
newmem: //this is allocated memory, you have read,write,execute access
//place your code here
mov [pHealth],ecx
originalcode:
cvtsi2ss xmm0,[ecx+0000037C]
exit:
jmp returnhere
///
pHealth:
dd 0
///
healthscriptAOB: //"RememberMe.exe"+A9341A:
healthscriptAOB_jmp:
jmp newmem
nop
nop
nop
returnhere:
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
healthscriptAOB_jmp: //"RememberMe.exe"+A9341A:
db F3 0F 2A 81 7C 03 00 00
//Alt: cvtsi2ss xmm0,[ecx+0000037C]
unregistersymbol(healthscriptAOB_jmp)
unregistersymbol(pHealth)pHealth:
dd 0- ? это что
pHealth:
dd 0
-
что делать когда отладчик поставил игру на паузу нажимаю ф9 и терминатед (игра крушится) проверял на DMC 64битная винда?
-
может кто то подскажет как обойти live версии 2.0.672? перепробывал таблицы и патчи не помогает!
-
как подключиться к xlive.dll ?
-
Resident Evil 5 как раз защищен XLive. Для определенных версий этой библиотеки есть скриты для СЕ, отключающие проверку целостности кода и наличия отладчика. Если же под твою версию такового нет - надо искать эту процедуру самому, что новичку довольно проблематично. Если же вылетает при отладке в незащищенных играх - надо смотреть в настройках СЕ, а также можно попробовать принудительно запускать 32-битную версию (свой ярлык у нее). С ней, как правило, проблем не возникает практически никаких.
К вопросу с о том, как узнать - если в списке модулей процесса находится xlive.dll - следовательно, это защита XLive. Если в списке процессов (можно посмотреть через диспетчер задач) есть файлы punkbustera.exe или похожие по названию - это, очедвино, защита PunkBuster. По остальным типам защит расписывать не буду, ибо все "симптомы", присущие той или иной защите, можно спокойно найти в гугле.
а как эти защиты обходить? где можно скачать скриты для СЕ? или скрипты ?
-
Присутствуют ли в игре службы типа Punkbuster, XLive или еще что-то в этом духе?
да вроде нет..как это узнать?...да и вообще во многих играх при отладке игра вылетает...у меня 64битная семерка...Resident evil 5 вылетает через некоторое время к примеру
-
Подскажите пожалуйста...игра grid2 ставлю бряк на запись переключаюсь в игру и она вылетает...менял разные опции в отладчике, заголовок сменил в программе, запускал и 64битную версию и все равно вылетает что делать?
х64 игры и трейнеры для них (DELPHI)
in Высокоуровневое программирование
Опубликовано
Примерчики бы ваши глянуть на Делфи!