Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 22.10.2011, 17:39   #1
egorzenit
Пользователь
 
Регистрация: 05.07.2011
Сообщений: 60
Радость Перехват Api

Всем привет.
подскажите пожалуйста. есть процесс,нужно в нем внедрится в адрес(я его уже знаю) и изменить значение на нужное мне,как это все сделать программно?
egorzenit вне форума
Старый 22.10.2011, 18:00   #2
haruhi
Форумчанин
 
Аватар для haruhi
 
Регистрация: 05.10.2011
Сообщений: 368
По умолчанию

Цитата:
Сообщение от egorzenit Посмотреть сообщение
и изменить значение на нужное мне
изменить какое значение?
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
haruhi вне форума
Старый 22.10.2011, 18:02   #3
tred
чайник
Пользователь
 
Аватар для tred
 
Регистрация: 24.06.2010
Сообщений: 58
По умолчанию

Код:
                   unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  WindowName : integer;
  ProcessId : integer;
  ThreadId : integer;
  HandleWindow : Integer;
  b : dword;
  readwrite : cardinal;
  buf : dword;
  Const
  WindowTitle = 'S.T.A.L.K.E.R.: CalL of Pripyat';
  Address = $04B5E2C0;
  NumberOfBytes = 4;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
 begin
  WindowName := FindWindow(nil,WindowTitle);
    If WindowName = 0 then

      begin
        MessageDlg('игру запускай до трейнера', mtwarning,[mbOK],0);
      end;
    ThreadId := GetWindowThreadProcessId(WindowName,@ProcessId);
    HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
    ReadProcessMemory(HandleWindow,ptr(address),@b,4,readwrite);
    b:=b+748;
    buf:=$F4240;
    WriteProcessMemory(HandleWindow, ptr(b), @buf, 4, readwrite);
    end;
чит на деньги в сталкере зов припяти )) пиратская версия
tred вне форума
Старый 22.10.2011, 18:12   #4
egorzenit
Пользователь
 
Регистрация: 05.07.2011
Сообщений: 60
По умолчанию

То что мне нужно. однако есть два вопроса.
1)можно ли заменить захват с хэндла окна на его процесс?
2)где идет изменение значения в адресе не могу понять?

Последний раз редактировалось mihali4; 22.10.2011 в 23:18.
egorzenit вне форума
Старый 22.10.2011, 18:20   #5
tred
чайник
Пользователь
 
Аватар для tred
 
Регистрация: 24.06.2010
Сообщений: 58
По умолчанию

WriteProcessMemory(HandleWindow, ptr(b), @buf, 4, readwrite);
думаю что здесь запись в память нового значения
по поводу процесса незнаю я сам с чимакса делал этот чит
вот ссылка почитай http://chemax.ru/articles_r.php



читай в статье про делфи тренер

чит кстати для сингла не для онлайна, в онлайне без читов интересней

Последний раз редактировалось tred; 22.10.2011 в 18:23.
tred вне форума
Старый 22.10.2011, 18:32   #6
egorzenit
Пользователь
 
Регистрация: 05.07.2011
Сообщений: 60
По умолчанию

хмм из твоего кода изменил адресс и хэндл
пишет что типо запускать после игры игра запущена хэндл правильный.. адресс тоже.
а что значит?
b:=b+748;
buf:=$F4240;
?
egorzenit вне форума
Старый 22.10.2011, 18:37   #7
tred
чайник
Пользователь
 
Аватар для tred
 
Регистрация: 24.06.2010
Сообщений: 58
По умолчанию

тебе надо сначало протестить адрес может он у тебя динамический как у меня
b:=b+748; это смешение от указателя на адрес
buf:=$F4240; это шестнадцатеричное значение которое запишем в адрес

почитай по ссылке сверху я кидал тебе

Последний раз редактировалось mihali4; 22.10.2011 в 23:19.
tred вне форума
Старый 22.10.2011, 18:39   #8
egorzenit
Пользователь
 
Регистрация: 05.07.2011
Сообщений: 60
По умолчанию

ах да,у тебя игра запущена в окне? проверил на одной игре такой ошибки нет а на другой есть. адресс не динамический проверено.
egorzenit вне форума
Старый 22.10.2011, 18:40   #9
tred
чайник
Пользователь
 
Аватар для tred
 
Регистрация: 24.06.2010
Сообщений: 58
По умолчанию

18:40
Цитата:
Сообщение от egorzenit Посмотреть сообщение
ах да,у тебя игра запущена в окне? проверил на одной игре такой ошибки нет а на другой есть. адресс не динамический проверено.
для не дма там другой листинг щас найду выложу

Так. Надоело.
Читать правила раздела не хотим, занимаемся оверквотингом.
Результат - получаем красную карточку.

Последний раз редактировалось mihali4; 22.10.2011 в 23:22.
tred вне форума
Старый 22.10.2011, 18:43   #10
tred
чайник
Пользователь
 
Аватар для tred
 
Регистрация: 24.06.2010
Сообщений: 58
По умолчанию

Код:
var
Form1: TForm1;
WindowName: integer; // Для удобства объявим как глобальные переменные.
ProcessId: integer; // Все эти переменные нужны для того, чтобы найти
ThreadId: integer; // процесс с игрой.
HandleWindow: Integer; //
write: cardinal; // В эту переменную попадёт количество записанных байтов.
buf: dword; // Тут будет содержаться значение, на которое будем изменять.
const
WindowTitle = 'RAP'; // Заголовок окна с игрой
Address = $83C4BF64; // Адрес, по которому будем изменять значение.
NumberOfBytes = 4; // Количество байт, которые будем заменять.

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
WindowName := FindWindow(nil,WindowTitle);
If WindowName = 0 then begin // Если окошка у нас нет, то и изменять нечего.
MessageDlg('Игра должна быть запущена до трейнера. Запустите ее, потом трейнер', mtwarning,[mbOK],0);
end;
ThreadId := GetWindowThreadProcessId(WindowName,@ProcessId); // Ищем хэндл процесса
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId); // с нашей игрой.
buf:=$DEAD; // :) DEADh = 57005d
WriteProcessMemory(HandleWindow, ptr(address), @buf, 4, write); // Изменяем значение по этому адресу на наше.
end;
тут кстати судя по коментариям по хэндлу процесса как тебе и надо

И еще одну - за размещение подряд своих сообщений, за неиспользование кнопки "Правка".
Или она, по-вашему, так, для красоты приделана ?

Последний раз редактировалось mihali4; 22.10.2011 в 23:23.
tred вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перехват GL Api coNsept Общие вопросы C/C++ 6 19.06.2011 02:42
Перехват API BOBAH13 Win Api 12 10.05.2010 10:11
перехват API функций ассемблер123 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 16 29.04.2010 12:51
API перехват Irat Помощь студентам 13 11.02.2008 12:04
Перехват API функций satana Win Api 4 21.08.2007 20:12