|
РУОФФ Адреса и оффсеты - Разработка ПО для Perfect World - Бюро разработчиков Zhyk.Ru: создание ботов, снифферов и прочих программ для Perfect World |
14.04.2012, 02:16
|
#301
|
|
|
|
Разведчик
|
Регистрация: 07.09.2010
Сообщений: 8
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: РУОФФ Адреса и оффсеты
|
|
|
14.04.2012, 03:24
|
#302
|
|
|
|
Разведчик
|
Регистрация: 19.10.2011
Сообщений: 29
Популярность: 12
Сказал(а) спасибо: 7
Поблагодарили 8 раз(а) в 7 сообщениях
|
Re: РУОФФ Адреса и оффсеты
|
Цитата: |
|
|
|
|
Сообщение от BritishColonist |
|
|
|
|
|
|
|
ExtraEffectsPtr:
+0 - Effect1Id (dword) // идентификатор первого свойства
+C - Effect1Value (float/dword) // значение свойства (например, для +25% прочности здесь будет лежать дробное число 0.25, а для +7 интеллекта - просто 7, но уже целого типа)
+1C - Effect2Id (dword) // те же данные второго свойства
+28 - Effect2Value (float/dword)
+38 - Effect3Id (dword) // ..и третьего
+44 - Effect3Value (float/dword)
Но свойств может быть больше трёх, надеюсь, не возникнет проблем с логикой подсчётов смещений для остальных свойств. Насчёт пения и скорости атаки - точных типов и идентификаторов не помню, кому надо - проверите сами.
Да-да, это те самые смещения, что используются в автокрафтере пения, выложенном Домиником в разделе "боты/читы/скрипты". Я решил-таки поделиться ими с пабликом, только умоляю, не надо теперь плодить свои "оригинальные" программы по крафту.
|
|
|
|
|
|
Спасибо
Есть у кого список готовых соответствий EffectXId к названию свойства и типов данных EffectXValue для него?
|
|
|
14.04.2012, 15:00
|
#303
|
|
|
|
Разведчик
|
Регистрация: 12.12.2010
Сообщений: 4
Популярность: 14
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
|
Re: РУОФФ Адреса и оффсеты
кто подскажет как добраться к панельке клавиш F1-F9? нашол только смещения для тех панелек что скрываются. а как добратся к той, что постоянно на виду?
|
|
|
14.04.2012, 17:49
|
#304
|
|
|
|
Пехотинец
|
Регистрация: 21.03.2012
Сообщений: 83
Популярность: 1178
Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
|
Re: РУОФФ Адреса и оффсеты
|
|
|
14.04.2012, 19:25
|
#305
|
|
|
|
Разведчик
|
Регистрация: 12.12.2010
Сообщений: 4
Популярность: 14
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
|
Re: РУОФФ Адреса и оффсеты
это я знаю. перефразирую вопрос- как определить, которая сейчас видима?
|
|
|
16.04.2012, 23:31
|
#306
|
|
|
|
Разведчик
|
Регистрация: 20.04.2011
Сообщений: 16
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: РУОФФ Адреса и оффсеты
допустим, хочу посмотреть имя персонажа.
каким образом этом сделать?
Код:
var
wid:integer;
wwid: dword;
NoB:dword;
begin
try
readprocessmemory(hprocess, pointer($B280C4),@wwid,sizeof(wwid),NoB);
readprocessmemory(hprocess, pointer(wwid+$34),@wwid,sizeof(wwid),NoB);
readprocessmemory(hprocess, pointer(wwid+$0638),@wwid,sizeof(wwid),NoB);
except
end;
end;
в итоге, как я понимаю, в переменной wwid у нас таки и имя.. как его в string перевести? поправьте косяк, если с типами изначально не так..
|
|
|
17.04.2012, 00:18
|
#307
|
|
|
|
Разведчик
|
Регистрация: 14.09.2011
Сообщений: 2
Популярность: 12
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: РУОФФ Адреса и оффсеты
Код:
+060С ActivePetId /ID призванного ездового пета. =0 если не призван/ ?
работает
+ в копилку
Код:
BA +1C + $34 + $a2c /откат Руна переноса Id=14351/
я читаю имя так:
Код:
hProcess=OpenProcess(PROCESS_ALL_ACCESS, False, Pid)
ReadProcessMemory(hProcess,(#GA),@dat,SizeOf(Dat),rw)
ReadProcessMemory(hProcess,(Dat+$34),@dat,SizeOf(Dat),rw)
ReadProcessMemory(hProcess,(Dat+$638),@dat,SizeOf(Dat),rw)
ReadProcessMemory(hProcess,(Dat+0),@name,32,rw)
CloseHandle(hProcess)
язык бейсик
dat: dword
name: string(Юникод)
|
|
|
Пользователь сказал cпасибо:
|
|
17.04.2012, 03:27
|
#308
|
|
|
|
Сержант
|
Регистрация: 16.02.2012
Сообщений: 105
Популярность: 651
Сказал(а) спасибо: 19
Поблагодарили 39 раз(а) в 31 сообщениях
|
Re: РУОФФ Адреса и оффсеты
________________
backup - акт проявления трусости
|
|
|
17.04.2012, 06:05
|
#309
|
|
|
|
Пехотинец
|
Регистрация: 19.02.2010
Сообщений: 98
Популярность: 650
Сказал(а) спасибо: 23
Поблагодарили 150 раз(а) в 45 сообщениях
|
Re: РУОФФ Адреса и оффсеты
а я параметры итемов в инвентаре получаю так) ну нуные)
Код:
var
tHPInterval1,tHPInterval2,tHPInterval3,tHPInterval4,tHPInterval5,tHPInterval6,tHPInterval7,
tMPInterval1,tMPInterval2,tMPInterval3,tMPInterval4,tMPInterval5,tMPInterval6,tMPInterval7: Cardinal;
HP,HPMax,MP,MPMax,CHI,Level,TekOpit,Tekdux,Metkost,MinFizAttack,MaxFizAttack,
MinMagAttack,MaxMagAttack,Uklonenie, WIDPersonaja, ClassPersonaja, GoldPersonaja:Integer;
tIntervalVibrasivanieMusora: Cardinal;
tOtkritiyaKorobok: Cardinal;
tSkupkaSShopa: Cardinal;
tTochit: Cardinal;
ItemId:array [0..63] of Integer;
ItemCount:array [0..63] of Integer;
itemName:array[0..63] of String;
itemType:array[0..63] of Integer;
ItemTochka:array [0..63] of Integer;
MaksKolYacheek: integer;
SkillId:array [0..500] of Integer;
SkillName:array [0..500] of String;
ActiveSkillCnt, PassiveSkillCnt:Integer;
CurrentVersion:String;
procedure ItemsIdAndItemsName;
var
IdPredmeta, KolPredmeta,MaksYacheekInventar, TypePredmeta,ttochka,tGold:Integer;
WGAME_ADD, PlayerStruct, Inventory, NoB, IdPredmetaI, nameI:DWord;
i,j:Integer;
itemNname:array[0..63] of widechar;
itemmname: string;
begin
if hProcess <> 0 then
begin
ReadProcessMemory (hProcess, Pointer($B280C4), @WGAME_ADD, sizeof(WGAME_ADD), NoB);
ReadProcessMemory (hProcess, Pointer(WGAME_ADD+$34), @PlayerStruct, sizeof(PlayerStruct), NoB);
ReadProcessMemory (hProcess, Pointer(PlayerStruct+$CAC), @Inventory, sizeof(Inventory), NoB); //Читаем значение HP
ReadProcessMemory (hProcess, Pointer(Inventory+$10),@MaksYacheekInventar,sizeof(MaksYacheekInventar),NoB);
ReadProcessMemory (hProcess, Pointer(PlayerStruct+$1174), @tGold, sizeof(tGold), NoB); //Читаем значение HP
GoldPersonaja:=tGold;
MaksKolYacheek:= MaksYacheekInventar;
for i:=0 to (MaksYacheekInventar-1) do
begin
IdPredmeta := 0;
ReadProcessMemory (hProcess, Pointer(Inventory+$C),@IdPredmetaI,sizeof(IdPredmetaI),NoB);
ReadProcessMemory (hProcess, Pointer(IdPredmetaI+$4*i),@IdPredmetaI,sizeof(IdPredmetaI),NoB);
ReadProcessMemory (hProcess, Pointer(IdPredmetaI+$8),@IdPredmeta,sizeof(IdPredmeta),NoB);
ReadProcessMemory (hProcess, Pointer(IdPredmetaI+$10),@KolPredmeta,sizeof(KolPredmeta),NoB);
ReadProcessMemory (hProcess, Pointer(IdPredmetaI+$4),@TypePredmeta,sizeof(TypePredmeta),NoB);
if (TypePredmeta = 0) or (TypePredmeta = 3) then
begin
ReadProcessMemory (hProcess, Pointer(IdPredmetaI+$e0),@nameI,sizeof(nameI),NoB);
ReadProcessMemory (hProcess, Pointer(nameI+$C),@itemNname,64,NoB);
end;
if (TypePredmeta = 17) or (TypePredmeta = 11) then
begin
ReadProcessMemory (hProcess, Pointer(IdPredmetaI+$4C),@nameI,sizeof(nameI),NoB);
ReadProcessMemory (hProcess, Pointer(nameI+$8),@itemNname,64,NoB);
end;
if TypePredmeta = 2 then
begin
ReadProcessMemory (hProcess, Pointer(IdPredmetaI+$CC),@nameI,sizeof(nameI),NoB);
ReadProcessMemory (hProcess, Pointer(nameI +$8),@itemNname,64,NoB);
end;
if (TypePredmeta = 8) or (TypePredmeta = 9) or (TypePredmeta = 22) or (TypePredmeta = 23) then
begin
ReadProcessMemory (hProcess, Pointer(IdPredmetaI+$54),@nameI,sizeof(nameI),NoB);
ReadProcessMemory (hProcess, Pointer(nameI +$C),@itemNname,64,NoB);
end;
if TypePredmeta = 15 then
begin
ReadProcessMemory (hProcess, Pointer(IdPredmetaI+$E8),@nameI,sizeof(nameI),NoB);
ReadProcessMemory (hProcess, Pointer(nameI +$C),@itemNname,64,NoB);
end;
if (TypePredmeta = 5) or (TypePredmeta = 10) or (TypePredmeta = 13) or (TypePredmeta = 16) or (TypePredmeta = 19) or (TypePredmeta = 20) or (TypePredmeta = 27) or (TypePredmeta = 31) or (TypePredmeta = 32) or (TypePredmeta = 38) or (TypePredmeta = 40) or (TypePredmeta = 46) then
begin
ReadProcessMemory (hProcess, Pointer(IdPredmetaI+$4C),@nameI,sizeof(nameI),NoB);
ReadProcessMemory (hProcess, Pointer(nameI +$4),@itemNname,64,NoB);
end;
if TypePredmeta = 43 then
begin
ReadProcessMemory (hProcess, Pointer(IdPredmetaI+$54),@nameI,sizeof(nameI),NoB);
ReadProcessMemory (hProcess, Pointer(nameI +$4),@itemNname,64,NoB);
end;
if (TypePredmeta = 36) or (TypePredmeta = 37) then
begin
ReadProcessMemory (hProcess, Pointer(IdPredmetaI+$B8),@nameI,sizeof(nameI),NoB);
ReadProcessMemory (hProcess, Pointer(nameI +$4),@itemNname,64,NoB);
end;
if TypePredmeta = 41 then
begin
ReadProcessMemory (hProcess, Pointer(IdPredmetaI+$10C),@nameI,sizeof(nameI),NoB);
ReadProcessMemory (hProcess, Pointer(nameI +$4),@itemNname,64,NoB);
end;
if TypePredmeta = 26 then
begin
ReadProcessMemory (hProcess, Pointer(IdPredmetaI+$A0),@nameI,sizeof(nameI),NoB);
ReadProcessMemory (hProcess, Pointer(nameI +$4),@itemNname,64,NoB);
end;
if TypePredmeta = 4 then
begin
ReadProcessMemory (hProcess, Pointer(IdPredmetaI+$B4),@nameI,sizeof(nameI),NoB);
ReadProcessMemory (hProcess, Pointer(nameI +$8 +$8),@itemNname,64,NoB);
end;
if TypePredmeta = 34 then
begin
ReadProcessMemory (hProcess, Pointer(IdPredmetaI+$B4),@nameI,sizeof(nameI),NoB);
ReadProcessMemory (hProcess, Pointer(nameI +$4),@itemNname,64,NoB);
end;
if TypePredmeta = 6 then
begin
ReadProcessMemory (hProcess, Pointer(IdPredmetaI+$D0),@nameI,sizeof(nameI),NoB);
ReadProcessMemory (hProcess, Pointer(nameI +$C),@itemNname,64,NoB);
end;
if TypePredmeta = 7 then
begin
ReadProcessMemory (hProcess, Pointer(IdPredmetaI+$D0),@nameI,sizeof(nameI),NoB);
ReadProcessMemory (hProcess, Pointer(nameI +$4),@itemNname,64,NoB);
end;
if TypePredmeta = 18 then
begin
ReadProcessMemory (hProcess, Pointer(IdPredmetaI+$C4),@nameI,sizeof(nameI),NoB);
ReadProcessMemory (hProcess, Pointer(nameI +$4),@itemNname,64,NoB);
end;
if (TypePredmeta = 15) or (TypePredmeta = 0) or (TypePredmeta = 3) then
begin
ReadProcessMemory (hProcess, Pointer(IdPredmetaI+$84),@ttochka,sizeof(ttochka),NoB);
ItemTochka[i]:= ttochka;
end
else
begin
ItemTochka[i]:= -1;
end;
ItemId[i]:=IdPredmeta;
ItemCount[i] := KolPredmeta;
ItemType[i] := TypePredmeta;
itemmname:= '';
for j:=0 to 63 do
begin
itemmname:=itemmname + itemNname[j];
end;
ItemName[i] := itemmname;
if ItemId[i]>0 then
begin
ItemName[i] := itemmname;
end
else
ItemName[i] := 'Пустая ячейка'
end;
end;
end;
Добавлено через 6 минут
Кстать кто нибудь знает оффсеты названиям предмета у которых тип предмета не 0,2,3,4,5,6,7,,8,9,10,11,13,15,16,17,18,19,20,22,2 3,26,27,31,32,34,36,37,38,40,41,43,46,
прост кода оффсеты не правильные бот показывает названия предыдущего итема
________________
PWA for PWPVP
Автор программы PwRuf - Bot и PwRuf - Crafter
Последний раз редактировалось rufat2005; 17.04.2012 в 06:11.
Причина: Добавлено сообщение
|
|
|
17.04.2012, 12:25
|
#310
|
|
|
|
Сержант
|
Регистрация: 07.09.2010
Сообщений: 124
Популярность: 147
Сказал(а) спасибо: 22
Поблагодарили 87 раз(а) в 18 сообщениях
|
Re: РУОФФ Адреса и оффсеты
|
|
|
17.04.2012, 16:48
|
#311
|
|
|
|
Сержант
|
Регистрация: 16.02.2012
Сообщений: 105
Популярность: 651
Сказал(а) спасибо: 19
Поблагодарили 39 раз(а) в 31 сообщениях
|
Re: РУОФФ Адреса и оффсеты
________________
backup - акт проявления трусости
|
|
|
17.04.2012, 19:21
|
#312
|
|
|
|
Сержант
|
Регистрация: 07.09.2010
Сообщений: 124
Популярность: 147
Сказал(а) спасибо: 22
Поблагодарили 87 раз(а) в 18 сообщениях
|
Re: РУОФФ Адреса и оффсеты
Вообще-то в структуре игрока есть указатель на массив сопартийцев.
|
|
|
17.04.2012, 21:24
|
#313
|
|
|
|
Разведчик
|
Регистрация: 20.04.2011
Сообщений: 16
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: РУОФФ Адреса и оффсеты
спасибо, начинаю понимать.. через полчасика попробую вытащить имя.. начинаем с малого, а там посмотрим
Добавлено через 2 минуты
нашел спасибку, оказывается надо было 10 сообщений (*флуд*)
Добавлено через 30 минут
Код:
//nname : string - глобально объявлена
//name : TLabel - ну понятно чо, куда выводится на форме
var
NoB:dword;
dat:dword;
begin
ClientWindow:=FindWindow(nil, PChar('Perfect World'));
GetWindowThreadProcessId(ClientWindow,@ProcessId);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS,false,processid);
try
ReadProcessMemory(hProcess,pointer($B27A04),@dat,SizeOf(dat),NoB);
ReadProcessMemory(hProcess,pointer(dat+$34),@dat,SizeOf(dat),NoB);
ReadProcessMemory(hProcess,pointer(dat+$638),@dat,SizeOf(dat),NoB);
ReadProcessMemory(hProcess,pointer(dat+$0),@nname,32,NoB);
name.Caption:=nname;
except
end;
end;
или лыжи не едут, или я с ума сошла..
nname - inaccesible value. что не так?
Добавлено через 1 час 24 минуты
мутотень в типах была.. разобрался.
Код:
nname: array[1..32]of wchar;
name.caption:=string(nname);
и все ок
Последний раз редактировалось nmartinez; 17.04.2012 в 22:48.
Причина: Добавлено сообщение
|
|
|
18.04.2012, 02:11
|
#314
|
|
|
|
Сержант
|
Регистрация: 16.02.2012
Сообщений: 105
Популярность: 651
Сказал(а) спасибо: 19
Поблагодарили 39 раз(а) в 31 сообщениях
|
Re: РУОФФ Адреса и оффсеты
________________
backup - акт проявления трусости
|
|
|
18.04.2012, 18:17
|
#315
|
|
|
|
Рыцарь-капитан
|
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
|
Re: РУОФФ Адреса и оффсеты
________________
--------------------------------------------
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 работающий с включенной игрой.
--------------------------------------------
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 08:41.
|
|