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

РУОФФ Адреса и оффсеты

-

Разработка ПО для Perfect World

- Бюро разработчиков Zhyk.Ru: создание ботов, снифферов и прочих программ для Perfect World

Ответ
 
Опции темы
Старый 08.08.2013, 18:48   #961
 Разведчик
Аватар для pw.lancer
 
pw.lancer скоро будет известенpw.lancer скоро будет известенpw.lancer скоро будет известенpw.lancer скоро будет известен
Регистрация: 11.05.2011
Сообщений: 41
Популярность: 305
Сказал(а) спасибо: 43
Поблагодарили 12 раз(а) в 7 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от krukovisПосмотреть сообщение
Нигде не забыл. Адреса видимо кривые. Я не хочу искать адреса для функции закрытия окна, потому что есть более совершенная функция работы с GUI. Которая умеет не только закрывать, но и на кнопки нажимать.

На днях добрался до гуи, перелопатил все темы, запустил универсальную функцию с инжктом от krukovis (имеется в вижу GUICommand). Она действительно хороша, может нажимать (почти?) любые кнопки. Однако, если говорить о закрытии диалога, она подходит не всегда, к сожалению.

Сперва о контролах Win_NPC - вот что я получаю своим листером:
Код:
wndListPtr = 166067B4
next 1A398488 wndBase 199CD550 O 1 X 357 Y 34 W 295 H 410 'Win_NPC'
---------------------------------
  Ctrl list ptr [ 01C8 ] 196DF0C8
    next 196DF690 ctrlPtr 195FBE68 O 1 X 269 Y 8 W 19 H 19 'Btn_Close' CMD 00BBBA18 '' Text ''
    next 196DF730 ctrlPtr 1A0C9888 O 1 X 11 Y 271 W 273 H 101 'Lst_Main' CMD 18E8EB8C 'listchoose' Text ''
    next 196DF820 ctrlPtr 1783C4F0 O 1 X 11 Y 35 W 273 H 235 'Txt_Content' CMD 00BBBA18 '' Text 'Воины, дорога впереди трудна и опасна.. блабла'
    next 196DF898 ctrlPtr 195FBD00 O 1 X 116 Y 376 W 60 H 24 'Btn_Back' CMD 18E8E76C 'back' Text 'Назад'
    next 00000000 ctrlPtr 195F59D8 O 1 X 146 Y 8 W 0 H 0 'Txt_npc' CMD 00BBBA18 '' Text ''
Из списка видно, что контролу 'Btn_Close' - это, если не ошибаюсь, кнопка закрытия окна, "крестик" - почему-то не присвоена команда (я ожидал тут увидеть 'IDCANCEL', к сожалению, ошибся).
Дальше, кнопке 'Btn_Back' присвоена команда 'back' и ее нажатие с помощью чудо-функции и этой команды закрывает большинство диалогов.
Контролу 'Lst_Main' присвоена команда 'listchoose', но мне не удалось воспроизвести выбор элемента списка, видимо, этот инжект лишь для нажатия кнопок.
Итак, для закрытия диалогов с НИП можно использовать инжект нажатия кнопки 'Назад'. Но есть исключение.
При входе в ХХ от 88 и выше, выскакивает диалог с сообщением, что нужно набить какое-то количество мобов. Так вот, старым добрым ESC этот диалог закрывается без проблем, а на нажатие кнопки 'Назад' не реагирует.

Цитата:
Сообщение от yeyebvzПосмотреть сообщение
закрытие диалога пока что сделал через нажатие ESC, модифицировав код источника http://zhyk.ru/forum/showpost.php?p=...4&postcount=92

Цитата:
Сообщение от krukovisПосмотреть сообщение
Нажатия клавиш - это ж моветон... Почему не инжектом?

К своему стыду, признаюсь, что пришлось пока тоже часть окошек закрывать посылкой ESC.
Ежели есть у кого соображения по поводу нажатия на "Крестик" или выбора элементов списка, буду благодарен.
  Ответить с цитированием
Старый 08.08.2013, 21:54   #962
 Разведчик
Аватар для leto2011
 
leto2011 никому не известный тип
Регистрация: 13.02.2011
Сообщений: 12
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Всем добрый день!

Я пытаюсь написать бота по статьям данного сайта, за месяц получилось
сделать почти все, бот выделяет мобов ,бъет их собирает лут, пьет банки, вобщем сайт очень полезен)).
Но никак не получается сделать передвижение по координатам, голова уже идет кругом.

Вот сама функция инжекта движения:
void INJECTOR::MoveTo(float x, float y, float z, int walkmode)
{
char fdata[117]="\x60\xA1\x00\x00\x00\x00\x8B\xB0\x11\x11\x11\x11 \x8B\x8E\x22\x22\x22\x22\x6A\x01\xBB\x33\x33\x33\x 33\xFF\xD3\x89\xC7\x8D\x44\xE4\x0C\x50\x68\x44\x44 \x44\x44\x89\xF9\xBB\x55\x55\x55\x55\xFF\xD3\x8B\x 8E\x66\x66\x66\x66\x6A\x00\x6A\x01\x57\x6A\x01\xBB \x77\x77\x77\x77\xFF\xD3\xA1\x88\x88\x88\x88\x8B\x 80\x99\x99\x99\x99\x8B\x80\xAA\xAA\xAA\xAA\x8B\x40 \x30\x8B\x48\x04\xB8\xBB\xBB\xBB\xBB\x89\x41\x20\x B8\xCC\xCC\xCC\xCC\x89\x41\x24\xB8\xDD\xDD\xDD\xDD \x89\x41\x28\x61\xC3";

DWORD func1=F_MOVE1;
DWORD func2=F_MOVE2;
DWORD func3=F_MOVE3;
DWORD ga=GA;
DWORD ps=PERS_STRUCT;
DWORD maa=MY_ACTION_ARRAY;
DWORD wmode=1; if (walkmode==0) wmode=0;


memcpy(fdata+2,&ga,4);
memcpy(fdata+8,&ps,4);
memcpy(fdata+14,&maa,4);
memcpy(fdata+21,&func1,4);
memcpy(fdata+35,&wmode,4);
memcpy(fdata+42,&func2,4);
memcpy(fdata+50,&maa,4);
memcpy(fdata+62,&func3,4);
memcpy(fdata+69,&ga,4);
memcpy(fdata+75,&ps,4);
memcpy(fdata+81,&maa,4);
memcpy(fdata+92,&x,4);
memcpy(fdata+100,&z,4);
memcpy(fdata+108,&y,4);

InjectAndExecute2(&fdata,117);
}

Функция InjectAndExecute2(void *code, int len); - работает 100% т.к. подбор лута и выделения в таргет через нее работают.

данные которые получает функция MoveTo:
GA = 0x00B9029C - 100% рабочий
PERS_STRUCT = 0x34 - 100% рабочий

MY_ACTION_ARRAY = 0x1050 - под вопросом
F_MOVE1 = 0x00479A40 - под вопросом
F_MOVE2 = 0x0047DD40 - под вопросом
F_MOVE3 = 0x00479EB0 - под вопросом

А вообще F_MOVE1, F_MOVE2, F_MOVE3 уже от безвыходности пробовал
перебором ставить разные значения с сайта :


#define F_MOVE1 0x0047B290//0x00495680//0x00479A40//0x0047B290//0x00479A40//0x0046E410 //Перемещение персонажа 0x00494620
#define F_MOVE2 0x0047F5A0//0x00499320//0x0047DD40//0x0047F5A0//0x0047DD40//0x004728E0 //Перемещение персонажа 0x00498290
#define F_MOVE3 0x0047B700//0x00495F20//0x00479EB0//0x0047B700//0x00479EB0//0x0046E880 //Перемещение персонажа 0x00494EC0

клиент постоянно вылетает.

И еще в некоторых статьях указываются непонятные оффсеты Walk_Ofs1=1204 - 4612
WalkMode=688 - 1672

Так вот вопрос) , что я делаю не так ?)) и для чего Walk_Ofs1 ?
  Ответить с цитированием
Старый 09.08.2013, 12:10   #963
-= Мастер Света =-
 Рыцарь-капитан
Аватар для krukovis
 
krukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нации
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от leto2011Посмотреть сообщение
Но никак не получается сделать передвижение по координатам, голова уже идет кругом.

Есть статьи по разработке бота на плюсах
http://zhyk.ru/forum/showthread.php?t=414162
http://zhyk.ru/forum/showthread.php?t=415872

Читай их.

Задавать вопросы по инжектам нужно в соответствующей теме. http://zhyk.ru/forum/showthread.php?t=144558
Здесь обсуждаются смещения и их поиск. Не захламляйте тему, пожалуйста, иначе злые модераторы все удалят и вам будет грустно.
________________
--------------------------------------------
PerfectAutoLogin v 7.4 - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
[for 1.4.6] PW Patcher 12.0 - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
InGamePatcher 1.2 - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------
  Ответить с цитированием
Старый 10.08.2013, 01:24   #964
 Разведчик
Аватар для Alekill
 
Alekill на правильном пути
Регистрация: 02.10.2009
Сообщений: 10
Популярность: 28
Сказал(а) спасибо: 22
Поблагодарили 9 раз(а) в 5 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Как получить хп выделенного моба, можно на примере?
Хп персонажа получил, работает.
Base + 0x1C + 0x34 + 0x494
А как моба?
Base + 0x1C + 0x1C + 0x24 + 0x14 + 0x130 - такой способ не работает
________________
Подпись нарушает п.28 правил.

Последний раз редактировалось Alekill; 10.08.2013 в 01:29.
  Ответить с цитированием
Старый 10.08.2013, 09:24   #965
-= Мастер Света =-
 Пехотинец
Аватар для rufat2005
 
rufat2005 излучает ауруrufat2005 излучает ауруrufat2005 излучает ауруrufat2005 излучает ауруrufat2005 излучает ауруrufat2005 излучает ауру
Регистрация: 19.02.2010
Сообщений: 98
Популярность: 650
Сказал(а) спасибо: 23
Поблагодарили 150 раз(а) в 45 сообщениях
Отправить сообщение для rufat2005 с помощью ICQ Отправить сообщение для rufat2005 с помощью Skype™
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от AlekillПосмотреть сообщение
Как получить хп выделенного моба, можно на примере?
Хп персонажа получил, работает.
Base + 0x1C + 0x34 + 0x494
А как моба?
Base + 0x1C + 0x1C + 0x24 + 0x14 + 0x130 - такой способ не работает

сначала нужно получить узнать WID выделенного моба

Код:
{==========================================|
|           Читаем WID НПС в таргете       |
|==========================================}
function getTargetWid(): dword;
var
  rw: dword;
  WGAME_ADD, PlayerStruct:DWord;
begin
  if Connected then
    begin
      ReadProcessMemory (hProcess,  Pointer(OffSets_GAME_ADD), @WGAME_ADD, sizeof(WGAME_ADD), rw);
      ReadProcessMemory (hProcess,  Pointer(WGAME_ADD+OffSets_Player_ADD), @PlayerStruct, sizeof(PlayerStruct), rw);
      ReadProcessMemory (hProcess,  Pointer(PlayerStruct+OffSets_TargetWid), @result, sizeof(result), rw);
    end;
end;
потом по Структура перса (HostPlayer Struct)
перебирать WID персонажей вокруг
BA +0x1C +0x1C +0x20 +0x18 +(i*0x4) +0x4 + +0480
и если WID одинакого с WID выделенного персонажа то уже чытаем его хп

в кодах показывать не могу
но могу показать как я узнаю кто у меня в таргете (нпс/пет/игрок)

Код:
Function GetMobTypeByID(WIDbyInfo:dword):byte;
var
i,ii,count: Integer;
data:Dword;
wid,d1,d3:dword;
label konec;
begin
  i:=0;
  ii:=0;
  if connected then
  begin
    data:=GetDword(OffSets_BASE_ADD);
    data:=GetDword(data+$1C);
    data:=GetDword(data+$1C);
    data:=GetDword(data+$24);
    count:=GetDword(data+$14);
    data:=GetDword(data+$18);
    if count>0 then
    begin
      while (i<count) and (ii<768) do
      begin
        d3:=getdword(data+$4*ii);
        d1:=getdword(d3+$4);
        wid:=getdword(d1+OffSets_Mobs_Wid);
        if wid<>0 then
        begin
          if wid=WIDbyInfo then
          begin
            result:=getdword(d1+OffSets_Mobs_Type);
            goto konec;
          end;
          i:=i+1;
        end;
        ii:=ii+1;
      end;
    end;
  end;
  konec:
end;
но хп можно узнать вроде так

Код:
Function GetMobHPByID(WIDbyInfo:dword):byte;
var
i,ii,count: Integer;
data:Dword;
wid,d1,d3:dword;
label konec;
begin
  i:=0;
  ii:=0;
  if connected then
  begin
    data:=GetDword(OffSets_BASE_ADD);
    data:=GetDword(data+$1C);
    data:=GetDword(data+$1C);
    data:=GetDword(data+$24);
    count:=GetDword(data+$14);
    data:=GetDword(data+$18);
    if count>0 then
    begin
      while (i<count) and (ii<768) do
      begin
        d3:=getdword(data+$4*ii);
        d1:=getdword(d3+$4);
        wid:=getdword(d1+OffSets_Mob_Wid); /// на оффе +0x120 WID, dword
        if wid<>0 then
        begin
          if wid=WIDbyInfo then
          begin
            result:=getdword(d1+OffSets_Pers_HP);// на оффе +0x130 HP, dword ну или любые другие данные
            goto konec;
          end;
          i:=i+1;
        end;
        ii:=ii+1;
      end;
    end;
  end;
  konec:
end;
________________
PWA for PWPVP
Автор программы PwRuf - Bot и PwRuf - Crafter

Последний раз редактировалось rufat2005; 10.08.2013 в 09:31.
  Ответить с цитированием
Старый 13.08.2013, 01:25   #966
 Разведчик
Аватар для vladegorov7
 
vladegorov7 никому не известный тип
Регистрация: 11.07.2013
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Нужно прочитать ник персонажа. Не понимаю в чем суть проблемы, переменная объявлена правильно. При считывании лэбл оказывается пустым.
Цитата:
ReadProcessMemory (hProcess, Pointer($B8FBCC), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$1C), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$34), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$670), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$0), @WNICK, sizeof(WNICK), WRD);
Label7.Caption:=WideCharToString(WNICK);

Добавлено через 14 минут
Наверное проблема в кодировке

Последний раз редактировалось vladegorov7; 13.08.2013 в 01:39. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 13.08.2013, 08:32   #967
 Разведчик
Аватар для fds255
 
fds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известен
Регистрация: 23.06.2012
Сообщений: 43
Популярность: 427
Сказал(а) спасибо: 18
Поблагодарили 59 раз(а) в 35 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от vladegorov7Посмотреть сообщение
переменная объявлена правильно.

да ладно, а не так ли нужно:

Код:
var 
WNICK:DWORD;
_NICK:array [0..31] of WideChar;


ReadProcessMemory (hProcess, Pointer($B8FBCC), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$1C), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$34), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$670), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$0), @_NICK, 32, WRD);
Label7.Caption:=WideCharToString(_NICK);


rufat2005,

Можно обойтись и без GOTO:

Код:
function READ_MOB_HP(TRG:dword):dword;
var
i:integer;
WMN, Count,MOB_TYPE,MOB_WID,MOB_HP:Dword;
begin
    ReadProcessMemory(hProcess,Pointer(Base_Address),@WMN,4,NoB);
   ReadProcessMemory(hProcess,Pointer(WMN+$1C),@WMN,4,NoB);
     ReadProcessMemory(hProcess,Pointer(WMN+$1C),@WMN,4,NoB);
   ReadProcessMemory(hProcess,Pointer(WMN+$24),@WMN,4,NoB); 
    ReadProcessMemory(hProcess,Pointer(WMN+$14),@Count,4,NoB); 
 for i:=0 to Count-1 do
 begin

  ReadProcessMemory(hProcess,Pointer(Base_Address),@WMN,4,NoB);
  ReadProcessMemory(hProcess,Pointer(WMN+$1C),@WMN,4,NoB);
  ReadProcessMemory(hProcess,Pointer(WMN+$1C),@WMN,4,NoB);
  ReadProcessMemory(hProcess,Pointer(WMN+$24),@WMN,4,NoB); 
  ReadProcessMemory(hProcess,Pointer(WMN+$18),@WMN,4,NoB);  
  ReadProcessMemory(hProcess,Pointer(WMN+i*$04),@WMN,4,NoB);
  ReadProcessMemory(hProcess,Pointer(WMN+$0B4),@MOB_TYPE,4,NoB);
if MOB_TYPE=6 then
 begin
  ReadProcessMemory(hProcess,Pointer(WMN+$120),@MOB_WID,4,NoB); 
  if MOB_WID=TRG then
   begin
    ReadProcessMemory(hProcess,Pointer(WMN+$130),@MOB_HP,4,NoB); 
    Result:=MOB_HP;
    Exit;
   end;
 end;
 
end;

Result:=0;

end;
________________
MultiXBot
MultiX_POT

Последний раз редактировалось fds255; 13.08.2013 в 09:42.
  Ответить с цитированием
Старый 13.08.2013, 11:35   #968
 Разведчик
Аватар для vladegorov7
 
vladegorov7 никому не известный тип
Регистрация: 11.07.2013
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от fds255Посмотреть сообщение
да ладно, а не так ли нужно:

Код:
var 
WNICK:DWORD;
_NICK:array [0..31] of WideChar;


ReadProcessMemory (hProcess, Pointer($B8FBCC), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$1C), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$34), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$670), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$0), @_NICK, 32, WRD);
Label7.Caption:=WideCharToString(_NICK);


rufat2005,

Можно обойтись и без GOTO:

Код:
function READ_MOB_HP(TRG:dword):dword;
var
i:integer;
WMN, Count,MOB_TYPE,MOB_WID,MOB_HP:Dword;
begin
    ReadProcessMemory(hProcess,Pointer(Base_Address),@WMN,4,NoB);
   ReadProcessMemory(hProcess,Pointer(WMN+$1C),@WMN,4,NoB);
     ReadProcessMemory(hProcess,Pointer(WMN+$1C),@WMN,4,NoB);
   ReadProcessMemory(hProcess,Pointer(WMN+$24),@WMN,4,NoB); 
    ReadProcessMemory(hProcess,Pointer(WMN+$14),@Count,4,NoB); 
 for i:=0 to Count-1 do
 begin

  ReadProcessMemory(hProcess,Pointer(Base_Address),@WMN,4,NoB);
  ReadProcessMemory(hProcess,Pointer(WMN+$1C),@WMN,4,NoB);
  ReadProcessMemory(hProcess,Pointer(WMN+$1C),@WMN,4,NoB);
  ReadProcessMemory(hProcess,Pointer(WMN+$24),@WMN,4,NoB); 
  ReadProcessMemory(hProcess,Pointer(WMN+$18),@WMN,4,NoB);  
  ReadProcessMemory(hProcess,Pointer(WMN+i*$04),@WMN,4,NoB);
  ReadProcessMemory(hProcess,Pointer(WMN+$0B4),@MOB_TYPE,4,NoB);
if MOB_TYPE=6 then
 begin
  ReadProcessMemory(hProcess,Pointer(WMN+$120),@MOB_WID,4,NoB); 
  if MOB_WID=TRG then
   begin
    ReadProcessMemory(hProcess,Pointer(WMN+$130),@MOB_HP,4,NoB); 
    Result:=MOB_HP;
    Exit;
   end;
 end;
 
end;

Result:=0;

end;

Спасибо, получилось.
  Ответить с цитированием
Старый 13.08.2013, 12:16   #969
-= Мастер Света =-
 Пехотинец
Аватар для rufat2005
 
rufat2005 излучает ауруrufat2005 излучает ауруrufat2005 излучает ауруrufat2005 излучает ауруrufat2005 излучает ауруrufat2005 излучает ауру
Регистрация: 19.02.2010
Сообщений: 98
Популярность: 650
Сказал(а) спасибо: 23
Поблагодарили 150 раз(а) в 45 сообщениях
Отправить сообщение для rufat2005 с помощью ICQ Отправить сообщение для rufat2005 с помощью Skype™
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от fds255Посмотреть сообщение
да ладно, а не так ли нужно:

Код:
var 
WNICK:DWORD;
_NICK:array [0..31] of WideChar;


ReadProcessMemory (hProcess, Pointer($B8FBCC), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$1C), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$34), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$670), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$0), @_NICK, 32, WRD);
Label7.Caption:=WideCharToString(_NICK);


rufat2005,

Можно обойтись и без GOTO:

Код:
function READ_MOB_HP(TRG:dword):dword;
var
i:integer;
WMN, Count,MOB_TYPE,MOB_WID,MOB_HP:Dword;
begin
    ReadProcessMemory(hProcess,Pointer(Base_Address),@WMN,4,NoB);
   ReadProcessMemory(hProcess,Pointer(WMN+$1C),@WMN,4,NoB);
     ReadProcessMemory(hProcess,Pointer(WMN+$1C),@WMN,4,NoB);
   ReadProcessMemory(hProcess,Pointer(WMN+$24),@WMN,4,NoB); 
    ReadProcessMemory(hProcess,Pointer(WMN+$14),@Count,4,NoB); 
 for i:=0 to Count-1 do
 begin

  ReadProcessMemory(hProcess,Pointer(Base_Address),@WMN,4,NoB);
  ReadProcessMemory(hProcess,Pointer(WMN+$1C),@WMN,4,NoB);
  ReadProcessMemory(hProcess,Pointer(WMN+$1C),@WMN,4,NoB);
  ReadProcessMemory(hProcess,Pointer(WMN+$24),@WMN,4,NoB); 
  ReadProcessMemory(hProcess,Pointer(WMN+$18),@WMN,4,NoB);  
  ReadProcessMemory(hProcess,Pointer(WMN+i*$04),@WMN,4,NoB);
  ReadProcessMemory(hProcess,Pointer(WMN+$0B4),@MOB_TYPE,4,NoB);
if MOB_TYPE=6 then
 begin
  ReadProcessMemory(hProcess,Pointer(WMN+$120),@MOB_WID,4,NoB); 
  if MOB_WID=TRG then
   begin
    ReadProcessMemory(hProcess,Pointer(WMN+$130),@MOB_HP,4,NoB); 
    Result:=MOB_HP;
    Exit;
   end;
 end;
 
end;

Result:=0;

end;

никто и не говорит что нельзя0 просто я всегда пользуюсь с гото) мне так легче
________________
PWA for PWPVP
Автор программы PwRuf - Bot и PwRuf - Crafter
  Ответить с цитированием
Старый 15.08.2013, 23:37   #970
 Разведчик
Аватар для [phallic]
 
[phallic] никому не известный тип
Регистрация: 27.05.2012
Сообщений: 7
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Кто-нибудь пытался запускать автополет по карте инжектами?
  Ответить с цитированием
Старый 16.08.2013, 04:00   #971
 Разведчик
Аватар для vladegorov7
 
vladegorov7 никому не известный тип
Регистрация: 11.07.2013
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Добрый день. Подскажите новичку как считать название предмета, находящегося в n-ной ячейке инвентаря?
  Ответить с цитированием
Старый 16.08.2013, 04:35   #972
 Разведчик
Аватар для [phallic]
 
[phallic] никому не известный тип
Регистрация: 27.05.2012
Сообщений: 7
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от vladegorov7Посмотреть сообщение
Добрый день. Подскажите новичку как считать название предмета, находящегося в n-ной ячейке инвентаря?

Ну если предположить, что структура инвентаря не менялась с 1.4.4 (Эпоха Генезиса, клиент 1.4.4 версии, сборка 2305, версия обновления 189-205), то берем адрес структуры из последнего обновления (+0D84) и дальше как в 1.4.4, насколько я понял там адрес имени предмета зависит от типа предмета. Сам не проверял правда
  Ответить с цитированием
Старый 16.08.2013, 04:46   #973
 Разведчик
Аватар для vladegorov7
 
vladegorov7 никому не известный тип
Регистрация: 11.07.2013
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от [phallic]Посмотреть сообщение
Ну если предположить, что структура инвентаря не менялась с 1.4.4 (Эпоха Генезиса, клиент 1.4.4 версии, сборка 2305, версия обновления 189-205), то берем адрес структуры из последнего обновления (+0D84) и дальше как в 1.4.4, насколько я понял там адрес имени предмета зависит от типа предмета. Сам не проверял правда

Сейчас попробуем.
  Ответить с цитированием
Старый 16.08.2013, 07:43   #974
 Разведчик
Аватар для foradey83
 
foradey83 никому не известный тип
Регистрация: 01.08.2013
Сообщений: 6
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

у меня так не пошло:
var
WNICK: DWORD;
_NICK:array [0..31] of WideChar;


ReadProcessMemory (hProcess, Pointer($B8FBCC), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$1C), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$34), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$670), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$0), @_NICK, 32, WRD);
Label7.Caption:=WideCharToString(_NICK);

только ТАК (без 1С)
var
WNICK: DWORD;
_NICK:array [0..31] of WideChar;


ReadProcessMemory (hProcess, Pointer($B8FBCC), @WNICK, sizeof(WNICK), WRD);
//ReadProcessMemory (hProcess, Pointer(WNICK+$1C), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$34), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$670), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$0), @_NICK, 32, WRD);
Label7.Caption:=WideCharToString(_NICK);

Последний раз редактировалось foradey83; 16.08.2013 в 07:45.
  Ответить с цитированием
Старый 16.08.2013, 11:59   #975
 Разведчик
Аватар для vladegorov7
 
vladegorov7 никому не известный тип
Регистрация: 11.07.2013
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от foradey83Посмотреть сообщение
у меня так не пошло:
var
WNICK: DWORD;
_NICK:array [0..31] of WideChar;


ReadProcessMemory (hProcess, Pointer($B8FBCC), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$1C), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$34), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$670), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$0), @_NICK, 32, WRD);
Label7.Caption:=WideCharToString(_NICK);

только ТАК (без 1С)
var
WNICK: DWORD;
_NICK:array [0..31] of WideChar;


ReadProcessMemory (hProcess, Pointer($B8FBCC), @WNICK, sizeof(WNICK), WRD);
//ReadProcessMemory (hProcess, Pointer(WNICK+$1C), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$34), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$670), @WNICK, sizeof(WNICK), WRD);
ReadProcessMemory (hProcess, Pointer(WNICK+$0), @_NICK, 32, WRD);
Label7.Caption:=WideCharToString(_NICK);

Хм, у меня все работает

Добавлено через 2 минуты
Все таки ячейку прочитать не удается. Все грешу на +с и +[(1-31(40))]

Добавлено через 5 часов 14 минут
Код:
ReadProcessMemory (hProcess, Pointer(BaseAdress), @INV, sizeof(INV), NoB);
ReadProcessMemory (hProcess, Pointer(INV+BaseAdressPlus), @INV, sizeof(INV), NoB);
ReadProcessMemory (hProcess, Pointer(INV+BaseAdressPlus2), @INV, sizeof(INV), NoB);
ReadProcessMemory (hProcess, Pointer(INV+INVAdress), @INV, sizeof(INV), NoB);
ReadProcessMemory (hProcess, Pointer(INV+$10), @INVMax, sizeof(INVMax), NoB);
ReadProcessMemory (hProcess, Pointer(INVMax+$C), @INVStruct, sizeof(INVStruct), NoB);
ReadProcessMemory (hProcess, Pointer(INVStruct+$0*4), @ITEMStruct, sizeof(ITEMStruct), NoB);
ReadProcessMemory (hProcess, Pointer(ITEMStruct+$4), @ITEMID, sizeof(ITEMID), NoB);
Подскажите, что тут не так. голову уже себе с этим инвентарем сломал

Последний раз редактировалось vladegorov7; 16.08.2013 в 17:14. Причина: Добавлено сообщение
  Ответить с цитированием
Ответ


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Руоф] Адреса и оффсеты Kitsune Разработка ПО для Perfect World 200 27.06.2014 22:34
оффсеты Maty Общение разработчиков 8 14.03.2012 21:00
Нужны адреса и оффсеты PWI Mr_R@NDOM Общение разработчиков 8 14.09.2011 23:01
[Помогите!] Адреса и Оффсеты для клиента 1.3.4 - 1.4.1 _Wolf_ Общение разработчиков 1 23.08.2011 17:34

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

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

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net