PwRuf3dn.ru

Мини-чат
Наш опрос
Каким ботом пользуетесь?

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


Главная » Статьи

Всего материалов в каталоге: 47
Показано материалов: 41-47
Страницы: « 1 2 3 4 5

В полной теме вы найдете оффсеты для версии клиентов:

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

unit setup;

interface
uses windows, iniFiles, SysUtils, Forms, Dialogs, StdCtrls;

procedure rwSetup;
var

  OffSets_BASE_ADD,
  BASE_ADD,
  OffSets_SendPacket,
  OffSets_GAME_ADD,
  OffSets_Player_ADD,
  OffSets_Player_Name_ADD,
  OffSets_Inventory_Array,
  OffSets_Yacheyka,
  OffSets_Item_Id,
  OffSets_Item_Count,
  OffSets_Max_Count_Yacheyek,
  OffSets_ExtraEffectsPtr,
  OffSets_ExtraEffectsId1,
  OffSets_ExtraEffectsId2,
  OffSets_ExtraEffectsId3,
  OffSets_ExtraEffectsValue1,
  OffSets_ExtraEffectsValue2,
  OffSets_ExtraEffectsValue3,
  OffSets_Uchastvuelvotpravkepaketa,
  OffSets_MoneyCount,
  OffSets_TargetWid,
  OffSets_ChatStart,
  OffSets_ChatNumber
  : dword;

  WID: THandle;
  hProcess: dword;
  Found_WID: array [0..10] of THandle;


  ElementClassName,ElementClassName2: string;
implementation

uses main, func, NewItem;

procedure rwSetup;
 var
   ini: TIniFile;
   Path:String;
   offset:string;
 begin
  Path:=Application.ExeName;
  Path:=ExtractFileDir(Path);
  if Path[Length(Path)]<>'\' then Path:=Path+'\';
  ini:=TIniFile.Create(Path+'setup.ini');
  if ini.ReadString('config', 'Client_Version', '0')='Genesis' then offset:='Offsets_in_Genesis';
  if ini.ReadString('config', 'Client_Version', '0')='Descent' then offset:='Offsets_in_Descent';
  if ini.ReadString('config', 'Client_Version', '0')='Insidious' then offset:='Offsets_in_Insidious';
  if ini.ReadString('config', 'Client_Version', '0')='Free_Servers' then offset:='Offsets_in_Free_Servers';
  if ini.ReadString('config', 'Client_Version', '0')='RUOFF_Гнев_Империи' then offset:='Offsets_in_RUOFF_Гнев_Империи';
  if ini.ReadString('config', 'Client_Version', '0')='RUOFF_Возрождение_династий' then offset:='Offsets_in_RUOFF_Возрождение_династий';

  try
    OffSets_BASE_ADD:= strtoint('$'+ini.ReadString(offset, 'BASE_ADD', 'B27A04'));
    BASE_ADD:= strtoint('$'+ini.ReadString(offset, 'BASE_ADD', 'B27A04'));
    OffSets_GAME_ADD:= strtoint('$'+ini.ReadString(offset, 'GAME_ADD', 'B280C4'));
    OffSets_Player_ADD:= strtoint('$'+ini.ReadString(offset, 'Player_ADD', '34'));
    OffSets_Player_Name_ADD:= strtoint('$'+ini.ReadString(offset, 'Player_Name_ADD', '638'));
    OffSets_Inventory_Array:= strtoint('$'+ini.ReadString(offset, 'Inventory_Array', 'CAC'));
    OffSets_Yacheyka:= strtoint('$'+ini.ReadString(offset, 'Yacheyka', 'C'));
    OffSets_Item_Id:= strtoint('$'+ini.ReadString(offset, 'Item_Id', '8'));
    OffSets_Item_Count:= strtoint('$'+ini.ReadString(offset, 'Item_Count', '10'));
    OffSets_Max_Count_Yacheyek:= strtoint('$'+ini.ReadString(offset, 'Max_Count_Yacheyek', '10'));
    OffSets_MoneyCount:= strtoint('$'+ini.ReadString(offset, 'MoneyCount', '554'));

    OffSets_ExtraEffectsPtr:= strtoint('$'+ini.ReadString(offset, 'ExtraEffectsPtr', 'A4'));
    OffSets_ExtraEffectsId1:= strtoint('$'+ini.ReadString(offset, 'ExtraEffectsId1', '00'));
    OffSets_ExtraEffectsId2:= strtoint('$'+ini.ReadString(offset, 'ExtraEffectsId2', '1C'));
    OffSets_ExtraEffectsId3:= strtoint('$'+ini.ReadString(offset, 'ExtraEffectsId3', '38'));
    OffSets_ExtraEffectsValue1:= strtoint('$'+ini.ReadString(offset, 'ExtraEffectsValue1', '0C'));
    OffSets_ExtraEffectsValue2:= strtoint('$'+ini.ReadString(offset, 'ExtraEffectsValue2', '28'));
    OffSets_ExtraEffectsValue3:= strtoint('$'+ini.ReadString(offset, 'ExtraEffectsValue3', '44'));
    OffSets_Uchastvuelvotpravkepaketa:= strtoint('$'+ini.ReadString(offset, 'Используется при отправке пакета BA+$20 в версии 1.4.4', '20'));

    OffSets_SendPacket:= strtoint('$'+ini.ReadString(offset, 'SendPacket', '6737B0'));
    OffSets_TargetWid:= strtoint('$'+ini.ReadString(offset, 'TargetWid', 'BD4'));
    OffSets_ChatStart:= strtoint('$'+ini.ReadString(offset, 'ChatStart', 'BD4'));
    OffSets_ChatNumber:= strtoint('$'+ini.ReadString(offset, 'ChatNumber', 'BD4'));

    ElementClassName:= ini.ReadString('Element', 'ElementClassName', '');
    ElementClassName2:= ini.ReadString('Element', 'ElementClassName2', '');
//    ini.WriteBool('Offset', 'Key_Name3', True);
//      ini.WriteInteger('Offset', 'BASE_ADD', 2002);
   finally
     ini.Free;
   end;

  end;
end.
Создание ботов | Просмотров: 1573 | Добавил: Жимбо | Дата: 02.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 | Просмотров: 1106 | Добавил: Жимбо | Дата: 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 | Просмотров: 1587 | Добавил: Жимбо | Дата: 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 | Просмотров: 895 | Добавил: Жимбо | Дата: 02.02.2013 | Комментарии (0)

Данный бот умеет.
- Автокрафт шмот/пух/бижутерий с фильтром более 45 эффектов и 65+ скиллов
- скупает все необходимые ресы с шопа
- Пользователь сам может добавлять все необходимые предметы для крафта
- автокрафт шаров дракона
- автокрафт трактатов (на уровне пакетов)
- регрейд нирвана пух/шмот
- версия клиента 1.4.4 и 1.4.5

Вот гайдик бота уже с описаниями всех функций

Гайд по программе PwRuf – Crafter

(на текущую версию v15.0)


Запуск и настройки:
1. После того как скачали архив с программой разархивируем его.
2. Запускаем программу (если windows 7 то запускает от имени администратора).
3. Если всё нормально то откроется окно с ботом.

4. Когда первый раз запускаете то нажимаем на кнопку настройки и выбираем версию клиента своего сервера (доступны версии: Genesis (клиент версии 1.4.4), Descent (клиент версии 1.4.5), Сервер Insidious PvP (клиент версии 1.4.5))
Гайды | Просмотров: 77136 | Добавил: Алёна | Дата: 27.09.2012 | Комментарии (65)

гайд по боту появится в скором времени

Гайды | Просмотров: 2307 | Добавил: Алёна | Дата: 27.09.2012 | Комментарии (3)