 |
все тежи инжекты на делфи.. - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок |
25.06.2012, 08:55
|
#1
|
|
|
|
Пехотинец
|
 Регистрация: 20.08.2009
 Сообщений: 90
 Популярность: 173
 Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
|
все тежи инжекты на делфи..
при компиляции ругается на неизвестный идентификатор ProcessID в строчке
InjectFunc(ProcessID,@PacketCall,@aParams,sizeof(a Params));
 |
Цитата: |
 |
|
|
|
|
|
|
|
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure Edit1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type
PParams = ^TParams;
TParams = packed record
Packet: array [0..100] of byte;
Param1,WID: DWord;
end;
const
PW_BASE_ADDRESS = $00A571E0;
PW_GAMERUN_ADDR = $00A57ACC;
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 PacketCall(aPParams:PParams); stdcall;
var
CallAddress,pPacket ointer;
Len Word;
begin
CallAddress:=Pointer($0063DB70);
Len:=aPParams^.Param1;
pPacket:=@aPParams^.Packet;
asm
pushad
mov ecx, dword ptr [PW_BASE_ADDRESS]
mov ecx, dword ptr [ecx+$20] // тут не 34, а 20, это не PersStruct
push Len
push pPacket
call CallAddress
popad
end;
end;
procedure StrToByte(Packet:string; var aParams:TParams);
var
i:integer;
begin
i:=(length(Packet) div 2)-1;
aParams.Param1:=i+1;
for i:=0 to i do
aParams.Packet[i]:=strtoint('$'+Packet[i*2+1]+Packet[i*2+2]);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
aParams : TParams;
Packet:string;
begin
Packet:='$2500070000000C000000C85C0000000000000000 0000';
StrToByte(Packet,aParams);
InjectFunc(ProcessID,@PacketCall,@aParams,sizeof(a Params));
end;
end. |
|
 |
|
 |
|
|
|
|
25.06.2012, 11:07
|
#2
|
|
|
|
Пехотинец
|
 Регистрация: 19.02.2010
 Сообщений: 98
 Популярность: 650
 Сказал(а) спасибо: 23
Поблагодарили 150 раз(а) в 45 сообщениях
|
Re: все тежи инжекты на делфи..
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure Edit1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type
PParams = ^TParams;
TParams = packed record
Packet: array [0..100] of byte;
Param1,WID: DWord;
end;
const
PW_BASE_ADDRESS = $00A571E0;
PW_GAMERUN_ADDR = $00A57ACC;
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 PacketCall(aPParams:PParams); stdcall;
var
CallAddress,pPacket:Pointer;
Len  Word;
begin
CallAddress:=Pointer($6737B0); //адрес был устаревший
Len:=aPParams^.Param1;
pPacket:=@aPParams^.Packet;
asm
pushad
mov ecx, dword ptr [$B27A04]
mov ecx, dword ptr [ecx+$20] //20
push Len
push pPacket
call CallAddress
popad
end;
end;
procedure StrToByte(Packet:string; var aParams:TParams);
var
i:integer;
begin
i:=(length(Packet) div 2)-1;
aParams.Param1:=i+1;
for i:=0 to i do
aParams.Packet[i]:=strtoint('$'+Packet[i*2+1]+Packet[i*2+2]);
end;
procedure Packet(Packet: string);
var
aParams: TParams;
PID, hProcess: DWord;
begin
GetWindowThreadProcessId(WID, @PID);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS, False, PID);
StrToByte(Packet,aParams);
InjectFunc(hProcess,@PacketCall,@aParams,sizeof(aP arams));
CloseHandle(hProcess); //забыл дописать
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Packet('2500070000000C000000C85C000000000000000000 00');
end;
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Автор программы PwRuf - Bot и PwRuf - Crafter
|
|
|
Пользователь сказал cпасибо:
|
|
25.06.2012, 11:52
|
#3
|
|
|
|
Рыцарь-капитан
|
 Регистрация: 07.10.2009
 Сообщений: 496
 Популярность: 2687
 Сказал(а) спасибо: 64
Поблагодарили 325 раз(а) в 105 сообщениях
|
Re: все тежи инжекты на делфи..
rufat2005, добавь теги CODE и убери отображение смайлов, пожалуйста.
________________
--------------------------------------------
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------
|
|
|
25.06.2012, 12:39
|
#4
|
|
|
|
Пехотинец
|
 Регистрация: 20.08.2009
 Сообщений: 90
 Популярность: 173
 Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
|
Re: все тежи инжекты на делфи..
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
btn1: TButton;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type
PParams = ^TParams;
TParams = packed record
Packet: array [0..100] of byte;
Param1,WID: DWord;
end;
const
PW_BASE_ADDRESS = $00A571E0;
PW_GAMERUN_ADDR = $00A57ACC;
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 PacketCall(aPParams:PParams); stdcall;
var
CallAddress,pPacket:Pointer;
Len: DWord;
begin
CallAddress:=Pointer($6737B0); //адрес был устаревший
Len:=aPParams^.Param1;
pPacket:=@aPParams^.Packet;
asm
pushad
mov ecx, dword ptr [$B27A04]
mov ecx, dword ptr [ecx+$20] //20
push Len
push pPacket
call CallAddress
popad
end;
end;
procedure StrToByte(Packet:string; var aParams:TParams);
var
i:integer;
begin
i:=(length(Packet) div 2)-1;
aParams.Param1:=i+1;
for i:=0 to i do
aParams.Packet[i]:=strtoint('$'+Packet[i*2+1]+Packet[i*2+2]);
end;
procedure Packet(Packet: string);
var
aParams: TParams;
PID, hProcess: DWord;
begin
GetWindowThreadProcessId( FindWindow('ElementClient Window', nil), @PID);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS, False, PID);
StrToByte(Packet,aParams);
InjectFunc(hProcess,@PacketCall,@aParams,sizeof(aParams));
CloseHandle(hProcess); //забыл дописать
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
Packet('2500070000000C000000C45C00000000000000000000');
end;
end.
если прописать
 |
Цитата: |
 |
|
|
|
|
|
|
|
GetWindowThreadProcessId( FindWindow('ElementClient Window', nil), @PID); |
|
 |
|
 |
|
то светофорит, а если прописать
 |
Цитата: |
 |
|
|
|
|
|
|
|
GetWindowThreadProcessId(WID, @PID); |
|
 |
|
 |
|
то не реагирует, в чем проблема?
|
|
|
25.06.2012, 15:54
|
#5
|
|
|
|
Сержант
|
 Регистрация: 11.12.2010
 Сообщений: 110
 Популярность: 541
 Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
|
Re: все тежи инжекты на делфи..
tianddu, вероятно, что, в отличие от второго, в первом случае процесс успешно открывается
________________
Принимаю реквесты на статьи, программы. Всё будет запилено в лучшем виде :3
|
|
|
25.06.2012, 15:56
|
#6
|
|
|
|
Пехотинец
|
 Регистрация: 20.08.2009
 Сообщений: 90
 Популярность: 173
 Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
|
Re: все тежи инжекты на делфи..
а почему тогда светофорит?)адреса не правильные?
просто то что выложил rufat2005, не отзывается никак(
|
|
|
25.06.2012, 17:05
|
#7
|
|
|
|
Сержант
|
 Регистрация: 11.12.2010
 Сообщений: 110
 Популярность: 541
 Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
|
Re: все тежи инжекты на делфи..
Дело либо в адресах и смещениях, либо в неправильном внедрении кода.
________________
Принимаю реквесты на статьи, программы. Всё будет запилено в лучшем виде :3
|
|
|
25.06.2012, 18:07
|
#8
|
|
|
|
Пехотинец
|
 Регистрация: 20.08.2009
 Сообщений: 90
 Популярность: 173
 Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
|
Re: все тежи инжекты на делфи..
BritishColonist, если не затруднит посмотрите код в 4 посте) адреса от середины мая...вроде должны быть правильными
|
|
|
25.06.2012, 18:41
|
#9
|
|
|
|
Пехотинец
|
 Регистрация: 21.03.2012
 Сообщений: 83
 Популярность: 1178
 Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
|
Re: все тежи инжекты на делфи..
Это как это так? Не ошибка случайно?
Тогда уж вот так
Код:
procedure StrToByte(Packet:string; var aParams:TParams);
var
n,i:integer;
begin
n:=(length(Packet) div 2)-1;
aParams.Param1:=i+1;
for i:=0 to n do
aParams.Packet[i]:=strtoint('$'+Packet[i*2+1]+Packet[i*2+2]);
end;
________________
╔═╗
║ ˑ ˑ ╬ ╬
╚═╝
Последний раз редактировалось dwa83; 25.06.2012 в 19:00.
|
|
|
25.06.2012, 19:05
|
#10
|
|
|
|
Пехотинец
|
 Регистрация: 20.08.2009
 Сообщений: 90
 Популярность: 173
 Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
|
Re: все тежи инжекты на делфи..
взято из шапки в теме http://zhyk.ru/forum/showthread.php?t=144558 не думаю что там не правильно)
|
|
|
25.06.2012, 19:41
|
#11
|
|
|
|
Пехотинец
|
 Регистрация: 21.03.2012
 Сообщений: 83
 Популярность: 1178
 Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
|
Re: все тежи инжекты на делфи..
Хмм.. Может в делфи и не так, но в с++ такая конструкция либо не выполнится ни раза (условие продолжения цикла i<i) либо зависнет в бесконечном цикле (условие продолжения цикла i<=i)..
________________
╔═╗
║ ˑ ˑ ╬ ╬
╚═╝
|
|
|
Пользователь сказал cпасибо:
|
|
25.06.2012, 20:07
|
#12
|
|
|
|
Пехотинец
|
 Регистрация: 20.08.2009
 Сообщений: 90
 Популярность: 173
 Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
|
Re: все тежи инжекты на делфи..
то есть всех инжект пакетов в течении полтора года устраивал?)
|
|
|
26.06.2012, 03:55
|
#13
|
|
|
|
Сержант
|
 Регистрация: 11.12.2010
 Сообщений: 110
 Популярность: 541
 Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
|
Re: все тежи инжекты на делфи..
tianddu, если этот код используется для руофа, то дело в первую очередь в старых адресах, стоит заменить их на новые.
________________
Принимаю реквесты на статьи, программы. Всё будет запилено в лучшем виде :3
|
|
|
Пользователь сказал cпасибо:
|
|
26.06.2012, 08:07
|
#14
|
|
|
|
Пехотинец
|
 Регистрация: 20.08.2009
 Сообщений: 90
 Популярность: 173
 Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
|
Re: все тежи инжекты на делфи..
BritishColonist, ну базовый адрес верный. Измененный инжект на середину мая(под текущую версию клиента) от dwa83 http://zhyk.ru/forum/showpost.php?p=...&postcount=182, да даже адрес для инжекта PackCall 0063DB70 новый, не пойму в чем дело(
Использую для руофа... одно не пойму почему
Код:
mov ecx, dword ptr [edx+$20]
именно +20
Добавлено через 43 минуты
всем спасибо за помощь не заметил что mov ecx, dword ptr [$B27A04] надо заменить на mov ecx, dword ptr [PW_BASE_ADDRESS]
Последний раз редактировалось tianddu; 26.06.2012 в 08:50.
Причина: Добавлено сообщение
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 01:16.
|
 |