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

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

-

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

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

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

Сообственно, как сделать инжект скилла(либо отправка пакета скилла) в делфи по любому таргету, ведь как известно пакет "привязывается к таргету". Никак не могу придумать как это реализовать, чтобы не менять код после каждой смены таргета. В долгу не останусь.
________________
Помог? - тыкни спасибку
Perfect world Forever ***Skype:slike7 IcQ:358024861
  Ответить с цитированием
Старый 20.10.2014, 15:27   #2
 Пехотинец
Аватар для ToRcH2565
 
ToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известен
Регистрация: 02.08.2009
Сообщений: 57
Популярность: 417
Сказал(а) спасибо: 12
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Delphi инжект скилла по любому таргету.

Эмм, оО
  Ответить с цитированием
Старый 20.10.2014, 16:09   #3
 Разведчик
Аватар для bestbeer
 
bestbeer никому не известный тип
Регистрация: 06.10.2013
Сообщений: 27
Популярность: 10
Сказал(а) спасибо: 24
Поблагодарили 12 раз(а) в 8 сообщениях
 
По умолчанию Re: Delphi инжект скилла по любому таргету.

Цитата:
Сообственно, как сделать инжект скилла(либо отправка пакета скилла) в делфи по любому таргету, ведь как известно пакет "привязывается к таргету". Никак не могу придумать как это реализовать, чтобы не менять код после каждой смены таргета. В долгу не останусь.

Ты бы сначала форум полистал.
Я выкладывал обновленный инжект на скил. (кастуеется как будто жмем на панели, инжектится такое инжектором)

Delphi:
Код:
CallAddress:=Pointer($0047CBF0);
P1:=aPParams^.Param1;//DWord скил
Po1:=Pointer(P1);//pointer
 asm
 pushad

MOV ECX,DWORD PTR DS:[$0C9DFAC]
MOV EDX,DWORD PTR DS:[ECX+$1C]
MOV ESI,DWORD PTR DS:[EDX+$30]

push -1 // -1
push 0
push 0

mov ecx,Po1  // указатель на скил
push ecx

mov ecx,esi

CALL CallAddress

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

Цитата:
Сообщение от bestbeerПосмотреть сообщение
Ты бы сначала форум полистал.
Я выкладывал обновленный инжект на скил. (кастуеется как будто жмем на панели, инжектится такое инжектором)

Delphi:
Код:
CallAddress:=Pointer($0047CBF0);
P1:=aPParams^.Param1;//DWord скил
Po1:=Pointer(P1);//pointer
 asm
 pushad

MOV ECX,DWORD PTR DS:[$0C9DFAC]
MOV EDX,DWORD PTR DS:[ECX+$1C]
MOV ESI,DWORD PTR DS:[EDX+$30]

push -1 // -1
push 0
push 0

mov ecx,Po1  // указатель на скил
push ecx

mov ecx,esi

CALL CallAddress

 popad
end;

Указатель на скилл? Там что-то нужно написать? Или эту команду нужно как-то вызвать? Сначала пишу инжект памяти, потом этот инжект, да? А как именно отправить скилл? Что на кнопку поставить?
________________
Помог? - тыкни спасибку
Perfect world Forever ***Skype:slike7 IcQ:358024861
  Ответить с цитированием
Старый 20.10.2014, 16:47   #5
 Разведчик
Аватар для bestbeer
 
bestbeer никому не известный тип
Регистрация: 06.10.2013
Сообщений: 27
Популярность: 10
Сказал(а) спасибо: 24
Поблагодарили 12 раз(а) в 8 сообщениях
 
По умолчанию Re: Delphi инжект скилла по любому таргету.

P1 - id скила.
Держи сорц старой библиотеки. Написана она давно, функции обновил(работать должна), так что код там не идеален. Думаю разберешся при желании, ничего сложного в инжектах нет. Надеюсь лайкнеш хоть).
Вложения
Тип файла: txt qwt.txt (5.0 Кб, 52 просмотров)

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

Цитата:
P1 - id скила.
Держи сорц старой библиотеки. Написана она давно, функции обновил(работать должна), так что код там не идеален. Думаю разберешся при желании, ничего сложного в инжектах нет. Надеюсь лайкнеш хоть).

Так а как вызвать сам инжект? Ну всмысле на кнопку поставить?
________________
Помог? - тыкни спасибку
Perfect world Forever ***Skype:slike7 IcQ:358024861
  Ответить с цитированием
Старый 20.10.2014, 19:09   #7
 Разведчик
Аватар для bestbeer
 
bestbeer никому не известный тип
Регистрация: 06.10.2013
Сообщений: 27
Популярность: 10
Сказал(а) спасибо: 24
Поблагодарили 12 раз(а) в 8 сообщениях
 
По умолчанию Re: Delphi инжект скилла по любому таргету.

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

Цитата:
Открываеш процесс пв, в событии клика кнопки вызываеш процедуру Skill, передаеш параметры(открытый процесс, айди скила).

Код:
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;
Type
  PParams = ^TParams;
  TParams = packed record
    Packet: array [0..100] of byte;
    Param1,Param2,Param3: DWord;
    Param4: array [1..100] of widechar;
  end;

type
  P3DPoint = ^T3DPoint;
  T3DPoint = packed record
    Px, Py, Pz: DWORD;
  end;


   const
  BaseAdress = $BBC26C;
var
  Form1: TForm1; ProcessId: Cardinal;

implementation

{$R *.dfm}
procedure PackedCall(aPParams:PParams); stdcall;
var
  CallAddress,pPacket:pointer;
  Len:DWord;
begin
  CallAddress:=Pointer($6B4220);
  Len:=aPParams^.Param1;
  pPacket:=@aPParams^.Packet;
  asm
    pushad
    mov ecx, dword ptr [BaseAdress]
    mov ecx, dword ptr [ecx+$20]
    push Len
    push pPacket
    call CallAddress
    popad
  end;
end;

procedure InjectFunc(ProcessID: Cardinal; aParams: Pointer; aParamsSize: DWORD);stdcall;export;
var
  hThread: THandle;
  qzq   : cardinal;
  lpNumberOfBytes: Cardinal;
  ThreadAddr, ParamAddr: Pointer;
begin
  if ProcessID<>0 then
  begin
    ThreadAddr := VirtualAllocEx(ProcessID, nil, 256, MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory(ProcessID, ThreadAddr, @PackedCall, 256, qzq);
    ParamAddr := VirtualAllocEx(ProcessID, nil, sizeof(TParams), MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory(ProcessID, ParamAddr, aParams, aParamsSize, qzq);
    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 InjectFunc1(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 StrToByte(bytecode:string; var aParams:TParams);
var
  i:integer;
begin
  i:=(length(bytecode) div 2)-1;
  aParams.Param1:=i+1;
  for i:=0 to i do
    aParams.Packet[i]:=strtoint('$'+bytecode[i*2+1]+bytecode[i*2+2]);
end;


Procedure Packet(pid:Cardinal;tPacket: string);stdcall;export;
var
  aParams: TParams;
begin
  StrToByte(tPacket,aParams);
  InjectFunc(PID,@aParams,sizeof(aParams))
end;




Function GetByte(Aint: Integer):string;
Var
  Bytes: array of Byte;
begin
  Result:='';
  SetLength(Bytes, SizeOf(AInt));
  CopyMemory(Bytes, @Aint, SizeOf(AInt));
  Result:=IntToHex(bytes[0],2)+IntToHex(bytes[1],2)+IntToHex(bytes[2],2)+IntToHex(bytes[3],2);
  SetLength(Bytes,0);
end;





Procedure AddPacket(ProcID:Cardinal;ttPacket:string);stdcall;export;
Begin
  Packet(ProcID,ttPacket);
End;


  procedure SkillCall(aPParams:PParams);stdcall;export;
var CallAddress:pointer;
    Po1:pointer;
    P1:DWord;
begin
CallAddress:=Pointer($0047CBF0);
P1:=aPParams^.Param1;//DWord
Po1:=Pointer(P1);//pointer
 asm
 pushad

MOV ECX,DWORD PTR DS:[$0C9DFAC]
MOV EDX,DWORD PTR DS:[ECX+$1C]
MOV ESI,DWORD PTR DS:[EDX+$30]

push -1 // -1
push 0
push 0

mov ecx,Po1  // ????????? ?? ????
push ecx

mov ecx,esi

CALL CallAddress

 popad
end;



end;


procedure Skill(ProcessID:Cardinal;SkillID:Cardinal);stdcall;export;
var
 aParams: TParams;

begin
  aParams.Param1:=SkillID;
  InjectFunc1(ProcessID,@SkillCall,@aParams,SizeOf(aParams));
end;







Exports Skill;
Exports  AddPacket;


procedure TForm1.Button1Click(Sender: TObject);
var
KlientWindow:HWND;
  ProcessId:Integer;
  hProcess:Integer;
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(ProcessID,555);
end;

end.
Вот так?
________________
Помог? - тыкни спасибку
Perfect world Forever ***Skype:slike7 IcQ:358024861
  Ответить с цитированием
Старый 20.10.2014, 21:55   #9
 Разведчик
Аватар для bestbeer
 
bestbeer никому не известный тип
Регистрация: 06.10.2013
Сообщений: 27
Популярность: 10
Сказал(а) спасибо: 24
Поблагодарили 12 раз(а) в 8 сообщениях
 
По умолчанию Re: Delphi инжект скилла по любому таргету.

Цитата:
Skill(ProcessID,555);

ProcessID замени на hProcess . Ну и даю совет - тесты лучше делать на левых акках(555-темное море совсем не левыый акк ).

Добавлено через 4 минуты
Ну и если не будеш компилить либу то убери экспорты.

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

Цитата:
ProcessID замени на hProcess . Ну и даю совет - тесты лучше делать на левых акках(555-темное море совсем не левыый акк ).

Добавлено через 4 минуты
Ну и если не будеш компилить либу то убери экспорты.

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

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

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

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

Нигде не видел, как это реализовать. И не первый день.
________________
Помог? - тыкни спасибку
Perfect world Forever ***Skype:slike7 IcQ:358024861
  Ответить с цитированием
Старый 20.10.2014, 22:34   #13
 Разведчик
Аватар для bestbeer
 
bestbeer никому не известный тип
Регистрация: 06.10.2013
Сообщений: 27
Популярность: 10
Сказал(а) спасибо: 24
Поблагодарили 12 раз(а) в 8 сообщениях
 
По умолчанию Re: Delphi инжект скилла по любому таргету.

Ну ты бы написал как ругается то). Я уже давно дельфи забросил и все реализовал на своем языке. Предполагаю что несоответствие типов, попробуй найти функцию которая переводит значение к типу - cardinal .
  Ответить с цитированием
Старый 21.10.2014, 00:41   #14
 Разведчик
Аватар для 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;
Type
  PParams = ^TParams;
  TParams = packed record
    Packet: array [0..100] of byte;
    Param1,Param2,Param3: DWord;
    Param4: array [1..100] of widechar;
  end;

type
  P3DPoint = ^T3DPoint;
  T3DPoint = packed record
    Px, Py, Pz: DWORD;
  end;


   const
  BaseAdress = $00BBC26C;
var
  Form1: TForm1;   hProcess:Integer;

implementation

{$R *.dfm}
procedure PackedCall(aPParams:PParams); stdcall;
var
  CallAddress,pPacket:pointer;
  Len:DWord;
begin
  CallAddress:=Pointer($006B4220);
  Len:=aPParams^.Param1;
  pPacket:=@aPParams^.Packet;
  asm
    pushad
    mov ecx, dword ptr [BaseAdress]
    mov ecx, dword ptr [ecx+$20]
    push Len
    push pPacket
    call CallAddress
    popad
  end;
end;

procedure InjectFunc(ProcessID: Cardinal; aParams: Pointer; aParamsSize: DWORD);stdcall;export;
var
  hThread: THandle;
  qzq   : cardinal;
  lpNumberOfBytes: Cardinal;
  ThreadAddr, ParamAddr: Pointer;
begin
  if ProcessID<>0 then
  begin
    ThreadAddr := VirtualAllocEx(ProcessID, nil, 256, MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory(ProcessID, ThreadAddr, @PackedCall, 256, qzq);
    ParamAddr := VirtualAllocEx(ProcessID, nil, sizeof(TParams), MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory(ProcessID, ParamAddr, aParams, aParamsSize, qzq);
    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 InjectFunc1(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 StrToByte(bytecode:string; var aParams:TParams);
var
  i:integer;
begin
  i:=(length(bytecode) div 2)-1;
  aParams.Param1:=i+1;
  for i:=0 to i do
    aParams.Packet[i]:=strtoint('$'+bytecode[i*2+1]+bytecode[i*2+2]);
end;


Procedure Packet(pid:Cardinal;tPacket: string);stdcall;export;
var
  aParams: TParams;
begin
  StrToByte(tPacket,aParams);
  InjectFunc(PID,@aParams,sizeof(aParams))
end;




Function GetByte(Aint: Integer):string;
Var
  Bytes: array of Byte;
begin
  Result:='';
  SetLength(Bytes, SizeOf(AInt));
  CopyMemory(Bytes, @Aint, SizeOf(AInt));
  Result:=IntToHex(bytes[0],2)+IntToHex(bytes[1],2)+IntToHex(bytes[2],2)+IntToHex(bytes[3],2);
  SetLength(Bytes,0);
end;





Procedure AddPacket(ProcID:Cardinal;ttPacket:string);stdcall;export;
Begin
  Packet(ProcID,ttPacket);
End;


  procedure SkillCall(aPParams:PParams);stdcall;export;
var CallAddress:pointer;
    Po1:pointer;
    P1:DWord;
begin
CallAddress:=Pointer($006B4220);
P1:=aPParams^.Param1;//DWord
Po1:=Pointer(P1);//pointer
 asm
 pushad

MOV ECX,DWORD PTR DS:[BaseAdress]
MOV EDX,DWORD PTR DS:[ECX+$1C]
MOV ESI,DWORD PTR DS:[EDX+$30]

push -1 // -1
push 0
push 0

mov ecx,Po1  // ????????? ?? ????
push ecx

mov ecx,esi

CALL CallAddress

 popad
end;



end;


procedure Skill(ProcessID:Cardinal;SkillID:Cardinal);stdcall;export;
var
 aParams: TParams;

begin
  aParams.Param1:=SkillID;
  InjectFunc1(ProcessID,@SkillCall,@aParams,SizeOf(aParams));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
KlientWindow:HWND;
  ProcessId:Integer;
  hProcess:Integer;
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(hProcess,1111);
end;

end.
Вот полный код, объявил глобально hProcess : Cardinal, программа запускается, пишу в edit1 название окна, привязываю к окну программу, жму кнопку 2, но скилл не отправляет? В чем может быть проблема? добавь меня в скайп, если не трудно ( в подписи скайп ).
________________
Помог? - тыкни спасибку
Perfect world Forever ***Skype:slike7 IcQ:358024861
  Ответить с цитированием
Старый 21.10.2014, 00:42   #15
 Сержант
Аватар для pw.assistant
 
pw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауру
Регистрация: 16.02.2012
Сообщений: 105
Популярность: 651
Сказал(а) спасибо: 19
Поблагодарили 39 раз(а) в 31 сообщениях
 
По умолчанию Re: Delphi инжект скилла по любому таргету.

Код:
const
// для руоф
  base_addr = $C9DFAC;
  skill_addr = $47CBF0;
  GameOfs = $1C;
  GamerOfs = $34;

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

  procedure InjectFunc(ProcessID: NativeUInt; Func, aParams: Pointer; aParamsSize: NativeUInt);
  var
    hThread: THandle;
    lpNumberOfBytes: NativeUInt;
    lpThreadId: Cardinal;
    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, lpThreadId);

      // ---- Ожидаем завершения функции
      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 := base_addr;
  aParam.Param2 := skill_addr;
  aParam.Param3 := skillId;
  InjectFunc(_hProcess, @SkillCall, @aParam, SizeOf(aParam));
end;
Вызывать Skill(ID скила);
________________
backup - акт проявления трусости

Последний раз редактировалось pw.assistant; 21.10.2014 в 00:50.
  Ответить с цитированием
Пользователь сказал cпасибо:
slike_x (21.10.2014)
Ответ


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

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:33.

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