Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

[Руоф] Код для инжекта в память.

-

Разработка ПО для Perfect World

- Бюро разработчиков Zhyk.Ru: создание ботов, снифферов и прочих программ для Perfect World

Ответ
 
Опции темы
Старый 04.01.2011, 22:11   #1
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию [Руоф] Код для инжекта в память.

Подготовленные функции для инжекта в память клиента (руоф)

Адреса Устарели


Большей частью тема скопирована с форума [Ссылки могут видеть только зарегистрированные пользователи. ]
Я добавил несколько своих инжектов, а также "тел пакетов", кроме того все инжекты, которые могут быть удобно заменены на инжект отсылки пакетов - не описаны.
Код представлен на Delphi.
Все значения в дампах приведены в шестнадцатиричной кодировке.

Код:
type
  PParams = ^TParams;
  TParams = packed record
    Packet: array [0..100] of byte;
    Param1,Param2,Param3: DWord;
    Param4: array [1..100] of widechar;
  end;

const 
  PW_BASE_ADDRESS = $009C0E6C;
  PW_GAMERUN_ADDR = $009C1514;
Injector (© asgborges)

Инжект пакетов.
Packet Injection (© Dinmaite) (Адрес обновлен)

Пакеты (© Dinmaite):
Пакеты предоставлены в виде "разделенном на байты" для удобности рассмотрения.
Если вы передаете их в мою функцию, необходимо удалить все пробелы.
Пет
Инвентарь
Действия
Другое
Квесты (© bober757

Инжекты.
Assist Injection (© gen-ostr)

Mine_Drop (© gen-ostr, перенос на Delphi и "универсализация" - Dinmaite)

TalkToNPC Injection (© GrieVeR-13; Addresses by Funku)

Walk Injection (© AlexGD, muzhig; Addresses by asdxz)

SkillInjection (© Dinmaite)

UseSkillGenie Injection (© GrieVeR-13)

Buy Injection (© Barmank; Addresses by GrieVeR-13)

Sell Injection (© Barmank; Addresses by GrieVeR-13)

RepairAll Injection (© Barmank; Addresses by Python_)

Jump Injection (© Vogel; Addresses by asdxz)

AutoPath (© Dinmaite)

Последний раз редактировалось Dinmaite; 20.10.2016 в 18:21.
  Ответить с цитированием
15 пользователя(ей) сказали cпасибо:
/GeG/ (16.08.2011), Amba (05.01.2011), BigMaK (30.03.2012), Bigzosa (04.02.2013), BioDread (14.03.2012), DevZI (11.03.2014), Gorrilaz (10.09.2013), growl13 (20.10.2017), ktulx (04.05.2012), Meg(0) (24.05.2012), Хакерок:) (28.12.2011), Sirioga (05.01.2011), Smertig (09.04.2012), Unheilig)) (30.09.2013), VortexWhy (31.01.2012)
Старый 04.01.2011, 23:01   #2
 Разведчик
Аватар для Greeeds
 
Greeeds никому не известный тип
Регистрация: 15.12.2010
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Почитал, оч интересно, но возник вопрос про пакеты: они статичны? думаю нет, как тогда их выловить?
  Ответить с цитированием
Старый 04.01.2011, 23:33   #3
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Это "тела" пакетов, инжектим мы их до шифровки.
Они статичны, за исключением секций, которые я выделял цветом, обычно это ID моба или действия.
  Ответить с цитированием
Старый 06.01.2011, 20:47   #4
 Разведчик
Аватар для Greeeds
 
Greeeds никому не известный тип
Регистрация: 15.12.2010
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Цитата:
Сообщение от DinmaiteПосмотреть сообщение
Код:
procedure AssistCall(aPParams:PParams);Stdcall;
var P1:DWORD;
begin
P1:=aPParams^.Param1;
 asm
  pushad
  mov eax, P1
  push eax
  mov eax, $5F6AB0
  call eax
  add esp, $4
  popad
 end;
end;

procedure Assist(PlayerMemberID:dword);
var aParams:TParams;
begin
aParams.Param1:=PlayerMemberID; //ID игрока в пати.
InjectFunc(aHandle,@AssistCall,@aParams,SizeOf(aParams));
end;

оч заинтерисовало вот это, как правильно определить ID? или оно по порядку сверху вниз 1,2,3,4... ?
  Ответить с цитированием
Старый 06.01.2011, 21:21   #5
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Цитата:
Сообщение от GreeedsПосмотреть сообщение
оч заинтерисовало вот это, как правильно определить ID? или оно по порядку сверху вниз 1,2,3,4... ?

Нет, это ID персонажа, его можно найти в массиве (структуре) членов группы, в соседней теме "Адреса и оффсеты".
  Ответить с цитированием
Старый 23.01.2011, 14:39   #6
 Разведчик
Аватар для Allein
 
Allein никому не известный тип
Регистрация: 12.04.2009
Сообщений: 7
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Цитата:
Сообщение от DinmaiteПосмотреть сообщение
Procedure TInjects.AutoDrop_Mining(hProcess,WID,_typeWord) ;

WID - как я понимаю это место кирки в инвентаре. Последняя ячейка в нерасширенном инвентаре это 31 или 32?

_type - Совсем не понимаю что это.. Тип ресурса? В каком виде он должен быть?

Вызывал функцию такими способами:

AutoDrop_Mining(hProcess,31,0);
AutoDrop_Mining(hProcess,31,1);
AutoDrop_Mining(hProcess,31,2);
AutoDrop_Mining(hProcess,31,3);
AutoDrop_Mining(hProcess,31,4);
AutoDrop_Mining(hProcess,32,0) и тп.
даже: AutoDrop_Mining(hProcess,31,3075);
Не копает =\ В чём может быть проблема?
  Ответить с цитированием
Старый 23.01.2011, 14:58   #7
Заблокирован
 Рыцарь-капитан
Аватар для semoder
 
semoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе цену
Регистрация: 02.05.2009
Сообщений: 525
Популярность: 4586
Золото Zhyk.Ru: 20
Сказал(а) спасибо: 37
Поблагодарили 767 раз(а) в 220 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

WID-это уникальный ид ресурса/Моба/NPC на карте, но не место кирки, ни в коем случае =)

Последний раз редактировалось semoder; 23.01.2011 в 15:05.
  Ответить с цитированием
Старый 23.01.2011, 15:26   #8
 Разведчик
Аватар для Allein
 
Allein никому не известный тип
Регистрация: 12.04.2009
Сообщений: 7
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
 
Arrow Re: [Руоф] Код для инжекта в память.

Цитата:
Сообщение от semoderПосмотреть сообщение
WID-это уникальный ид ресурса/Моба/NPC на карте, но не место кирки, ни в коем случае =)

Хорошо. А как узнать этот уникальный ID? И что такое _type(по сути либо 2 либо не 2 )?

И очень интересен принцип работы PWAuto в этом плане, он же собирает ближайший ресурс. Как он узнаёт ID ближайшего ресурса? Или сканирует карту на ID?

Совсем запутался хD
  Ответить с цитированием
Старый 23.01.2011, 15:59   #9
Заблокирован
 Рыцарь-капитан
Аватар для semoder
 
semoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе цену
Регистрация: 02.05.2009
Сообщений: 525
Популярность: 4586
Золото Zhyk.Ru: 20
Сказал(а) спасибо: 37
Поблагодарили 767 раз(а) в 220 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Сканирует карту, отбрасывает дальние ресурсы, оставляя только самый ближайший

Структура / Список лута:
GA +8 +28 +18 +[I*4] + (+0)^J +4: (I in [0..300])

GA +8 +28 +14: - Items count
+3C ItemLocX (float)
+40 ItemLocZ (float)
+44 ItemLocY (float)
+10C ItemWID (Sn - Serial Number)
+110 ItemID
+14C ItemType (1 - Money; 2 - Mine; Other - Item)
+164 +0 ItemName (UText / Unicode String)
+154 Дистанция
  Ответить с цитированием
Пользователь сказал cпасибо:
388672 (25.08.2013)
Старый 23.01.2011, 16:02   #10
 Разведчик
Аватар для Allein
 
Allein никому не известный тип
Регистрация: 12.04.2009
Сообщений: 7
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

semoder, спасибо, не совсем тривиальная задачка (по крайней мере для меня), сейчас покопаюсь
  Ответить с цитированием
Старый 31.01.2011, 18:58   #11
 Разведчик
Аватар для Njkzy80
 
Njkzy80 никому не известный тип
Регистрация: 09.01.2011
Сообщений: 15
Популярность: 10
Сказал(а) спасибо: 19
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Уважаемый Dinmaite прошу вас помогите найти ошибку.
Я перепробовал все инжекты но почемуто работает только джамп, остальные выбивают клиент. Вот мой код
Код:
unit Unit1;

interface

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



type
  PParams = ^TParams;
  TParams = packed record
    Param1: DWORD;
    Param2: DWORD;
    Param3: single;
    Param4: single;
    Param5: single;
    Param6: byte;
  end;

type
  TForm1 = class(TForm)
    btnAttach: TButton;
    btnToggleFly: TButton;
    mInfo: TMemo;
    btnTownPortal: TButton;
    procedure btnAttachClick(Sender: TObject);
    procedure btnTownPortalClick(Sender: TObject);
    procedure btnToggleFlyClick(Sender: TObject);
  private
  public
  end;

var
  Form1: TForm1;
  hWindow: HWND;
  gamePID, hProcess: cardinal;

implementation

{$R *.dfm}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~ Инжектор
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure InjectFunc(hProcess: Cardinal; Func: Pointer; aParams: Pointer; aParamsSize: DWORD);
var
  hThread: THandle;
  lpNumberOfBytes: DWORD;
  ThreadAddr, ParamAddr: Pointer;
begin
  if hProcess<>0 then
  begin
    // ---- Выделим место в памяти процесса и запишем туда нашу функцию
    ThreadAddr := VirtualAllocEx(hProcess, nil, 256, MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory(hProcess, ThreadAddr, Func, 256, lpNumberOfBytes);
    // ---- Также запишем параметры к ней
    ParamAddr := VirtualAllocEx(hProcess, nil, aParamsSize, MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory(hProcess, ParamAddr, aParams, aParamsSize, lpNumberOfBytes);
    // ---- Создадим поток, в котором это всё будет выполняться
    hThread := CreateRemoteThread(hProcess, nil, 0, ThreadAddr, ParamAddr, 0, lpNumberOfBytes);
    // ---- Ожидаем, пока функция отработает
    WaitForSingleObject(hThread, INFINITE);
    // ---- Подчищаем за собой
    CloseHandle(hThread);
    VirtualFreeEx(hProcess, ParamAddr, 0, MEM_RELEASE);
    VirtualFreeEx(hProcess, ThreadAddr, 0, MEM_RELEASE);
  end
end;


procedure TForm1.btnAttachClick(Sender: TObject);
begin
  hWindow := FindWindow('ElementClient Window',nil);
  if hWindow <> 0 then begin
    GetWindowThreadProcessId(hWindow, @gamePID);
    hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, gamePID);
    mInfo.Lines.Add('Нашёл клиента PW. PID='+IntToStr(gamePID)+' hProcess='+IntToStr(hProcess));
    btnTownPortal.Enabled := true;
    btnToggleFly.Enabled := true;
  end else begin
    mInfo.Lines.Add('Клиент PW не найден');
  end;
end;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Команда использования скилла
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure UseSkillCall(aPParams:PParams); Stdcall;
var
  Address: pointer;
begin
  Address := Pointer($004B0CE0);
  asm
    pushad
    mov ecx, dword ptr [$009C1514]
    mov ecx, dword ptr [ecx + $20]
    mov ecx, dword ptr [ecx + $3A8]
    push    $FFFFFF00
    push    $00
    mov     ecx, [$1]
    push    ecx
    mov ecx, edi
    call    Address
    popad
  end;
end;
procedure TForm1.btnTownPortalClick(Sender: TObject);
var
  aParams : TParams;
begin
  InjectFunc(hProcess, @UseSkillCall, @aParams, SizeOf(aParams));
end;

procedure JumpCall(aPParams:PParams);Stdcall;
var CallAddress:pointer;
begin
CallAddress:=pointer($00476970);
 asm
  pushad
  push $0
  push $C8
  push $1
  push $3F800000
  push $4
  mov ecx, dword ptr [$009C1514]
  mov ecx, dword ptr [ecx+$20]
  mov eax, $41200000
  mov dword ptr[ecx+$B80], $0
  mov dword ptr[ecx+$B94], $0
  mov dword ptr[ecx+$B98], $0
  mov dword ptr[ecx+$B9C], $0
  mov dword ptr[ecx+$BA4], eax
  mov dword ptr[ecx+$BF4], $1
  mov dword ptr[ecx+$BFC], eax
  call CallAddress
  popad
 end;
end;

procedure TForm1.btnToggleFlyClick(Sender: TObject);
var aParams:TParams;
begin
InjectFunc(hProcess,@JumpCall,@aParams,SizeOf(aParams));
end;

end.
Помогите разобраться

Добавлено через 2 минуты
Почему-то инжект на использование скила 1 выбивает клиент, и я немогу понять почему.

Последний раз редактировалось Njkzy80; 31.01.2011 в 19:00. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 31.01.2011, 19:14   #12
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Я вроде отвечал на ПВлабе
  Ответить с цитированием
Старый 12.02.2011, 12:46   #13
 Разведчик
Аватар для BotDruLife
 
BotDruLife никому не известный тип
Регистрация: 27.12.2010
Сообщений: 7
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Инжектим-инжектим....
А вот вопрос, а вдруг в игре есть защита от инжекта? То что она не срабатывает, это не значит что ее нет или она "не видит"...
  Ответить с цитированием
Старый 12.02.2011, 13:05   #14
-= Элитный Мастер =-
 Главнокомандующий
Аватар для Kitsune
 
Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(
Регистрация: 20.01.2010
Сообщений: 1,539
Популярность: 22780
Золото Zhyk.Ru: 600
Сказал(а) спасибо: 43
Поблагодарили 1,717 раз(а) в 538 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

BotDruLife, не городите ерунды.
________________
Fireball - Быстрое снятие и загрузка скриншотов на хостинг.
  Ответить с цитированием
Старый 17.02.2011, 16:59   #15
 Разведчик
Аватар для j091
 
j091 никому не известный тип
Регистрация: 16.02.2011
Сообщений: 26
Популярность: 10
Сказал(а) спасибо: 87
Поблагодарили 10 раз(а) в 5 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Уважаемый Dinmaite, подскажите, как реализовать функцию запроса на аукцион?

Заранее благодарен.
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Информация] Читерим в CrossFire или методы инжекта Hummel Cross Fire 6 10.11.2010 20:36
[Программа] Память о базе Chipito Базы серверов и брут 2 30.08.2010 17:23
Оперативная память для ПВ. NikelR Общение и обсуждение Perfect World 4 25.05.2010 22:30

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 13:39.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net