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

Лидеры

Популярный контент

Показан контент с высокой репутацией 21.06.2010 во всех областях

  1. Ну, так посвети нам, если не трудно
    1 балл
  2. Простой пример трейнера с использованием ToolHelp 32 API: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, tlhelp32, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Timer1: TTimer; Label1: TLabel; Label18: TLabel; Label2: TLabel; procedure Timer1Timer(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; PidHandle: integer; PidID : integer; byteArr : Array of byte; Const ProgramName = 'BF2.exe'; implementation {$R *.dfm} // tlhelp32 function to Loop through processes and locate your target function GetProcessID(Const ExeFileName: string; var ProcessId: integer): boolean; var ContinueLoop: BOOL; FSnapshotHandle: THandle; FProcessEntry32: TProcessEntry32; begin result := false; FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); FProcessEntry32.dwSize := Sizeof(FProcessEntry32); ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); while integer(ContinueLoop) <> 0 do begin if (StrIComp(PChar(ExtractFileName(FProcessEntry32.szExeFile)), PChar(ExeFileName)) = 0) or (StrIComp(FProcessEntry32.szExeFile, PChar(ExeFileName)) = 0) then begin ProcessId:= FProcessEntry32.th32ProcessID; result := true; break; end; ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); end; CloseHandle(FSnapshotHandle); end; //Write 1 byte to memory procedure poke1(Address: Cardinal; Data: Byte); var Written: Cardinal; begin WriteProcessMemory(PidHandle, Pointer(Address), @Data, SizeOf(Data), Written); end; //Write 2 bytes to memory procedure poke2(Address: Cardinal; Data: Word); var Written: Cardinal; begin WriteProcessMemory(PidHandle, Pointer(Address), @Data, SizeOf(Data), Written); end; //Write 4 bytes to memory procedure poke4(Address: Cardinal; Data: Cardinal); var Written: Cardinal; begin WriteProcessMemory(PidHandle, Pointer(Address), @Data, SizeOf(Data), Written); end; //Write an Array of bytes to memory procedure pokeX(Address: Cardinal; Data: Array of Byte); var Written: Cardinal; begin WriteProcessMemory(PidHandle, Pointer(Address), @Data, SizeOf(Data), Written); end; //Example Function Call 1 procedure TForm1.Button1Click(Sender: TObject); begin if GetProcessID(ProgramName, PidId) then begin PidHandle := OpenProcess(PROCESS_ALL_ACCESS,False,PidId); poke1($401000, $90); poke2($401001, $9090); poke4($401003, $90909090); closehandle(PidHandle); end else begin MessageDlg('Start BF2 First.', mtwarning, [mbOK],0); end; end; //Example Function Call 2 procedure TForm1.Button2Click(Sender: TObject); begin if GetProcessID(ProgramName, PidId) then begin PidHandle := OpenProcess(PROCESS_ALL_ACCESS,False,PidId); SetLength(byteArr, 16); byteArr[0] := $8B; byteArr[1] := $71; byteArr[2] := $10; byteArr[3] := $0F; byteArr[4] := $85; byteArr[5] := $6A; byteArr[6] := $9D; byteArr[7] := $FD; byteArr[8] := $FF; byteArr[9] := $83; byteArr[10] := $7E; byteArr[11] := $0C; byteArr[12] := $00; byteArr[13] := $0F; byteArr[14] := $85; byteArr[15] := $60; pokeX($401007, byteArr); SetLength(byteArr, 15); closehandle(PidHandle); end else begin MessageDlg('Start BF2 First.', mtwarning, [mbOK],0); end; end; // Timer to Detect Hotkey and Execute your Buttons Code procedure TForm1.Timer1Timer(Sender: TObject); begin if (GetAsyncKeyState(VK_F1) <> 0) then Button1.Click; end; end. Источник: mpcforum.com
    1 балл
  3. Короче почистил я её и вот что получилось: Program Api; uses WindowTrainer; begin WindowCreateTrainer; end. unit WindowTrainer; interface uses windows, messages; procedure WindowCreateTrainer; var window:TWndClassEx; Mwindow: HWND; Mmsg: MSG; implementation function WindowProc (wnd: HWND; msg: integer; wp: WPARAM; lp: LPARAM):LRESULT;STDCALL; begin Result := 0; case msg of WM_CLOSE : PostMessage(wnd, WM_QUIT, 0, 0); else Result := DefWindowProc(wnd, msg, wp, lp); end; end; procedure WindowCreateTrainer; begin window.cbSize := sizeof (window); window.style := CS_HREDRAW or CS_VREDRAW; window.lpfnWndProc := @WindowProc; window.cbClsExtra := 0; window.cbWndExtra := 0; window.hInstance := HInstance; window.hIcon := LoadIcon (0,IDI_APPLICATION); window.hCursor := LoadCursor (0,IDC_ARROW); window.hbrBackground:=Color_BtnFace+12; window.lpszMenuName := nil; window.lpszClassName := 'frmTrainer'; RegisterClassEx (window); Mwindow := CreateWindowEx(0,'frmTrainer', 'Demo Window', WS_OVERLAPPEDWINDOW - WS_MAXIMIZEBOX+ WS_EX_TOOLWINDOW- WS_THICKFRAME,100,100,300,300,0,0,Hinstance,nil); SHOWWINDOW (Mwindow,SW_Show); while GetMessage (Mmsg,0,0,0) do begin TranslateMessage (Mmsg); DispatchMessage (Mmsg); end; end; end. П.С. С модулем ...uses Forms... приложение с размером 16 кб никогда не получится
    1 балл
×
×
  • Создать...

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

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