PwRuf3dn.ru

Мини-чат
Наш опрос
Оцените мой сайт
Всего ответов: 289
Статистика
  • Форум
  • Новости
  • Статистика
  • Категории
  • Из них сайте
    Пользователи онлайн
  • Сегодня нас посетили
    Посетившие сегодня
    Сегодня нас посетило
  • Статистика материалов
    Статистика материалов Comments: 1407
    Forum: 10/23
    Photo: 41
    Blog: 2
    Downloads: 107
    Publisher: 47
    Directory: 34
    Games: 297
Реклама


Главная » Статьи » Полезное для PW

Отправка пакетов на сервер
PParams = ^TParams;
  TParams = packed record
    WID: DWord;
    Packet: array [0..256] of byte;
    Param1,Param2,Param3: DWord;
    Param5:DWord;
    Param6: DWord;
    Param4: array [1..256] of widechar;
    BASE_ADD,Ofs,SendPacket:Pointer;
  end;

////////////////////////////////////////////////////
procedure InjectFunc(ProcessID: Cardinal; Func: Pointer; aParams: Pointer; aParamsSize: DWORD);
var
  hThread: THandle;
  lpNumberOfBytes: DWORD;

  ThreadAddr, ParamAddr: Pointer;
begin
  if ProcessID<>0 then
  begin
    // ---- Write function address
    ThreadAddr := VirtualAllocEx(ProcessID, nil, 256, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE);
    WriteProcessMemory(ProcessID, ThreadAddr, Func, 256, lpNumberOfBytes);

    // ---- Address to write parameters
    ParamAddr := VirtualAllocEx(ProcessID, nil, aParamsSize, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE);
    WriteProcessMemory(ProcessID, ParamAddr, aParams, aParamsSize, lpNumberOfBytes);

    // ---- Create a remote thread
    hThread := CreateRemoteThread(ProcessID, nil, 0, ThreadAddr, ParamAddr, 0, lpNumberOfBytes);

    // ---- Thread to wait for the end of
    WaitForSingleObject(hThread, INFINITE);


    VirtualFreeEx(ProcessID,ThreadAddr,0,MEM_RELEASE);
    VirtualFreeEx(ProcessID,ParamAddr,0,MEM_RELEASE);

    CloseHandle(hThread);
  end
end;

//////////////////////////////////////////////////////////////
procedure PacketCall(aPParams:PParams); stdcall;
var
CallAddress,pPacket,_BASE_ADD_,_Ofs,_SendPacket:Pointer;
Len:DWord;
begin
_SendPacket:=aPParams^.SendPacket;
CallAddress:=Pointer(_SendPacket); //адрес был устаревший
Len:=aPParams^.Param1;
_BASE_ADD_:=aPParams^.BASE_ADD;
_Ofs:=aPParams^.Ofs;
pPacket:=@aPParams^.Packet;
 asm
 pushad
 mov ecx, _BASE_ADD_
 mov ecx, dword ptr [ecx]
 mov esi, _Ofs
 mov ecx, dword ptr [ecx+esi] //20
 push Len
 push pPacket
 call CallAddress
 popad
 end;
end;

procedure StrToByte(Packet:String; var aParams:TParams);
var
i:integer;
begin
try
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]);
except
  showmessage ('проблема в байтах');
end;
end;

procedure Packet(Packet: String);
var
aParams: TParams;
  PID, hProcess: DWord;
begin
  aParams.BASE_ADD := Pointer(BASE_ADD);
  aParams.Ofs :=Pointer(OffSets_Uchastvuelvotpravkepaketa);
  aParams.SendPacket:= Pointer(OffSets_SendPacket);
  GetWindowThreadProcessId(WID, @PID);
  hProcess:=OpenProcess(PROCESS_ALL_ACCESS, False, PID);
StrToByte(Packet,aParams);

InjectFunc(hProcess,@PacketCall,@aParams,sizeof(aParams));
CloseHandle(hProcess); //забыл дописать
end;

procedure TForm1.Button40Click(Sender: TObject);
begin
packet('2A00');
end;
Категория: Полезное для PW | Добавил: Жимбо (02.02.2013)
Просмотров: 1588 | Теги: бот, пакетов, ботоводы, отправка, ботописание, своими, программирование, руками | Рейтинг: 0.0/0
Похожие Полезное для PW:
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ваш профиль на сайте