Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Perfect World
You last visited: Today at 21:16

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Rus. server

Discussion on Rus. server within the Perfect World forum part of the MMORPGs category.

Reply
 
Old 06/01/2009, 13:42   #286
 
elite*gold: 0
Join Date: Apr 2009
Posts: 49
Received Thanks: 1
Quote:
Originally Posted by silkytail View Post
Еше как ищет.
Да, все ищет. То я ступил и искал не там, где надо
Orion33 is offline  
Old 06/01/2009, 15:54   #287
 
BuBucekTop's Avatar
 
elite*gold: 0
Join Date: Nov 2007
Posts: 160
Received Thanks: 28
О, модер объявился из спячки... Требует чтоб всё было на английском....
Походу нам придётся искать новое место для тусовки, ибо это, я чую, скоро прикроют.
BuBucekTop is offline  
Old 06/01/2009, 16:15   #288
 
elite*gold: 0
Join Date: Apr 2009
Posts: 49
Received Thanks: 1
Вчера этой темы не было, кстати. Сегодня, видимо, разблочили. Надо сохранить, пока не поздно
Orion33 is offline  
Old 06/02/2009, 08:24   #289
 
silkytail's Avatar
 
elite*gold: 0
Join Date: Jun 2008
Posts: 142
Received Thanks: 13
Легкий способ - поиск паттернов кода по коду и маске, определение используемых адресов. Продвинутый способ - с использованием простого дизассемблера.
silkytail is offline  
Old 06/02/2009, 12:46   #290
 
elite*gold: 0
Join Date: Apr 2009
Posts: 237
Received Thanks: 403
Question

Спасибо за совет.
Но опять вернусь к инжекту кода
Вот, например, я написал выделение цели ( [[[$009771BC]+ $20]+ $a68),
Quote:
mov eax,DWORD PTR [$009771BC]
mov ecx, p1 // target id
add eax,$20
mov eax,DWORD PTR [eax]
add eax,$a68
mov [eax], ecx
В первом посте , после записи в память id цели, идут следующие строки:
Quote:
add ecx, $EC
mov edx, $005a5c00
call edx
Я правильно понял, что это функция выполнения действия (подобрать, взлететь, выделить)?
dwar is offline  
Old 06/02/2009, 19:58   #291
 
silkytail's Avatar
 
elite*gold: 0
Join Date: Jun 2008
Posts: 142
Received Thanks: 13
Это на самом деле может быть все что угодно, начиная от какого-нибудь менеджера методов обьекта типа игрок и заканчивая функцией "сформировать и отправить пакет определенного типа"
Как искать .. как искать зверей в лесу? Идешь и ищешь Кто долго копаются в клиенте знают много злачных мест, и примерная схема логики работы может подсказать нужное направление.
silkytail is offline  
Old 06/02/2009, 20:01   #292
 
silkytail's Avatar
 
elite*gold: 0
Join Date: Jun 2008
Posts: 142
Received Thanks: 13
А ты вообще в контексте клиента свой код пускаешь или как ?
silkytail is offline  
Old 06/02/2009, 21:11   #293
 
elite*gold: 0
Join Date: Apr 2009
Posts: 237
Received Thanks: 403
Да, в контексте программы Ошибка возникает (именно в клиенте игры) при любой попытке записи в стек или вызове call.

Выполняемый код. Функционирует, т.е. цель выделяется (простая запись id цели в память).
Quote:
procedure SelectMonster(MonID: PParams);stdcall;
var
P1: cardinal;
begin
P1:=MonID^.Param1;
asm
mov eax, DWORD PTR [$009771BC]
mov ecx, P1
add eax,$20
mov eax,DWORD PTR [eax]
add eax,$a68
mov [eax], ecx
end;
end;
Но уже простая замена записи в регистр ecx значения P1, на помещение этого самого значения в стек (push P1), приводит к вышеуказанной ошибке. То же самое и с call.
dwar is offline  
Old 06/02/2009, 22:54   #294
 
elite*gold: 0
Join Date: Apr 2009
Posts: 49
Received Thanks: 1
Не могу понять, за что зацепиться, чтобы найти смещения для координат чара. Подскажите, куда копать?
Orion33 is offline  
Old 06/02/2009, 23:43   #295
 
silkytail's Avatar
 
elite*gold: 0
Join Date: Jun 2008
Posts: 142
Received Thanks: 13
Quote:
Originally Posted by dwar View Post
Но уже простая замена записи в регистр ecx значения P1, на помещение этого самого значения в стек (push P1), приводит к вышеуказанной ошибке.
дык. Нельзя просто так заменять. Приведи код, который не работает.
silkytail is offline  
Old 06/03/2009, 02:06   #296
 
elite*gold: 0
Join Date: Apr 2009
Posts: 237
Received Thanks: 403
После долгих раскопок, вот что получилось для имени игрока (оба дают имя чара):
[[[[[[$009771BC] +$04]+$08]+$1f0]+$16c]+$74]+$0
[[[[[[[[$009771BC] +$04]+$08]+$1f0]+$1a8]+$0c]+$16c]+$74]+$0

Версия клиента
[$00917480]

Билд клиента
[$00917484]
dwar is offline  
Old 06/03/2009, 08:21   #297
 
silkytail's Avatar
 
elite*gold: 0
Join Date: Jun 2008
Posts: 142
Received Thanks: 13
ну, может быть два варианта. Либо ты портишь edx, который дельфя не сохраняет, либо нарушаешь балансировку стека

Quote:
Каким образом его надо записать, чтобы он работал?
А ты уверен, что по адресу 005AE040 для твоего клиента находится начало нужной функции?
silkytail is offline  
Old 06/03/2009, 10:30   #298
 
elite*gold: 0
Join Date: Apr 2009
Posts: 49
Received Thanks: 1
dwar, поделись, пожалуйста, каким образом нашел промежуточные смещения? Нужно сделать тоже самое для реализации передвижения.
Orion33 is offline  
Old 06/03/2009, 11:55   #299
 
BuBucekTop's Avatar
 
elite*gold: 0
Join Date: Nov 2007
Posts: 160
Received Thanks: 28
dwar, твои ошибки и AV являются следствием элементарного незнания/непонимания того, как объекты хранятся в памяти.
В-кратце поясняю :
1) большая часть функций типа __thiscall (в переводе на русский это будет this->subroutine)
2) особенность __thiscall в том, что этот самый this, то есть экземпляр класса ОБЯЗАТЕЛЬНО заносится в ecx, который и пушится перед вызовом функции.

В твоём коде, какгбы это по-мягче сказать.... ахинея :

Code:
asm
  mov eax, DWORD PTR [$009771BC]
  [B]mov ecx, P1[/B]
  add eax,$20
  mov eax,DWORD PTR [eax]
  add eax,$a68
  [B]mov [eax], ecx[/B]
end;
жирным выделено то, что делать нельзя.


Правильный инжект выглядит так :

Code:
procedure SelMonCall(MonID: PParams); Stdcall;
var
  Address: pointer;
  P1: DWORD;
begin
  Address := Pointer(PW_SelMon_Call);
  P1 := MonID^.Param1 ;          // SN того кого хочешь взять в таргет
  asm
    pushad
    mov eax,DWORD PTR [PW_BASE_ADDR]
    push P1
    mov ecx,DWORD PTR [eax+$20]
    add ecx,$0EC
    call address
    popad
  end;
end;
PW_BASE_ADDR вы уже знаете, а PW_SelMon_Call я вам пока не скажу - найти его будет вашим домашним заданием =)

P.S. Не забываем голосовать за Russian в теме и тогда у нас будет свой, русский раздел.
BuBucekTop is offline  
Thanks
1 User
Old 06/03/2009, 13:18   #300
 
elite*gold: 0
Join Date: Apr 2009
Posts: 237
Received Thanks: 403
Quote:
Originally Posted by Orion33 View Post
dwar каким образом нашел промежуточные смещения?
Стандартным, при помощи CE и долго-нудного отсеивания результатов. Для имени чара, вначале ищется текст в юникоде, ну а потом поехало, ведь уже после второго смещения выдается список как минимум из сотни адресов, но, зная, какие не дают результата, отсеивание идет быстро. Больше здесь советов дать невозможно.
А на счет передвижения, я тоже сейчас над этим работаю, но пока нет результата. Пытался искать float значения, но они ни к чему не привели. Самый лучший вариант – поиск Unknown initial value, с последующим отсеиванием changed/unchanged, - долго, трудоемко, но вероятность получить требуемый результат выше.

Quote:
Originally Posted by BuBucekTop View Post
1) большая часть функций типа __thiscall (в переводе на русский это будет this->subroutine)
2) особенность __thiscall в том, что этот самый this, то есть экземпляр класса ОБЯЗАТЕЛЬНО заносится в ecx, который и пушится перед вызовом функции.
Учитель, спасибо за разъяснения!
Но, например, для записи значения в память, такой то код использовать можно?
Code:
asm
  mov eax, DWORD PTR [Addr]
  [b]mov edx, P1[/b]
  add eax,$20
  mov eax,DWORD PTR [eax]
  add eax,$a68
  mov [eax], edx
end;
P.S.
[$00981c2c] - Кол-во сделанных кликов в окне клиента

Дальше, два адреса со значениями, которые меняются при перемещении чара. Что за значения, понятия не имею, я просто обратил на них внимание и нашел для них базовый адрес.
$009771d0+$04+$264
$009771BC+$08+$44+$08+$264
dwar is offline  
Reply




All times are GMT +1. The time now is 21:16.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.