Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 13.06.2012, 18:12   #1
Местный
 
Аватар для Elecktron
 
Регистрация: 27.10.2011
Адрес: Харьков
Сообщений: 106
Сказал Спасибо: 24
Имеет 11 спасибок в 7 сообщенях
Elecktron пока неопределено
По умолчанию фиксы IG Walker

Надумал я пофиксить валкер чтобы можно было спокойно ботить и не париться что он "палевный".

Насколько мне известно проблемные места это:
1 пакет движения
2 отправляет пакет GMlist
3 не отправляет пекет ValidatePosition
4 не корректно обрабатывает некоторые диалоги с нпс
5 иногда некорректно формирует Action

В наличии:
1 La2offline 4 Gracia Final для "безнаказанных" тестов бота
2 "чистый" клиент с прикрученным ботом настроенный под данный сервер
3 OllyDbg которой не "сопротивляется" клиент
4 написанная на C++ Builder 6 с использованием ассемблерных вставок длл с перехваченными send и recv
5 l2phx.3.5.33.174 для просмотра трафика

Начал с пакета движения.
В валкере есть несколько мест в которых формируется данный пакет , например, в обработчиках карты и скриптов. Исходя из этого есть смысл исправлять пакет когда он полностью сформирован и готов к отправке.

Этот код вызывается валкером после формирования паета на отправку, здесь происходит вызов send в Engine.dll клиента:
Код:
01DCEB40                 A1 D88EEE01           MOV EAX, DWORD PTR DS:[1EE8ED8]
01DCEB45                 8B00                  MOV EAX, DWORD PTR DS:[EAX]
01DCEB47                 8B40 48               MOV EAX, DWORD PTR DS:[EAX+48]
01DCEB4A                 894424 04             MOV DWORD PTR SS:[ESP+4], EAX
01DCEB4E               - FF25 D48EEE01         JMP DWORD PTR DS:[1EE8ED4]           ; Engine.00765470


P.S. правку трафика пакетхаком и подобными программами не предлагать по совокупности причин.
__________________
C++Builder 6, Delphi 7, RAD Studio XE2, MS VC++...

Последний раз редактировалось Elecktron, 16.06.2012 в 20:45.
Elecktron вне форума   Ответить с цитированием
Старый 13.06.2012, 20:32   #2
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Цитата:
Сообщение от Elecktron Посмотреть сообщение
P.S. правку трафика пакетхаком и подобными программами не предлагать по совокупности причин.
заебёшься ты имхо другими способами...
Да и проблемных мест у валкера было не мало, не знаю как счас, но не думаю что стало сильно лучше.

А ошибка скорее всего либо в том что неверное соглашение о передаче параметров и очищении стека используешь, либо регистр ECX затираешь, а там указатель на объект наверняка лежит какойнить. Скорее всего второе.
__________________
Я здесь практически не появляюсь!, Skype - ikskor

Последний раз редактировалось xkor, 13.06.2012 в 20:36.
xkor вне форума   Ответить с цитированием
Старый 13.06.2012, 23:55   #3
Местный
 
Аватар для Elecktron
 
Регистрация: 27.10.2011
Адрес: Харьков
Сообщений: 106
Сказал Спасибо: 24
Имеет 11 спасибок в 7 сообщенях
Elecktron пока неопределено
По умолчанию

соглашение вызова "вырезано" прыжком в +3 от начала функции.
в ecx действительно были какие-то нужные данные, поменял на eax, в который сразу при переходе в engine пишется значение.
все равно крит
подозреваю стек.
но очень сильно сомневаюсь...
__________________
C++Builder 6, Delphi 7, RAD Studio XE2, MS VC++...
Elecktron вне форума   Ответить с цитированием
Старый 14.06.2012, 00:08   #4
Новичок
 
Регистрация: 29.04.2012
Сообщений: 11
Сказал Спасибо: 24
Имеет 2 спасибок в 1 сообщении
qwm пока неопределено
По умолчанию

Раз заводите лишнюю локальную переменную, убедитесь, что кадр стека нормально открывается в Волкере и закрывается в send.
И, как указал xkor, в программах, использующих thiscall процедуры следует побережнее относиться к ecx, особенно учитывая, что в данном случае можно было обойтись:
cmp dword [esp+0x0c], 0x0f

А, у Вас это видимо не локальные переменные, а аргументы функции, если я правильно понимаю, что в fixMove1 и 2 хранятся прежний ebp и адрес возврата. Тогда нужно смотреть на функцию, из которой хук был вызван, чтобы в ней стек был сбалансирован.

Последний раз редактировалось qwm, 14.06.2012 в 00:14.
qwm вне форума   Ответить с цитированием
Старый 14.06.2012, 07:14   #5
Местный
 
Аватар для Elecktron
 
Регистрация: 27.10.2011
Адрес: Харьков
Сообщений: 106
Сказал Спасибо: 24
Имеет 11 спасибок в 7 сообщенях
Elecktron пока неопределено
По умолчанию

фикс GM list. рабочий.
Код:
   cmp dword [esp+0x0c], 0x8B
   jz @fixGM
   jmp DWORD PTR sendEngine
   @fixGM:
   pop eax
   jmp eax
Добавлено через 2 минуты
Цитата:
Сообщение от qwm Посмотреть сообщение
cmp dword [esp+0x0c], 0x0f
спасибо за подсказку

Добавлено через 4 часа 41 минуту
мне удалось заменить реализацию пакета МТЛ своей функцией. теперь бегает как положено и "без палева"

Добавлено через 1 час 1 минуту
по пункту 3 - посмотрел пакеты, все отправляет...
чем валкеру не нравятся диалоги? что там с хтмл не так как надо?

какие еще баги есть? (что бы такого "пофиксить"? )
__________________
C++Builder 6, Delphi 7, RAD Studio XE2, MS VC++...

Последний раз редактировалось Elecktron, 14.06.2012 в 07:15. Причина: Добавлено сообщение
Elecktron вне форума   Ответить с цитированием
Старый 14.06.2012, 20:25   #6
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

Цитата:
чем валкеру не нравятся диалоги? что там с хтмл не так как надо?
новые теги.
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
Старый 15.06.2012, 13:38   #7
Местный
 
Аватар для Elecktron
 
Регистрация: 27.10.2011
Адрес: Харьков
Сообщений: 106
Сказал Спасибо: 24
Имеет 11 спасибок в 7 сообщенях
Elecktron пока неопределено
По умолчанию

Цитата:
Сообщение от alexteam Посмотреть сообщение
новые теги.
странно. как-то они "выборочно" новые...

половина квеста на тт бижу работает, вторая нет. даже в скриптмейкере не видит (про выполнение вообще молчу...)

при этом нормально телепортируется, покупает-продает...
__________________
C++Builder 6, Delphi 7, RAD Studio XE2, MS VC++...
Elecktron вне форума   Ответить с цитированием
Старый 16.06.2012, 07:33   #8
Рыцарь
 
Регистрация: 27.12.2008
Сообщений: 236
Сказал Спасибо: 17
Имеет 816 спасибок в 106 сообщенях
pcoder на пути к лучшему
По умолчанию

Цитата:
Сообщение от Elecktron Посмотреть сообщение

Пакет отправляется правильно, сервер на него отвечает, но сразу вылетает крит клиента с ошибкой где-то в недрах валкера..

Что я делаю не так?
Добавляя новый параметр ты тем самым портишь стек, после выхода из ф-ии он восстанавливает только для своих параметров, а твой так и останется. Следовательно и крит.


Цитата:
какие еще баги есть? (что бы такого "пофиксить"? )
Можешь пофиксить экшн с нулевым параметром. Когда включаешь дальнюю атаку скилом и есть преграда, в момент обхода ее может случайным образом проскочить ноль в экшене, следовательно будет дисконнект.

Последний раз редактировалось pcoder, 16.06.2012 в 07:39.
pcoder вне форума   Ответить с цитированием
Старый 19.06.2012, 01:57   #9
Местный
 
Аватар для Elecktron
 
Регистрация: 27.10.2011
Адрес: Харьков
Сообщений: 106
Сказал Спасибо: 24
Имеет 11 спасибок в 7 сообщенях
Elecktron пока неопределено
По умолчанию

может кто в курсе каким образом L2Walker.exe внедряет L2Walker.dll в процесс игры?
запускает l2.exe с помощью CreateProcessW (suspended), а дальше.... я уже запарился дебажить...
мне это нужно чтобы корректно получить хэндл L2Walker.dll в памяти процесса.
__________________
C++Builder 6, Delphi 7, RAD Studio XE2, MS VC++...
Elecktron вне форума   Ответить с цитированием
Старый 19.06.2012, 07:12   #10
Новичок
 
Регистрация: 29.04.2012
Сообщений: 11
Сказал Спасибо: 24
Имеет 2 спасибок в 1 сообщении
qwm пока неопределено
По умолчанию

Что значит, "корректно получить хэндл"? Это же даже не хендл в полном смысле этого слова, и к объектам ядра никакого отношения не имеет. Просто адрес базы. Снапшотами получить - самое простое.
qwm вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 08:20.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!