Что нового

[Lineage II] Reverse Engineering

nowost

Знающий
Сообщения
178
Репутация
17
Взял первое что подвернулось под руку, а именно клиент линейки с пиратского сервера. Дизассемблируем. Получил примерно вот что.
9d1cc9cfa792.png

ищем какую либо функцию
f89e80cb144d.png

5ffb56e77792.png


можно ли отсюда каким то образом получить (проанализировав код) годные для использования в Аутоите данные ? Что то вроде структуры или базовый адрес или еще что то. Было бы супер круто если бы кто то показал небольшой пример как можно с этим работать.
 

lirikmel

Продвинутый
Сообщения
226
Репутация
84
Я уже писал про использование pattern
 
Автор
N

nowost

Знающий
Сообщения
178
Репутация
17
не могу найти к сожалению


Добавлено:
Сообщение автоматически объединено:

Немного погуглил, нашел несколько полезных вещей
Видео http://www.vivid-abstractions.net/downloads/InDem%20Present/VA%20Pattern%20Scanning.htm

видео с примерами на немецком
http://www.youtube.com/watch?v=t7liZ43CzfU
код:
Код:
#RequireAdmin
#include<NomadMemory.au3>

Global Const $Basepointer_Player_Pattern = "\x83\xC2\xFC\x89\x15\x00\x00\x00\x00"
Global Const $Basepointer_Player_Mask = "xxxxx????"
Global Const $Basepointer_Player_Offset = 0x06

Global Const $Player_offset = 0x28
Global Const $HP_Cur_Offset = 0x84

Global $HPID =_MemoryOpen(ProcessExists("maestia.exe"))
Global $Basepointer_Player=_MemoryScanEx($HPID,$Basepointer_Player_Pattern,$Basepointer_Player_Mask)
$Basepointer_Player = _MemoryRead($Basepointer_Player + $Basepointer_Player_Offset,$HPID,'dword')
$Basepointer_Player = _MemoryRead($Basepointer_Player,$HPID,'dword')
$Basepointer_Player = _MemoryRead($Basepointer_Player+$Player_offset,$HPID,'dword')
MsgBox(0,"",StringFormat("Current HP: %i", _MemoryRead($Basepointer_Player+$HP_Cur_Offset,$HPID,'dword'))

Func _MemoryScanEx($ah_Handle, $pattern, $mask , $after = False, $iv_addrStart = 0x00400000, $iv_addrEnd = 0x00FFFFFF, $step = 51200)
    If Not IsArray($ah_Handle) Then
        SetError(1)
        Return -1
    EndIf
    $pattern = StringRegExpReplace($pattern, "[^0123456789ABCDEFabcdef.]", "")
    If StringLen($pattern) = 0 Then
        SetError(2)
        Return -2
    EndIf
    If Stringlen($pattern)/2 <> Stringlen($mask) Then
        SetError(4)
        Return -4
    EndIf
    Local $formatedpattern=""
    Local $BufferPattern
    Local $BufferMask
    for $i = 0 to stringlen($mask)-1
        $BufferPattern = StringLeft($pattern,2)
        $pattern = StringRight($pattern,StringLen($pattern)-2)
        $BufferMask = StringLeft($mask,1)
        $mask = StringRight($mask,StringLen($mask)-1)
        if $BufferMask = "?" then $BufferPattern = ".."
        $formatedpattern = $formatedpattern&$BufferPattern
    Next
    $pattern = $formatedpattern
    For $addr = $iv_addrStart To $iv_addrEnd Step $step - (StringLen($pattern) / 2)
        StringRegExp(_MemoryRead($addr, $ah_Handle, "byte[" & $step & "]"), $pattern, 1, 2)
        If Not @error Then
            If $after Then
                Return StringFormat("0x%.8X", $addr + ((@extended - 2) / 2))
            Else
                Return StringFormat("0x%.8X", $addr + ((@extended - StringLen($pattern) - 2) / 2))
            EndIf
        EndIf
    Next
    Return -3
 EndFunc   ;==>_MemoryScanEx


и еще вопрос, где можно найти последнюю версию NomadMemory ? У автора есть официальная страничка ?
А вообще жаль конечно, что у нас все о монетизации только думают, никто слова лишнего ни скажет :whistle:
 

lirikmel

Продвинутый
Сообщения
226
Репутация
84
Дело не в монетизации просто ктото не умеет пользоваться поиском форума :-X
 
Автор
N

nowost

Знающий
Сообщения
178
Репутация
17
почемуто в гугле я нашел все тоже самое, что и ты выкладывал только намного быстрее. покопался действительно, речь идет об одном и томже )
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Потому что на форуме куча всего разжеванного. При чем тут монетизация? Просто с годами всем надоедает давать ссылки на одни и те же сообщения.
 
Автор
N

nowost

Знающий
Сообщения
178
Репутация
17
Есть ли что то разжеванное на эту тему ? поиск результатов не приносит почемуто.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Ну потому что либо тему коряво назвали либо она не относилась к конкретной игре, я сам лично писал целую портянку теории о том как это делается. Практических примеров ты в любом случае найдешь мало.

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

sebun

Знающий
Сообщения
81
Репутация
5
OffTopic:
Belfigor, не прими за критику, но есть одна деталь - поиск у форума довольно коряв. И не именно у этого форума, а у всех, phpBB, SMF, IPB и так далее - у них у всех примерно одинаковый алгоритм поиска, построенный на регулярных выражениях. К тому же многие новички не то, что не умеют поиском пользоваться, но и не знают, о чем спросить, что задать в поиск. А задав, читают чертову дюжину не относящихся к делу ответов. Естественно, возникает желание создать тему или пост. Другое дело, скажем, Google, который выдает сразу то, что нужно, но тут тоже проблема - форумы, в большинстве своем, запрещают индексацию своих страниц поисковыми роботами. Сам часто вместо использования поиска на форуме писал в Google что то типа:
Код:
site:autoit-script.ru как стать круче Belfigora
Но это из за запрета индексации работает не везде. Да и гугл тупит (попробуй напиши "заделка сучка".. он тебе кучу баб выдаст, голых). В итоге действительно нужные данные бывает трудно найти новичку. Отсюда и вопросы. Как вариант, мог бы предложить модифицировать поиск (модов под SMF не знаю таких), который выбирал бы темы по их релевантности, по количеству просмотров, по количеству постов и т.д., плюс в самом алгоритме не просто стояли операторы регулярок, но и имелась бы какая то база слов, словосочетаний. Нет, я не предлагаю сделать аналог гугля, это невозможно в рамках данного проекта, а вот улучшить поиск можно было бы. Но это так, размышления...
:whistle:
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Я вам больше скажу, от внешних поисковиков, раздел ботоводов вообще закрыт. Поэтому уже не первый год всем настоятельно рекомендую прочитывать весь раздел полностью. В этом и суть, я бы вообще запретил даже внутренний поиск по разделу :3. Хочешь что-то получить - приложи усилия для того чтобы сначала хотя бы изучить не то что все сообщения раздела, а хотя бы последние 5-6 страниц с названиями тем. Личей тут никогда не любили :smile:.
 

Z_Lenar

Продвинутый
Сообщения
209
Репутация
52
OffTopic:

2 sebun
У меня строка с запросом "заделка сучка", с кавычками и без, выводит ссылки на изделия из дерева.
Возможно по принципу яндекса используются Ваши предпочтения? :rofl:


lirikmel
Мне из текста вопроса только ясно что автор знает словосочетание "Reverse Engineering", и не знает что с этим делать...
 

lirikmel

Продвинутый
Сообщения
226
Репутация
84
опять весь раздел зафлудили -) , Давайте так вы мне конкретный вопрос я вам ответ или ссылку на тему где это было изложено в доступном варианте. .... потом из темки сделаем небольшой FAQ для будущих новичков,ведь все равно это постоянный вопрос.
ответ на первый вопрос http://autoit-script.ru/index.php/topic,7859.msg53418.html#msg53418 . Но сразу предупредить что начали мы не с того конца.Трудно объяснить новичку что такое паттерны и для чего это нужно в конкретном примере
 
Автор
N

nowost

Знающий
Сообщения
178
Репутация
17
Z_Lenar, логично заметить, что если бы я знал что делать с этим, то не создавал бы эту тему.

lirikmel

можно ли отсюда каким то образом получить (проанализировав код) годные для использования в Аутоите данные ? Что то вроде структуры или базовый адрес или еще что то. Было бы супер круто если бы кто то показал небольшой пример как можно с этим работать.
modify_inline.gif
вопрос был задан в первом посте. я не программист, вероятно вопрос задан неправильно. нужно начать издалека....
очень часто встречаются боты, которые работают со структурами. ( например тот же Д3 бот с овнеда ) Выглядит это все супер круто. Вот и хотелось бы узнать как можно получить эти структуры. Я так понимаю что только дизассемблером ничего не добиться.


Добавлено:
Сообщение автоматически объединено:

Belfigor [?]
Поэтому уже не первый год всем настоятельно рекомендую прочитывать весь раздел полностью. В этом и суть, я бы вообще запретил даже внутренний поиск по разделу :3.
smiley.gif
.
собственно не первый год тут, прочитал практически каждую тему, зачастую это единственный путь найти нужную информацию, открывать и читать все темы подряд начиная с последней страницы бородатого 2009го года :ok:
очень кстати помогает, находишь кучу полезных тем и отпадает куча вопросов сразу )
А запрещать поиск не нужно, и так очень сложно найти что то ) Я зачастую, делаю так - знаю что ты когдато выкладывал, или дварф или ли определенный код, просто открываю все его сообщения и листаю)
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
nowost
только дизассемблером ничего не добиться.
Это точно. Отладчик (интерактивный дизассемблер) нужен:
OllyDbg, IDA ...
Там все видно. ;)
 
Автор
N

nowost

Знающий
Сообщения
178
Репутация
17
Вот тут можно кое что глянуть о структурах и практическое применение, не думал что СЕ настолько мощный :-\ http://www.youtube.com/watch?v=SSftBkwut38


Добавлено:
Сообщение автоматически объединено:

Едем дальше, после нескольких часов плясок вокруг Оли удалось таки запустить клиент линейки :laugh:
пока все непонятно, находятся структуры с кучей кучей поинтеров, а вэтих поинтерах еще куча поинтеров на другие поинтеры :stars: все нето в общем то пока
 

lirikmel

Продвинутый
Сообщения
226
Репутация
84
Получение структур ,как в видео это утопия , для онлайн игр как минимум все по другому , самый простой способ найдя просто напросто адрес и указатели,открыть просмотр памяти этого участка и как минимум добавить остальные параметры игрока.
 
Автор
N

nowost

Знающий
Сообщения
178
Репутация
17
lirikmel
конечно то видео это не руководство к действию, на практике же довольно сложно даже открыть в отладчике клиент игры. но во всяком случае даёт хоть какое то представление по теме. я же не прошу выложить мне готовый код, мне нужна удочка а не рыба ;)
 

Whited

Знающий
Сообщения
79
Репутация
10
nowost [?]
lirikmelконечно то видео это не руководство к действию, на практике же довольно сложно даже открыть в отладчике клиент игры. но во всяком случае даёт хоть какое то представление по теме. я же не прошу выложить мне готовый код, мне нужна удочка а не рыба
wink.gif

Про наживку забыл.
 
Автор
N

nowost

Знающий
Сообщения
178
Репутация
17
Итак немного продолжу, запустил всетаки клиент под Олей. Беру СЕ ищу текущий показатель жизни моего персонажа, получаем временный адрес и значение
1383118964-clip-5kb.png


забиваем в олю этот адрес и получаем

1383119098-clip-2kb.png


курю гугл, он пока говорит что тут мы видим ссылку на модуль

делаю recalculate adress получается вот что
1383124180-clip-5kb.png


добавляю EDX в СЕ, офсет 001 показывает мое текущее здоровье
1383124252-clip-6kb.png


незнаю насколько все правильно, попробую обратится к этому же адресу после перезапуска клиента

как и следовало ожидать адреса сменились но указатели остались прежними
1383128132-clip-3kb.png



если я правильно раскурил гугл то получается так
01 Add Byte Prt DS:[EDX+0x1], CL //прибавляем CL байт к первому байту значения по адресу EDX+0x1
Cl это последние две цифры ECX
 

vovsla

Осваивающий
Сообщения
607
Репутация
36
Я пробовал найти значения с помощью ArtMoney, но смог найти значения только для адены.
Какие у Вас хроники L2?
 
Верх