 |
РУОФФ Адреса и оффсеты - Разработка ПО для Perfect World - Бюро разработчиков Zhyk.Ru: создание ботов, снифферов и прочих программ для Perfect World |
26.04.2012, 10:43
|
#391
|
|
|
|
Разведчик
|
 Регистрация: 19.12.2010
 Сообщений: 9
 Популярность: 10
 Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: РУОФФ Адреса и оффсеты
Прошу вашей помощи по структуре лута. Поделитесь, пожалуйста, смещением WID. Заранее спс.
|
|
|
26.04.2012, 11:58
|
#392
|
|
|
|
Сержант
|
 Регистрация: 18.12.2009
 Сообщений: 152
 Популярность: 1075
 Сказал(а) спасибо: 45
Поблагодарили 204 раз(а) в 67 сообщениях
|
Re: РУОФФ Адреса и оффсеты
|
|
|
26.04.2012, 12:33
|
#393
|
|
|
|
Разведчик
|
 Регистрация: 21.10.2011
 Сообщений: 13
 Популярность: 22
 Сказал(а) спасибо: 2
Поблагодарили 6 раз(а) в 5 сообщениях
|
Re: РУОФФ Адреса и оффсеты
Привет Всем). Движение (Walk1=00494620 Walk2=00498290 Walk3=00494EC0) периодически сбрасывает клиента. Функции в новом клиенте (210) отличаются от функций в старом клиенте (205). Если новая версия ассемблера на движение?
Текущий код:
asm
pushad
mov eax, dword ptr [PW_BASE_ADDRESS]
mov eax, dword ptr [eax +PW_DYNAMIC_BASE_OFFSET]
mov esi, dword ptr [eax +PW_ROLE_BASE_OFFSET]
mov ecx, dword ptr [esi +PW_ROLE_HPWORKMAN_OFFSET]
push $01
call Address1
mov edi, eax
lea eax, dword ptr [ecx + $0c]
push eax
push MV
mov ecx, edi
call Address2
mov ecx, dword ptr [esi + PW_ROLE_HPWORKMAN_OFFSET]
push 0
push 1
push edi
push 1
call Address3
mov eax, dword ptr [PW_BASE_ADDRESS]
mov eax, dword ptr [eax + PW_DYNAMIC_BASE_OFFSET]
mov eax, dword ptr [eax + PW_ROLE_BASE_OFFSET]
mov eax, dword ptr [eax + PW_ROLE_HPWORKMAN_OFFSET]
mov eax, dword ptr [eax + $30]
mov ecx, dword ptr [eax + 4]
mov eax, x
mov dword ptr[ecx + $20], eax
mov eax, z
mov dword ptr[ecx + $24], eax
mov eax, y
mov dword ptr[ecx + $28], eax
popad
end;
Спасибо)
|
|
|
26.04.2012, 14:00
|
#394
|
|
|
|
Разведчик
|
 Регистрация: 19.12.2010
 Сообщений: 9
 Популярность: 10
 Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: РУОФФ Адреса и оффсеты
gurin, Спасибо большое. Адрес WID был правильный. Косяк в поинте инжекта был....
|
|
|
26.04.2012, 17:25
|
#395
|
|
|
|
Разведчик
|
 Регистрация: 23.12.2011
 Сообщений: 42
 Популярность: 192
 Сказал(а) спасибо: 26
Поблагодарили 11 раз(а) в 9 сообщениях
|
Re: РУОФФ Адреса и оффсеты
Дайте 1.4.5 адрес сендера пакетов.
|
|
|
26.04.2012, 18:33
|
#396
|
|
|
|
Разведчик
|
 Регистрация: 01.11.2011
 Сообщений: 17
 Популярность: -20
 Сказал(а) спасибо: 0
Поблагодарили 16 раз(а) в 5 сообщениях
|
Re: РУОФФ Адреса и оффсеты
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: elementclient.exe
Версия приложения: 0.0.0.0
Отметка времени приложения: 4f3ca72e
Имя модуля с ошибкой: elementclient.exe
Версия модуля с ошибкой: 0.0.0.0
Отметка времени модуля с ошибкой: 4f3ca72e
Код исключения: c0000005
Смещение исключения: 000945f2
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789
ЗЫ Просьба помочь в чем дело вы летает после 2 х минут работы
[unfreeze]
addr = A57F3C
[base]
addr = A571E0
[inject]
packet = 63DB70
[walk]
x = 00494620
y = 00498290
z = 00494EC0
ofs1 = 34
ofs2 = 10BC
ofs3 = 18
ofs4 = 30
ofs5 = 4
ofs6 = 20
ofs7 = 24
ofs8 = 28
[Chat]
Start = 00A5CAB8
Number = 00A5CAC4
[game]
addr = A57ACC
online = A573C8
strenuously = game.addr +18 +8 +74 +1C4 +C +C +C +C +C +C +8 +121
[gamer]
ServerName = A57F38
addr = game.addr +34
Lvl = gamer.addr +048C
WID = gamer.addr +480
name = gamer.addr +66C +0
TargetId = gamer.addr +BD4
HP = gamer.addr +494
MP = gamer.addr +498
chi = gamer.addr +484
MaxHP = gamer.addr +4DC
MaxMP = gamer.addr +4E0
MaxChi =
Meditation = gamer.addr +6CC
WalkMode = gamer.addr +680
LocX = gamer.addr +3C
LocY = gamer.addr +44
LocZ = gamer.addr +40
GroundZ = gamer.addr +C18
TargetX = gamer.addr +116C +188
TargetY = gamer.addr +116C +190
TargetZ = gamer.addr +116C +18C
Cast = gamer.addr +72C
CurSkillID = gamer.addr +728 +8
CurSkillCD = gamer.addr +728 +10
ClassID = gamer.addr +674
EquipFly = gamer.addr +598
StrengthWeapon = gamer.addr +D1C +C +0 +68
StrengthWeaponMax = gamer.addr +D1C +C +0 +6C
BuffCount = gamer.addr +0370
Buffs = gamer.addr +036C +[I*4,0,[gamer.BaffCount]]
Skilling = gamer.addr +00B8
Mining = gamer.addr +0288
Experience = gamer.addr +049C
EquipGenie = gamer.addr +05с4
[party]
count = gamer.addr +070C +18
addr = gamer.addr +070C +14 +[I*4,0,6]
pl = gamer.addr +070C +14 +0 +C
[party_offset]
WID = +C
Lvl = +10
HP = +1C
MP = +20
MaxHP = +24
MaxMP = +28
LocX = +34
LocZ = +38
LocY = +3C
WalkMode = 0
[skills]
packet_addr = 00492A90
Count = gamer.addr +10EC
addr = gamer.addr +10E8 +[I*4,0,[skills.count]]
[skills_offset]
ID = +8
[Pet]
addr = gamer.addr +10D4
Num = pet.addr +8
WID = pet.addr +3C
HP = pet.addr +[[pet.num]*4+10] +1C
Loyale = pet.addr +[[pet.num]*4+10] +04
Hungry = pet.addr +[[pet.num]*4+10] +08
SkillID1 = pet.addr +[[pet.num]*4+10] +40
SkillID2 = pet.addr +[[pet.num]*4+10] +50
SkillID3 = pet.addr +[[pet.num]*4+10] +60
SkillID4 = pet.addr +[[pet.num]*4+10] +70
[mobs]
count = game.addr +1C +24 +14
addr = game.addr +1C +24 +18 +[i*4,0,300] +4
[mobs_offset]
LocX = +03C
LocZ = +040
LocY = +044
Type = +0B4
WID = +120
ID = +124
Lvl = +124
HP = +130
MaxHP = +178
Feature = +248
Name = +260 +0
Distance = +278
Enviropment= +2AC
MovFlag = +2B0
Action = +2B8
PTargetID = +2D4
MTargetID = +2D8
AttackFlag = +2DC
Buffs = +310 +[I*2,0,[mobs_offset.BuffsCount]]
BuffsCount = +314
Attack = +2C4
[lut]
count = game.addr +1C +28 +14
addr = game.addr +1C +28 +18 +[i*4,0,300] +4
packet_addr = 489470
[lut_offset]
LocX = +3C
LocY = +44
LocZ = +40
WID = +110
ID = +114
Type = +150
Lvl = +154
Distance = +158
Name = +168 +0
[inv]
count = gamer.addr +D18 +10
addr = gamer.addr +D18 +C +[I*4,0,[inv.count]]
[inv_offset]
ItemType = +04
WID = +08
Count = +10
Name = +40 +0
GlType = +4C +0
lvl = +58
StrengthCur = +68
StrengthMax = +6c
white = +A4
|
|
|
26.04.2012, 18:39
|
#397
|
|
|
|
Разведчик
|
 Регистрация: 17.09.2009
 Сообщений: 46
 Популярность: 1187
 Сказал(а) спасибо: 8
Поблагодарили 50 раз(а) в 13 сообщениях
|
Re: РУОФФ Адреса и оффсеты
Для работы с диалогами :
DialogOpAddr = $0077D3E0;
DlgCancelPush = $00950C18;
DlgNoPush = $00950C24;
DlgYesPush = $00950C08;
|
|
|
Пользователь сказал cпасибо:
|
|
26.04.2012, 18:40
|
#398
|
|
|
|
Пехотинец
|
 Регистрация: 21.03.2012
 Сообщений: 83
 Популярность: 1178
 Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
|
Re: РУОФФ Адреса и оффсеты
________________
╔═╗
║ ˑ ˑ ╬ ╬
╚═╝
|
|
|
26.04.2012, 18:42
|
#399
|
|
|
|
Разведчик
|
 Регистрация: 17.09.2009
 Сообщений: 46
 Популярность: 1187
 Сказал(а) спасибо: 8
Поблагодарили 50 раз(а) в 13 сообщениях
|
Re: РУОФФ Адреса и оффсеты
По поводу движения с помощью Walk1-Walk2-Walk3 подтверждаю - периодически выбивает клиент, хз почему, хз при каких условиях.
|
|
|
26.04.2012, 18:43
|
#400
|
|
|
|
Разведчик
|
 Регистрация: 01.11.2011
 Сообщений: 17
 Популярность: -20
 Сказал(а) спасибо: 0
Поблагодарили 16 раз(а) в 5 сообщениях
|
Re: РУОФФ Адреса и оффсеты
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
У меня переставало работать после определённого времени, когда я при каждом инжекте выделял/освобождал память под функцию. Спустя время функция выделения памяти возвращала ошибку, но ввиду отсутствия проверок функции всё равно инжектились в данные клиента. Выделил 1 раз при запуске и вылеты прекратились. Можно проверить этот вариант, поставив ShowMessage при ошибке выделения памяти. Если спустя 2 минуты начнёт мессагами спамить, значит дело в этом.
|
|
 |
|
 |
|
Walk1=00494620 ?
Walk2=00498290 ?
Walk3=00494EC0 ?
Последний раз редактировалось botovod2011; 26.04.2012 в 18:54.
|
|
|
26.04.2012, 19:02
|
#401
|
|
|
|
Пехотинец
|
 Регистрация: 21.03.2012
 Сообщений: 83
 Популярность: 1178
 Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
|
Re: РУОФФ Адреса и оффсеты
________________
╔═╗
║ ˑ ˑ ╬ ╬
╚═╝
|
|
|
26.04.2012, 19:08
|
#402
|
|
|
|
Разведчик
|
 Регистрация: 17.09.2009
 Сообщений: 46
 Популярность: 1187
 Сказал(а) спасибо: 8
Поблагодарили 50 раз(а) в 13 сообщениях
|
Re: РУОФФ Адреса и оффсеты
У меня для инжекта вот это код не менялся с момента написания, года 4 как.
Код:
//~~~~~~~~~~~~~~~~~~~~~~~
//~~~ Improved Inject function
//~~~~~~~~~~~~~~~~~~~~~~~
procedure TProcess.InjectFunc(Func: Pointer; aParams: Pointer; aParamsSize: DWORD);
var
hThread: THandle;
lpNumberOfBytes: DWORD;
ThreadAddr, ParamAddr: Pointer;
begin
if self.processHandle<>0 then
begin
// ---- Выделим место в памяти процесса и запишем туда нашу функцию
ThreadAddr := VirtualAllocEx(self.processHandle, 0, 256, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(self.processHandle, ThreadAddr, Func, 256, lpNumberOfBytes);
// ---- Также запишем параметры к ней
ParamAddr := VirtualAllocEx(self.processHandle, 0, aParamsSize, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(self.processHandle, ParamAddr, aParams, aParamsSize, lpNumberOfBytes);
// ---- Создадим поток, в котором это всё будет выполняться
hThread := CreateRemoteThread(self.processHandle, 0, 0, ThreadAddr, ParamAddr, 0, lpNumberOfBytes);
// ---- Ожидаем, пока функция отработает
WaitForSingleObject(hThread, INFINITE);
// ---- Подчищаем за собой
CloseHandle(hThread);
VirtualFreeEx(self.processHandle, ParamAddr, 0, MEM_RELEASE);
VirtualFreeEx(self.processHandle, ThreadAddr, 0, MEM_RELEASE);
end
end;
При этом боты пашут 24х7 месяцами - проблем не наблюдалось.
|
|
|
26.04.2012, 19:23
|
#403
|
|
|
|
Разведчик
|
 Регистрация: 01.11.2011
 Сообщений: 17
 Популярность: -20
 Сказал(а) спасибо: 0
Поблагодарили 16 раз(а) в 5 сообщениях
|
Re: РУОФФ Адреса и оффсеты
Спс убрал проблему след. образом
[walk]
x =
y =
z =
ofs1 = 34
ofs2 = 10BC
ofs3 = 18
ofs4 = 30
ofs5 = 4
ofs6 = 20
ofs7 = 24
ofs8 = 28
Все работает и не летает )
|
|
|
26.04.2012, 19:33
|
#404
|
|
|
|
Пехотинец
|
 Регистрация: 21.03.2012
 Сообщений: 83
 Популярность: 1178
 Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
|
Re: РУОФФ Адреса и оффсеты
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
IdCancel=00950C18
ButtonPress=005D40C0
NPCSelect=0064FBD0
|
|
 |
|
 |
|
мне бы для функции WinClose от krukovis
procedure WinClose(WinOffset: PParams); stdcall;
var
PW_Call: Pointer;
const
PW_BASE_ADDR=$B27A04;
PW_BTN_CLOSE= $ACC3BC;
begin
PW_Call := Pointer($ 616EA0);
WIN_OFFSET := WinOffset^.Param1;
asm
pushad
mov eax, PW_BASE_ADDR
mov eax, dword ptr [eax]
mov eax, dword ptr [eax+$1C]
mov eax, dword ptr [eax+$18]
mov eax, dword ptr [eax+$8]
mov eax, dword ptr [eax+WIN_OFFSET]
push eax
push PW_BTN_CLOSE
call PW_Call
popad
end;
end;
WinOffset нужен для окна диалога(если конечно изменились они). А так нужен адрес PW_Call
________________
╔═╗
║ ˑ ˑ ╬ ╬
╚═╝
|
|
|
26.04.2012, 19:58
|
#405
|
|
|
|
Сержант
|
 Регистрация: 18.12.2009
 Сообщений: 152
 Популярность: 1075
 Сказал(а) спасибо: 45
Поблагодарили 204 раз(а) в 67 сообщениях
|
Re: РУОФФ Адреса и оффсеты
небольшая поправочка к OnlineFlag
Код:
ingame = A573C8 // byte, персонаж в игре, но разрыв связи не определяет
online = A688EC // byte, произведен вход как минимум до выбора персонажа и есть связь с сервером
|
|
|
Пользователь сказал cпасибо:
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 17:03.
|
 |