Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Delphi инжект скилла по любому таргету.

-

Общение разработчиков

- Программирование для Perfect World, общение и обсуждене разработок

Ответ
 
Опции темы
Старый 21.10.2014, 01:44   #16
 Разведчик
Аватар для slike_x
 
slike_x неизвестен в этих краях
Регистрация: 21.11.2010
Сообщений: 41
Популярность: -75
Сказал(а) спасибо: 31
Поблагодарили 25 раз(а) в 12 сообщениях
 
По умолчанию Re: Delphi инжект скилла по любому таргету.

Цитата:
Сообщение от pw.assistantПосмотреть сообщение
Код:
      WriteProcessMemory(ProcessID, ThreadAddr, Func, 256, lpNumberOfBytes);

[Error] Unit1.pas(48): Types of actual and formal var parameters must be identical - ругается так на эту строчку. Что не так было объявлено, видимо

Добавлено через 12 минут
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
const
  base_addr = $BBC26C;
  skill_addr = $6B4220;
  GameOfs = $1C;
  GamerOfs = $34;

type
  PParams = ^TParams;
  TParams = packed record
    Param1,Param2,Param3: DWord;
  end;
var
  Form1: TForm1;

implementation

{$R *.dfm}
 procedure InjectFunc(hProcess: Cardinal; Func, aParams: Pointer; aParamsSize: DWORD);stdcall;export;
var
  ThreadAddr, ParamAddr: Pointer;
  lpNumberOfBytes: DWORD;
  hThread: THandle;
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 SkillCall(aPParams: PParams); stdcall;
var
  BaseAddr, CallAddress: Pointer;
  P1: DWord;
begin
  BaseAddr := Pointer(aPParams^.Param1);
  CallAddress := Pointer(aPParams^.Param2);
  P1 := aPParams^.Param3;
  asm
    pushad
    mov ecx, BaseAddr
    mov ecx, dword ptr [ecx]
    mov ecx, dword ptr [ecx+GameOfs]
    mov ecx, dword ptr [ecx+GamerOfs]
    push $FFFFFFFF
    push $00
    push $00
    mov edx, P1
    push edx
    call CallAddress
    popad
  end;
end;

procedure Skill(skillId: DWord);
var
  aParam: TParams; hProcess: Cardinal;
begin
  aParam.Param1 := base_addr;
  aParam.Param2 := skill_addr;
  aParam.Param3 := skillId;
  InjectFunc(hProcess, @SkillCall, @aParam, SizeOf(aParam));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
skill(1111);
end;
end.
Исправил немного ваш код, pw.assistant, теперь запускается без ошибок, но не отправляет скилл. Оффсеты поменял для феникса, вызвал процедуру вроде правильно. Чего еще ему нужно? :C
________________
Помог? - тыкни спасибку
Perfect world Forever ***Skype:slike7 IcQ:358024861

Последний раз редактировалось slike_x; 21.10.2014 в 01:57. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 21.10.2014, 08:06   #17
 Разведчик
Аватар для bestbeer
 
bestbeer никому не известный тип
Регистрация: 06.10.2013
Сообщений: 27
Популярность: 10
Сказал(а) спасибо: 24
Поблагодарили 12 раз(а) в 8 сообщениях
 
По умолчанию Re: Delphi инжект скилла по любому таргету.

Если клиент неидентичен руофу то отличаться могут не только адреса, но и сами ассемблер-вставки.
  Ответить с цитированием
Старый 21.10.2014, 08:40   #18
 Разведчик
Аватар для slike_x
 
slike_x неизвестен в этих краях
Регистрация: 21.11.2010
Сообщений: 41
Популярность: -75
Сказал(а) спасибо: 31
Поблагодарили 25 раз(а) в 12 сообщениях
 
По умолчанию Re: Delphi инжект скилла по любому таргету.

Цитата:
Сообщение от bestbeerПосмотреть сообщение
Если клиент неидентичен руофу то отличаться могут не только адреса, но и сами ассемблер-вставки.

Ну пакет отправлял, при x1C и 0x34
________________
Помог? - тыкни спасибку
Perfect world Forever ***Skype:slike7 IcQ:358024861
  Ответить с цитированием
Старый 21.10.2014, 08:59   #19
 Пехотинец
Аватар для iGesha
 
iGesha скоро будет известенiGesha скоро будет известенiGesha скоро будет известен
Регистрация: 04.12.2013
Сообщений: 66
Популярность: 228
Сказал(а) спасибо: 36
Поблагодарили 43 раз(а) в 24 сообщениях
 
По умолчанию Re: Delphi инжект скилла по любому таргету.

А где в инжекте на отправку пакета используются адреса 0x1C и 0x34? Там вроде только базовый адрес задействован.
Так что вполне может оказаться, что дело в этих адресах.
________________
Кто к нам с чем зачем, тот от того и того...
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).

[Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ]
  Ответить с цитированием
Старый 21.10.2014, 12:14   #20
-= Мастер Света =-
 Рыцарь-капитан
Аватар для Ginrey
 
Ginrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака Норриса
Регистрация: 14.06.2012
Сообщений: 511
Популярность: 7566
Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
 
По умолчанию Re: Delphi инжект скилла по любому таргету.

Цитата:
[Error] Unit1.pas(48): Types of actual and formal var parameters must be identical - ругается так на эту строчку. Что не так было объявлено, видимо

ThreadAddr не может просто так стоять, укажите ее как Pointer то есть
WriteProcessmemory(.., Pointer(ThreadAddr),...,...,...);

Цитата:
Чего еще ему нужно? :C

а что вообще происходит после отправки, краш или просто ничего, и присоединились ли вы к нужному окну?

Добавлено через 2 минуты
а ну я понял

procedure Skill(skillId: DWord);
var
aParam: TParams; hProcess: Cardinal;
begin
aParam.Param1 := base_addr;
aParam.Param2 := skill_addr;
aParam.Param3 := skillId;
InjectFunc(hProcess, @SkillCall, @aParam, SizeOf(aParam));
end;

это гениально создавать внутри процедуры переменную, которая должна быть глобальной, не имеющую никаких значений и использовать ее. И я обычно использовал тип DWORD для данной переменной.
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо"
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).

Делаю программы на заказ, по всем вопросам в скайп: Ginrey2

Последний раз редактировалось Ginrey; 21.10.2014 в 12:18. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 21.10.2014, 13:06   #21
 Разведчик
Аватар для slike_x
 
slike_x неизвестен в этих краях
Регистрация: 21.11.2010
Сообщений: 41
Популярность: -75
Сказал(а) спасибо: 31
Поблагодарили 25 раз(а) в 12 сообщениях
 
По умолчанию Re: Delphi инжект скилла по любому таргету.

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
const
  base_addr = $BBC26C;
  skill_addr = $6B4220;
  GameOfs = $1C;
  GamerOfs = $34;

type
  PParams = ^TParams;
  TParams = packed record
    Param1,Param2,Param3: DWord;
  end;
var
  Form1: TForm1; hProcess: Dword; ProcessID: Cardinal;

implementation

{$R *.dfm}
procedure InjectFunc(ProcessID: Cardinal;Func, aParams: Pointer;
  aParamsSize: DWord);
var
  hThread: THandle;
  lpNumberOfBytes: DWord;
  ThreadAddr, ParamAddr: Pointer;
begin
  if ProcessID<>0 then
  begin
    // ---- Âûäåëÿåì ìåñòî â ïàìÿòè ïðîöåññà, è çàïèñûâàåì òóäà íàøó ôóíêöèþ
    ThreadAddr := VirtualAllocEx(ProcessID, nil, 256, MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory(ProcessID, ThreadAddr, Func, 256, lpNumberOfBytes);

    // ---- Òàêæå çàïèøåì ïàðàìåòðû ê íåé
    ParamAddr := VirtualAllocEx(ProcessID, nil, aParamsSize, MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory(ProcessID, ParamAddr, aParams, aParamsSize, lpNumberOfBytes);

    // ---- Ñîçäàåì ïîòîê, â êîòîðîì âñå ýòî áóäåò âûïîëíÿòüñÿ.
    hThread := CreateRemoteThread(ProcessID, nil, 0, ThreadAddr, ParamAddr, 0, lpNumberOfBytes);

    // ---- Îæèäàåì çàâåðøåíèÿ ôóíêöèè
    WaitForSingleObject(hThread, INFINITE);

    // ---- ïîä÷èùàåì çà ñîáîé
    CloseHandle(hThread);
    VirtualFreeEx(ProcessID, ParamAddr, 0, MEM_RELEASE);
    VirtualFreeEx(ProcessID, ThreadAddr, 0, MEM_RELEASE);
  end
end;
procedure SkillCall(aPParams: PParams); stdcall;
var
  BaseAddr, CallAddress: Pointer;
  P1: DWord;
begin
  BaseAddr := Pointer(aPParams^.Param1);
  CallAddress := Pointer(aPParams^.Param2);
  P1 := aPParams^.Param3;
  asm
    pushad
    mov ecx, BaseAddr
    mov ecx, dword ptr [ecx]
    mov ecx, dword ptr [ecx+GameOfs]
    mov ecx, dword ptr [ecx+GamerOfs]
    push $FFFFFFFF
    push $00
    push $00
    mov edx, P1
    push edx
    call CallAddress
    popad
  end;
end;

procedure Skill(skillId: DWord);
var
  aParam: TParams;
begin
  aParam.Param1 := skillId;
  InjectFunc(hProcess, @SkillCall, @aParam, SizeOf(aParam));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
KlientWindow:HWND;
begin

KlientWindow := FindWindow(nil, PChar(Edit1.Text));
GetWindowThreadProcessId(KlientWindow,@ProcessId);
hProcess := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Skill(1111);
end;

end.
Опять изменил код, теперь крашит клиент, значит я уже близок.
________________
Помог? - тыкни спасибку
Perfect world Forever ***Skype:slike7 IcQ:358024861
  Ответить с цитированием
Старый 21.10.2014, 20:00   #22
-= Мастер Света =-
 Рыцарь-капитан
Аватар для Ginrey
 
Ginrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака Норриса
Регистрация: 14.06.2012
Сообщений: 511
Популярность: 7566
Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
 
По умолчанию Re: Delphi инжект скилла по любому таргету.

Цитата:
теперь крашит клиент

ну значит к окну вы уже присоединились, а вот оффсеты какие то неверные в asm коде, какие у вас увы подсказать не смогу, но ошибка именно там
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо"
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).

Делаю программы на заказ, по всем вопросам в скайп: Ginrey2
  Ответить с цитированием
Старый 21.10.2014, 20:18   #23
 Разведчик
Аватар для fds255
 
fds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известен
Регистрация: 23.06.2012
Сообщений: 43
Популярность: 427
Сказал(а) спасибо: 18
Поблагодарили 59 раз(а) в 35 сообщениях
 
По умолчанию Re: Delphi инжект скилла по любому таргету.

Цитата:
Опять изменил код, теперь крашит клиент, значит я уже близок.

slike_x, будь внимательнее:

Код:
procedure SkillCall(aPParams: PParams); stdcall;
var
  BaseAddr, CallAddress: Pointer;
  P1: DWord;
begin
  BaseAddr := Pointer(aPParams^.Param1);
  CallAddress := Pointer(aPParams^.Param2);
  P1 := aPParams^.Param3;
  asm
    pushad
    mov ecx, BaseAddr
    mov ecx, dword ptr [ecx]
    mov ecx, dword ptr [ecx+GameOfs]
    mov ecx, dword ptr [ecx+GamerOfs]
    push $FFFFFFFF
    push $00
    push $00
    mov edx, P1
    push edx
    call CallAddress
    popad
  end;
end;
procedure Skill(skillId: DWord);
var
aParam: TParams;
begin

aParam.Param1 := skillId; //в Param1 пишешь skillId, а в предыдущей функции
передаешь это значение в BaseAddr

А Param2 и Param3 передавать не нужно, как думаешь???

Полагаю должно быть что-то типа:
aParam.Param1 :=base_addr;
aParam.Param2 :=skill_addr;
aParam.Param3 :=skillId;


InjectFunc(hProcess, @SkillCall, @aParam, SizeOf(aParam));
end;
________________

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).


Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  Ответить с цитированием
Старый 21.10.2014, 21:18   #24
 Разведчик
Аватар для slike_x
 
slike_x неизвестен в этих краях
Регистрация: 21.11.2010
Сообщений: 41
Популярность: -75
Сказал(а) спасибо: 31
Поблагодарили 25 раз(а) в 12 сообщениях
 
По умолчанию Re: Delphi инжект скилла по любому таргету.

Да, вроде другие мещения,оффсеты верные. Как найти смещения именно для этой функции? Не стоит давать мне ссылку, лучше кратко объясните.
Да я заметил это, передавал, все-равно крашит. Все-таки смещения неправильные, хотя смещения отправки пакета такие же ($34, $1C);
________________
Помог? - тыкни спасибку
Perfect world Forever ***Skype:slike7 IcQ:358024861
  Ответить с цитированием
Старый 22.10.2014, 00:08   #25
-= Мастер Света =-
 Рыцарь-капитан
Аватар для Ginrey
 
Ginrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака Норриса
Регистрация: 14.06.2012
Сообщений: 511
Популярность: 7566
Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
 
По умолчанию Re: Delphi инжект скилла по любому таргету.

Цитата:
Не стоит давать мне ссылку, лучше кратко объясните.

если в кратце берем CE и ищем ))


Цитата:
хотя смещения отправки пакета такие же ($34, $1C);

0х1С и 0х34, эти смещения используются в указание на структуру персонажа, разве тут именно они используются?
откройте дизассемблером клиент и найдите по ASM вставке эту структуру и сразу во всем разберетесь, если конечно ассемблер хоть чуть чуть знаете
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо"
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).

Делаю программы на заказ, по всем вопросам в скайп: Ginrey2

Последний раз редактировалось Ginrey; 22.10.2014 в 00:14.
  Ответить с цитированием
Старый 22.10.2014, 11:32   #26
 Сержант
Аватар для pw.assistant
 
pw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауру
Регистрация: 16.02.2012
Сообщений: 105
Популярность: 651
Сказал(а) спасибо: 19
Поблагодарили 39 раз(а) в 31 сообщениях
 
По умолчанию Re: Delphi инжект скилла по любому таргету.

Цитата:
Types of actual and formal var parameters must be identical - ругается так на эту строчку.

У нас разные версии Delphi. Раньше тип для некоторых параметров был dword, с какой-то версии Delphi он стал NativeUInt. По количеству байт то же самое, но Delphi ругается. Что касаемо того, что пакеты нормально отправляются, так пакет не изменился, а код в клиенте разный может быть, помимо адресов. Так что найдите этот код в клиенте и вставьте тот что у вашего клиента.
________________
backup - акт проявления трусости
  Ответить с цитированием
Старый 22.10.2014, 12:00   #27
-= Мастер Света =-
 Рыцарь-капитан
Аватар для Ginrey
 
Ginrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака Норриса
Регистрация: 14.06.2012
Сообщений: 511
Популярность: 7566
Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
 
По умолчанию Re: Delphi инжект скилла по любому таргету.

поэтому проще берите инжект пакета и работайте с ним
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо"
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).

Делаю программы на заказ, по всем вопросам в скайп: Ginrey2
  Ответить с цитированием
Ответ


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] ID скилла найти OliWiii Общение и обсуждение Perfect World 0 19.02.2014 11:38
Откат скилла [Kira] Общение разработчиков 7 11.02.2013 21:32
[Руководство] Настраиваем Delphi 2010/XE, чтобы она выглядела как Delphi 7 RifmoGlas Pascal/Delphi 2 09.02.2013 14:09
ID Скилла STIL23 Общение разработчиков 6 06.08.2012 22:04
Инжект на Delphi XE2 STIL23 Общение разработчиков 0 03.07.2012 21:32

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

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

Пишите нам: forum@zhyk.ru
Copyright © 2025 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net