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

Delphi XE2

-

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

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

Ответ
 
Опции темы
Старый 11.07.2012, 11:56   #16
Заблокирован
 Сержант
Аватар для STIL23
 
STIL23 на правильном пути
Регистрация: 19.12.2009
Сообщений: 130
Популярность: 34
Сказал(а) спасибо: 21
Поблагодарили 86 раз(а) в 32 сообщениях
 
По умолчанию Re: Delphi XE2

С поиском окна нет проблем. Мне больше нужна информация как сделать так чтобы все пакеты шли только на того перса которого выберешь
  Ответить с цитированием
Старый 11.07.2012, 13:15   #17
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: Delphi XE2

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

. . .

var
  FID:array[0..9] of DWord;

. . .

procedure FindClientPW;
var
Wnd:THandle;
Hndl,Nick,Cl:array[0..255] of Char;
ibuf,BC,hProcess:size_t;
i:Integer;
const
BA=$00A571E0;
begin
i:=0;
Wnd:=FindWindow(nil,nil);
 while Wnd<>0 do
  begin
  GetClassName(Wnd,Cl,100);
   if Cl='ElementClient Window' then
    begin
    GetWindowText(Wnd,Hndl,SizeOf(Hndl));
    GetWindowThreadProcessId(Wnd,@FID[i]);
    hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,FID[i]);
    ReadProcessMemory(hProcess,ptr(BA),@ibuf,sizeof(ibuf),BC);
    ReadProcessMemory(hProcess,ptr(ibuf+$1C),@ibuf,sizeof(ibuf),BC);
    ReadProcessMemory(hProcess,ptr(ibuf+$34),@ibuf,sizeof(ibuf),BC);
    ReadProcessMemory(hProcess,ptr(ibuf+$66C),@ibuf,sizeof(ibuf),BC);
    ReadProcessMemory(hProcess,ptr(ibuf),@Nick,sizeof(Nick),BC);
    Form1.ComboBox1.Items.Add('Handle: '+Hndl+'; Nick: '+Nick+';');
    inc(i);
    end;
  Wnd:=GetNextWindow(Wnd,GW_HWNDNEXT);
  Application.ProcessMessages;
  end;
CloseHandle(hProcess);
end;

. . .

procedure TForm1.FormCreate(Sender: TObject);
begin
FindClientPW;
end;

. . .

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

    // ---- Ожидаем завершения функции
  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(;$0063DB70);
Len:=aPParams^.Param1;
pPacket:=@aPParams^.Packet;
 asm
 pushad
 mov ecx, dword ptr [$A571E0]
 mov ecx, dword ptr [ecx+$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 1 do
  begin
  aParams.Packet[i]:=strtoint('$'+Packet[i*2+1]+Packet[i*2+2]);
  end;
end;

. . .

procedure Packet(Packet:string);
var
aParams:TParams;
hProcess:DWord;
begin
hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,FID[ComboBox1.ItemIndex]);
StrToByte(Packet,aParams);
InjectFunc(hProcess,@PacketCall,@aParams,sizeof(aParams));
CloseHandle(hProcess);
end;

. . .

procedure TForm1.Button1Click(Sender: TObject);
begin
Packet({тут пакет, что ты хочешь отправить});
end;

. . .

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

Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.

Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.


  Ответить с цитированием
Старый 11.07.2012, 17:15   #18
-= Мастер Света =-
 Рыцарь-капитан
Аватар для Ginrey
 
Ginrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака Норриса
Регистрация: 14.06.2012
Сообщений: 511
Популярность: 7566
Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
 
По умолчанию Re: Delphi XE2

Цитата:
Сообщение от STIL23Посмотреть сообщение
С поиском окна нет проблем. Мне больше нужна информация как сделать так чтобы все пакеты шли только на того перса которого выберешь

все очень просто. зайди в скайп я уже давно все сделал. если что подскажу.
хотя довольно внятный ответ уже дали
  Ответить с цитированием
Ответ


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] Delphi NewSnoopy Общение и обсуждение 22 16.11.2011 22:11
[Информация] Помощь в Delphi 7 и в других версиях Delphi Babls77 Pascal/Delphi 4 03.11.2011 22:27
Delphi 7! danil_ Общение и обсуждение CrossFire 5 12.07.2011 07:56

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

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

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