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

Неправильная отправка

-

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

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

Ответ
 
Опции темы
Старый 22.07.2012, 11:13   #1
Заблокирован
 Сержант
Аватар для STIL23
 
STIL23 на правильном пути
Регистрация: 19.12.2009
Сообщений: 130
Популярность: 34
Сказал(а) спасибо: 21
Поблагодарили 86 раз(а) в 32 сообщениях
 
Question Неправильная отправка

Всем привет возникла проблема: функция отказывается отправлять пакет
Код:
2800000010B0067300000
. Пакеты медетации шлет, юзания скилов тоже , а именно этот пакет отказывается . Через PwPacketListner пакет этот отправляется. А когда я отправляю пакет через свою программу PwPacketListner пишет , что отправляется пакет
Код:
 28000000000000000000
вместо данного . Кто может объяснить в чем проблема ? У друга работает- пакет отправляется. Функция вот:
Код:
unit Unit2;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, sButton, sComboBox;

type
  TForm2 = class(TForm)
    sComboBox1: TsComboBox;
    sButton1: TsButton;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 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;

var
  Form2: TForm2;

implementation

{$R *.dfm}
  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($63DB70); //адрес был устаревший
 Len:=aPParams^.Param1;
 pPacket:=@aPParams^.Packet;
 asm
 pushad
 mov ecx, dword ptr [$A571E0]
 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 1 do
 aParams.Packet[i]:=strtoint('$'+Packet[i*2+1]+Packet[i*2+2]);
 end;

procedure Packet(Packet: string);
var
   aParams: TParams;
   PID, hProcess: DWord;
   wnd: THandle;
 begin
 wnd:=FindWindow(nil,'Perfect World');
      GetWindowThreadProcessId(wnd, @PID);
      hProcess:=OpenProcess(PROCESS_ALL_ACCESS, False, PID);
      StrToByte(Packet,aParams);
      InjectFunc(hProcess,@PacketCall,@aParams,sizeof(aParams));
      CloseHandle(hProcess); //забыл дописать
 end;


procedure TForm2.Button1Click(Sender: TObject);

begin
 Packet('2800000010B0067300000');
end;

end.

Попробовал разбить на части пакет все равно шлет другой пакет

Последний раз редактировалось STIL23; 22.07.2012 в 11:16.
  Ответить с цитированием
Старый 22.07.2012, 13:00   #2
-= Мастер Света =-
 Рыцарь-капитан
Аватар для Ginrey
 
Ginrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака Норриса
Регистрация: 14.06.2012
Сообщений: 511
Популярность: 7566
Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
 
По умолчанию Re: Неправильная отправка

попробуй поправь вот это
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
aParams.Packet[i]:=strtoint('$'+Packet[i*2+1]+Packet[i*2+2]);
end;

замени на i

Добавлено через 3 минуты
вот моя функция пакета. прежде конечно нужно создать выбор персонажа.

Цитата:
procedure Packet(Packet: string);
var
aParams: TParams;
PID, hProcess: DWord;
aPrm: TParams;
wnd: THandle;
h: Integer;
begin
wnd:=FindWindow('ElementClient Window', PChar(nick));
GetWindowThreadProcessId(wnd, @h);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS, False, h);
StrToByte(Packet,aPrm); ///////////
InjectFunc(hProcess,@PacketCall,@aPrm,sizeof(aPrm) );
end;


Последний раз редактировалось Ginrey; 22.07.2012 в 13:03. Причина: Добавлено сообщение
  Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
diagnost (19.05.2015), STIL23 (22.07.2012)
Старый 22.07.2012, 14:46   #3
 Пехотинец
Аватар для dwa83
 
dwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личность
Регистрация: 21.03.2012
Сообщений: 83
Популярность: 1178
Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
 
По умолчанию Re: Неправильная отправка

Цитата:
Сообщение от STIL23Посмотреть сообщение
2800000010B0067300000

2800000010B0067300000 первый указанный вами пакет
28000000000000000000 тот что отправляли пакетлистнером
280000011F00A9210000 пакет из темы инжектов
Разницу чувствуете?) Может в этом ошибка?
________________
╔═╗
ˑ ˑ ╬ ╬
╚═╝

Последний раз редактировалось dwa83; 22.07.2012 в 16:24.
  Ответить с цитированием
Старый 22.07.2012, 18:54   #4
Заблокирован
 Сержант
Аватар для STIL23
 
STIL23 на правильном пути
Регистрация: 19.12.2009
Сообщений: 130
Популярность: 34
Сказал(а) спасибо: 21
Поблагодарили 86 раз(а) в 32 сообщениях
 
По умолчанию Re: Неправильная отправка

Цитата:
Сообщение от dwa83Посмотреть сообщение
2800000010B0067300000 первый указанный вами пакет
28000000000000000000 тот что отправляли пакетлистнером
280000011F00A9210000 пакет из темы инжектов
Разницу чувствуете?) Может в этом ошибка?

Да я там просто когда писал запутался проблема была в том , что нужно было поставить вместо 1 , i
  Ответить с цитированием
Ответ


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка анонимного email или отправка email с чужого email m0nk Треп 4 26.11.2011 18:35
Отправка почты OneShot Вопросы и ответы, обсуждения 1 16.02.2011 16:19

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

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

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