PwRuf3dn.ru

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


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

В категории материалов: 4
Показано материалов: 1-4

Сортировать по: Дате · Названию · Рейтингу · Комментариям · Просмотрам
В полной теме вы найдете оффсеты для версии клиентов:

Flugel PW, клиент 1.3.4 версии, сборка 2265, версия обновления 50

<Эпоха Генезиса, клиент 1.4.4 версии, сборка 2305, версия обновления 189-205

Extreme Phoenix, клиент 1.4.5 версии, сборка 2305, версия обновления 48
PW Пять стихий, UA, клиент 1.4.5 версии, сборка 2305, версия обновления 29


RUOFF Земли духов, клиент 1.4.5 версии, сборка 2305, версия обновления 207-221

PWI клиент 1.4.5 версии, сборка 2305, версия обновления 657-659
RUOFF Гнев Империи, клиент 1.4.5 версии, сборка 2305, версия обновления 237


RUOFF Возрождение династий, клиент 1.4.6 версии, сборка 2305, версия обновления 240-243

Полезное для PW | Просмотров: 4153 | Добавил: Жимбо | Дата: 15.02.2013 | Комментарии (1)

ItemGshop=record
  shop_id:integer;
  cat_index:integer;
  sub_cat_index:integer;
  surface_path:array[0..63] of wideChar;
  item_id:integer;
  item_amount:integer;
  sale_options:array [0..3] of record
  price:integer;
  expire_date:integer;
  duration:integer;
  start_date:integer;
  control_type:integer;
  day:integer;
  status:integer;
  flags:integer;
  end;
  description:array[0..63] of wideChar;
  name:array[0..63] of wideChar;
  gift_id:integer;
  gift_amount:integer;
  gift_duration:integer;
  log_price:integer;
  end;

var
MyArray:  array of ItemGshop;

/чытаем gshop.dat и получаем id в шопе и записываем в виде пакета
procedure readelements;
var
elements: File of byte;
buf:integer;
i,j,intzn:integer;
Path:String;
begin
Path:=Application.ExeName;
Path:=ExtractFileDir(Path);
if Path[Length(Path)]<>'\' then Path:=Path+'\';
AssignFile(elements,'gshop.data');
Reset(elements);

blockRead(elements,buf,sizeof(buf));
blockRead(elements,intzn,sizeof(intzn));
SetLength(MyArray,intzn);
for i:=0 to intzn-1 do
begin
  blockRead(elements,MyArray[i].shop_id,sizeof(MyArray[i].shop_id));
   blockREad(elements,MyArray[i].cat_index,sizeof(MyArray[i].cat_index));
   blockREad(elements,MyArray[i].sub_cat_index,sizeof(MyArray[i].sub_cat_index));
   blockREad(elements,MyArray[i].surface_path,128);
   blockREad(elements,MyArray[i].item_id,sizeof(MyArray[i].item_id));
   blockREad(elements,MyArray[i].item_amount,sizeof(MyArray[i].item_amount));
   for j:=0 to 3 do
   begin
   blockRead(elements,MyArray[i].sale_options[j].price,sizeof(MyArray[i].sale_options[j].price));
   blockRead(elements,MyArray[i].sale_options[j].expire_date,sizeof(MyArray[i].sale_options[j].expire_date));
   blockRead(elements,MyArray[i].sale_options[j].duration,sizeof(MyArray[i].sale_options[j].duration));
   blockRead(elements,MyArray[i].sale_options[j].start_date,sizeof(MyArray[i].sale_options[j].start_date));
   blockRead(elements,MyArray[i].sale_options[j].control_type,sizeof(MyArray[i].sale_options[j].control_type));
   blockRead(elements,MyArray[i].sale_options[j].day,sizeof(MyArray[i].sale_options[j].day));
   blockRead(elements,MyArray[i].sale_options[j].status,sizeof(MyArray[i].sale_options[j].status));
   blockRead(elements,MyArray[i].sale_options[j].flags,sizeof(MyArray[i].sale_options[j].flags));
   end;
   blockREad(elements,MyArray[i].description,1024);
   blockREad(elements,MyArray[i].name,64);
   blockREad(elements,MyArray[i].gift_id,sizeof(MyArray[i].gift_id));
   blockREad(elements,MyArray[i].gift_amount,sizeof(MyArray[i].gift_amount));
   blockREad(elements,MyArray[i].gift_duration,sizeof(MyArray[i].gift_duration));
   blockREad(elements,MyArray[i].log_price,sizeof(MyArray[i].log_price));
end;

CloseFile(elements);
end;
Полезное для PW | Просмотров: 1105 | Добавил: Жимбо | Дата: 02.02.2013 | Комментарии (0)

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 | Просмотров: 1584 | Добавил: Жимбо | Дата: 02.02.2013 | Комментарии (0)

{==========================================|
|          Читаем DWORD                    |
|==========================================}
function getDWORD(data: dword): dword;
var
  rw: dword;
begin
  if Connected then
    begin
      ReadProcessMemory(hProcess,ptr(data),@Result,sizeof(Result),rw);
    end;
end;

{==========================================|
|          Читаем SINGLE                   |
|==========================================}
function getSINGLE(data: dword): single;
var
  rw: dword;
begin
  if Connected then
    begin
      ReadProcessMemory(hProcess,ptr(data),@Result,sizeof(Result),rw);
    end;
end;

{==========================================|
|           Читаем строку по адресу        |
|==========================================}
function getSTRING(ReadAddress, SizeBytes: DWORD): string;
var
  str: array[0..255] of WideChar;
  rw: dword;
begin
  ReadProcessMemory(hProcess,Pointer(ReadAddress),@str,SizeBytes,rw);
  Result:= str;
end;
Полезное для PW | Просмотров: 893 | Добавил: Жимбо | Дата: 02.02.2013 | Комментарии (0)