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

MoL4uN87

Стажёры
  • Постов

    17
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные MoL4uN87

  1. 11 минуту назад, Trix сказал:

    Мне нужно привести к виду обычного адреса как например 0x111111

    Использую это для чтения\записи данных.

    Как можно узнать этот модуль и как его использовать? Есть ли где-то простая понятная для новичка документация, буду очень признателен?

    По названию exe видно что это 64битный процесс...для 64битного сам ищу как сделать для 32битного процесса смотри в конце мой пример

     

  2. Это модульная адресация. То есть, конечный адрес вычисляется как сумма стартового адреса модуля и адреса внутри модуля. Таким образом, адрес будет всегда актуальным, даже если модуль загрузиться по другому адресу. Часто такой вид бывает у указателей. Как использовать в проекте? Смотря что ты хочешь с ним делать?!.  

     

  3. Для 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. Кто поможет и подскажет буду благодарен!

  4. Ссылки не работают! (

    Так и не смог понять как в 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!

  5. // Пишем функцию изменения значения адреса на тип 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;

     

     

  6. помогите разобраться в коде:

    [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

  7. Resident Evil 5 как раз защищен XLive. Для определенных версий этой библиотеки есть скриты для СЕ, отключающие проверку целостности кода и наличия отладчика. Если же под твою версию такового нет - надо искать эту процедуру самому, что новичку довольно проблематично. Если же вылетает при отладке в незащищенных играх - надо смотреть в настройках СЕ, а также можно попробовать принудительно запускать 32-битную версию (свой ярлык у нее). С ней, как правило, проблем не возникает практически никаких.

    К вопросу с о том, как узнать - если в списке модулей процесса находится xlive.dll - следовательно, это защита XLive. Если в списке процессов (можно посмотреть через диспетчер задач) есть файлы punkbustera.exe или похожие по названию - это, очедвино, защита PunkBuster. По остальным типам защит расписывать не буду, ибо все "симптомы", присущие той или иной защите, можно спокойно найти в гугле.

    а как эти защиты обходить? где можно скачать скриты для СЕ? или скрипты ?

  8. Присутствуют ли в игре службы типа Punkbuster, XLive или еще что-то в этом духе?

    да вроде нет..как это узнать?...да и вообще во многих играх при отладке игра вылетает...у меня 64битная семерка...Resident evil 5 вылетает через некоторое время к примеру

  9. Подскажите пожалуйста...игра grid2 ставлю бряк на запись переключаюсь в игру и она вылетает...менял разные опции в отладчике, заголовок сменил в программе, запускал и 64битную версию и все равно вылетает что делать?

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

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

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