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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 14.11.2016, 19:53   #1
Новичок
 
Регистрация: 14.11.2016
Сообщений: 8
Сказал Спасибо: 4
Имеет 2 спасибок в 1 сообщении
fastx пока неопределено
Злость Что запихнуть в L2ParamStack для RequetUseItem

Здравствуйте)) Случайным образом нашел вот этот тред(2 сообщение). Там проиллюстрирован пример заполнения парам стека для вызова ReqUseItem. Но на самом же деле ничего не юзается если заполнять стек так. Вот конкретно мой код:
Код:
     local l2Stack[16]:BYTE
     lea esi, [l2Stack]
     push 10
     mov ecx, esi
     call [pAddr_l2ps_create]
     mov ecx, esi
     call [pAddr_l2ps_clear]

     push 1831 ;;;;;;;(oid антидота (Antidote))1 параметр
     mov ecx, esi
     call [pAddr_l2ps_pushback]
     push 0 ;;;;;;;(вроде ник на ком юзать(хз(0 - на себя))) 2 параметр
     mov ecx, esi
     call [pAddr_l2ps_pushback]

     push esi
     mov ecx, [unh] ;;;;;железобетонно-верный указатель на unh 
     call [pAddr_unh_requseitem] ;;;;;вызывается, но реакции 0(критом не выбивает)
Так как же правильно набить этого ублюдка? Или другой, не менее хороший вопрос: узнать, что есть в l2paramstack, реально лишь после установки хука на функцию, которая его принимает как параметр?
fastx вне форума   Ответить с цитированием
Старый 14.11.2016, 20:10   #2
Пользователь
 
Регистрация: 14.07.2016
Сообщений: 59
Сказал Спасибо: 6
Имеет 10 спасибок в 9 сообщенях
Smwr на пути к лучшему
По умолчанию

Код:
push 1831 ;;;;;;;(oid антидота (Antidote))1 параметр
Это id итема, а нужен именно objectid (не надо путать).

второй параметр это юз через ctrl.

Цитата:
Или другой, не менее хороший вопрос: узнать, что есть в l2paramstack, реально лишь после установки хука на функцию, которая его принимает как параметр?
разумеется.

Последний раз редактировалось Smwr, 14.11.2016 в 20:17.
Smwr вне форума   Ответить с цитированием
За это сообщение Smwr нажился спасибкой от:
Старый 14.11.2016, 20:20   #3
Новичок
 
Регистрация: 14.11.2016
Сообщений: 8
Сказал Спасибо: 4
Имеет 2 спасибок в 1 сообщении
fastx пока неопределено
По умолчанию

Цитата:
Сообщение от Smwr Посмотреть сообщение
Код:
push 1831 ;;;;;;;(oid антидота (Antidote))1 параметр
Это id итема, а нужен именно objectid (не надо путать).


разумеется.
Спасибо, добрый человек. Буду пробовать с oid, а не с id.
fastx вне форума   Ответить с цитированием
Старый 14.11.2016, 23:18   #4
Местный
 
Аватар для ScythLab
 
Регистрация: 24.10.2014
Сообщений: 190
Сказал Спасибо: 4
Имеет 42 спасибок в 40 сообщенях
ScythLab пока неопределено
По умолчанию

Цитата:
Сообщение от Smwr Посмотреть сообщение
Цитата:
Или другой, не менее хороший вопрос: узнать, что есть в l2paramstack, реально лишь после установки хука на функцию, которая его принимает как параметр?
разумеется.
В коде engine.dll встречал перебор ПарамСтека, грубо говоря вытаскиваешь все с помощью Top, потом запихиваешь обратно, это первый вариант.
Второй вариант: лезть в память созданного объекта, там скорей всего примитивный динамический массив.
__________________
Хобби: разработка бота для Lineage.
ScythLab вне форума   Ответить с цитированием
За это сообщение ScythLab нажился спасибкой от:
Старый 15.11.2016, 00:40   #5
Пользователь
 
Регистрация: 14.07.2016
Сообщений: 59
Сказал Спасибо: 6
Имеет 10 спасибок в 9 сообщенях
Smwr на пути к лучшему
По умолчанию

Кстати да, очень похоже что он выглядит как
Код:
class L2ParamStack {
  FArray Items;
  int Current;
};
А в методах у него еще есть Restart(), который этот индекс сбрасывает в ноль.
Кстати, это не стек, а скорее очередь (меня в начале это неслабо смутило).
Smwr вне форума   Ответить с цитированием
Старый 15.11.2016, 08:33   #6
Местный
 
Аватар для ScythLab
 
Регистрация: 24.10.2014
Сообщений: 190
Сказал Спасибо: 4
Имеет 42 спасибок в 40 сообщенях
ScythLab пока неопределено
По умолчанию

Мне тоже показалось, что это очередь, т.к. перебор был реализован чередующимися Top и Push, но думал, что я просто что-то перепутал и не обращал на это внимания.
__________________
Хобби: разработка бота для Lineage.
ScythLab вне форума   Ответить с цитированием
Старый 15.11.2016, 15:59   #7
Новичок
 
Регистрация: 14.11.2016
Сообщений: 8
Сказал Спасибо: 4
Имеет 2 спасибок в 1 сообщении
fastx пока неопределено
По умолчанию

Цитата:
Сообщение от Smwr Посмотреть сообщение
Кстати да, очень похоже что он выглядит как
Код:
class L2ParamStack {
  FArray Items;
  int Current;
};
А в методах у него еще есть Restart(), который этот индекс сбрасывает в ноль.
Кстати, это не стек, а скорее очередь (меня в начале это неслабо смутило).
Цитата:
Сообщение от ScythLab Посмотреть сообщение
Мне тоже показалось, что это очередь, т.к. перебор был реализован чередующимися Top и Push, но думал, что я просто что-то перепутал и не обращал на это внимания.
Явно использованы принципы очереди: новое в конец; первое долой.
Всем спасибо, все работает прекрасно. Буду дальше делать что-то интересное, а по-совместительству задавать много глупых вопросов =))
fastx вне форума   Ответить с цитированием
Ответ

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


Опции темы
Опции просмотра

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

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


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

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

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