|
РУОФФ Адреса и оффсеты - Разработка ПО для Perfect World - Бюро разработчиков Zhyk.Ru: создание ботов, снифферов и прочих программ для Perfect World |
08.08.2013, 18:48
|
#961
|
|
|
|
Разведчик
|
Регистрация: 11.05.2011
Сообщений: 41
Популярность: 305
Сказал(а) спасибо: 43
Поблагодарили 12 раз(а) в 7 сообщениях
|
Re: РУОФФ Адреса и оффсеты
|
Цитата: |
|
|
|
|
|
|
|
|
|
Нигде не забыл. Адреса видимо кривые. Я не хочу искать адреса для функции закрытия окна, потому что есть более совершенная функция работы с 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 этот диалог закрывается без проблем, а на нажатие кнопки 'Назад' не реагирует.
|
Цитата: |
|
|
|
|
|
|
|
Цитата: |
|
|
|
|
|
|
|
|
|
Нажатия клавиш - это ж моветон... Почему не инжектом?
|
|
|
|
|
|
К своему стыду, признаюсь, что пришлось пока тоже часть окошек закрывать посылкой ESC.
Ежели есть у кого соображения по поводу нажатия на "Крестик" или выбора элементов списка, буду благодарен.
|
|
|
08.08.2013, 21:54
|
#962
|
|
|
|
Разведчик
|
Регистрация: 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
|
|
|
|
Рыцарь-капитан
|
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
|
Re: РУОФФ Адреса и оффсеты
|
Цитата: |
|
|
|
|
|
|
|
|
|
Но никак не получается сделать передвижение по координатам, голова уже идет кругом.
|
|
|
|
|
|
Есть статьи по разработке бота на плюсах
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
|
|
|
|
Разведчик
|
Регистрация: 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
|
|
|
|
Пехотинец
|
Регистрация: 19.02.2010
Сообщений: 98
Популярность: 650
Сказал(а) спасибо: 23
Поблагодарили 150 раз(а) в 45 сообщениях
|
Re: РУОФФ Адреса и оффсеты
|
Цитата: |
|
|
|
|
|
|
|
|
|
Как получить хп выделенного моба, можно на примере?
Хп персонажа получил, работает.
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
|
|
|
|
Разведчик
|
Регистрация: 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
|
|
|
|
Разведчик
|
Регистрация: 23.06.2012
Сообщений: 43
Популярность: 427
Сказал(а) спасибо: 18
Поблагодарили 59 раз(а) в 35 сообщениях
|
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);
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;
Последний раз редактировалось fds255; 13.08.2013 в 09:42.
|
|
|
13.08.2013, 11:35
|
#968
|
|
|
|
Разведчик
|
Регистрация: 11.07.2013
Сообщений: 5
Популярность: 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);
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
|
|
|
|
Пехотинец
|
Регистрация: 19.02.2010
Сообщений: 98
Популярность: 650
Сказал(а) спасибо: 23
Поблагодарили 150 раз(а) в 45 сообщениях
|
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);
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
|
|
|
|
Разведчик
|
Регистрация: 27.05.2012
Сообщений: 7
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: РУОФФ Адреса и оффсеты
Кто-нибудь пытался запускать автополет по карте инжектами?
|
|
|
16.08.2013, 04:00
|
#971
|
|
|
|
Разведчик
|
Регистрация: 11.07.2013
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: РУОФФ Адреса и оффсеты
Добрый день. Подскажите новичку как считать название предмета, находящегося в n-ной ячейке инвентаря?
|
|
|
16.08.2013, 04:35
|
#972
|
|
|
|
Разведчик
|
Регистрация: 27.05.2012
Сообщений: 7
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: РУОФФ Адреса и оффсеты
|
|
|
16.08.2013, 04:46
|
#973
|
|
|
|
Разведчик
|
Регистрация: 11.07.2013
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: РУОФФ Адреса и оффсеты
|
|
|
16.08.2013, 07:43
|
#974
|
|
|
|
Разведчик
|
Регистрация: 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
|
|
|
|
Разведчик
|
Регистрация: 11.07.2013
Сообщений: 5
Популярность: 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);
|
|
|
|
|
|
Хм, у меня все работает
Добавлено через 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.
Причина: Добавлено сообщение
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 01:34.
|
|