Перейти к содержимому

Фотография
- - - - -

С чего начать написание бота?

написание бота

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 27

#21
jr

jr
class L2ParamStack {
private:
	char fill[20]; // не помню точный размер
public:
	L2ParamStack() {
		Ctor(this); // адреса Ctor/Dtor/PushBack импортируем из core.dll
	}

	~L2ParamStack() {
		Dtor(this);
	}

	void PushBack(int val) {
		PushBack(this, val);
	}
};

///

L2ParamStack st;
st.PushBack(oid);
RequestUseItem(&stack);

  • 1

#22
KVPV

KVPV
  • 11
    3
    Не выбрано
    • Lvl 9
    • Пользователь

jr, Спасибо за пример!  B)

 

Это хорошо работает на локальном сервере, с чистым патчем и клиентом игры Interlude.

Когда пытаюсь это использовать на каком-нибудь сервере, получаю крит на RequestUseItem();

L2ParamStack* stack = new L2ParamStack(10); // Создаю и выделяю память
stack.Clear(); // Чистка
stack.Restart(); // Сброс индекса вроде (судя по ответам на форуме cod*rx.**), не смотрел в отладчике...
stack.PushBack(params.GetInteger(0)); // получаю указатель на ObjectId
stack.Restart();
RequestUseItem(*stack); // Использование итема
delete stack; // очистка стека

Интересно было бы узнать различия деассемблера в отладчике, и почему это происходит.

 

PS: Чуть не забыл. Читал, что в стек нужно запихивать ещё один параметр, отвечающий за использовании итема (0 = на себя / или на кого-то) Действительно ли он нужен?


Сообщение отредактировал KVPV: 01 Октябрь 2020 - 23:41

  • 0

#23
jr

jr

KVPV, я дал пример, как это делается, зачем самодеятельность ввиде clear/restart. да и сам обьект в хипе выделять нет надобности.

параметры надо заталкивать все что есть в пакете (для пущей уверенности смотри сколько раз делается Top в дизасме). для конкретного примера 14=UseItem:d(ObjectID)d(ctrlPressed), т.е. заталкивается ObjectID и ctrlPressed.


  • 1

#24
KVPV

KVPV
  • 11
    3
    Не выбрано
    • Lvl 9
    • Пользователь

jr, все работает, спасибо!)

Мы тут с другом спорим о том, как боты работают, ловят пакеты или хукают все функции в игре?

Припомнилось что некоторые боты размещали локальный прокси и ловили пакеты через него.

А вот бота хукающего функции вспомнить что-то не можем....

 

С другой стороны можно ведь хукнуть WinSocket'ы (send/sendto) и получить желаемое.

Либо как сам класс CClientSocket в Engine.dll , ведь через него все проходит?


  • 0

#25
ScythLab

ScythLab

ловят пакеты или хукают все функции в игре?
одно другому не противоречит

 

Припомнилось что некоторые боты размещали локальный прокси и ловили пакеты через него

можно ведь хукнуть WinSocket'ы (send/sendto) и получить желаемое
если хочешь универсального бота, работающего на современных защитах, то забудь про это

 

ведь через него все проходит?
почти все что нужно
  • 1

Хобби: разработка непубличного бота для Lineage


#26
KVPV

KVPV
  • 11
    3
    Не выбрано
    • Lvl 9
    • Пользователь
Знатоки, подскажите, пакет PartySpelled передается в обработку через AddNetworkQueue ?
 
Потому, что хукнув AddNetworkQueue я никак не могу словить пакет:
EE=PartySpelled:d(Summon)d(ObjecID)d(EffectCount:For.0003)d(SkillID:Get.Skill)h(Data)d(Duration)
Может быть в клиенте предусмотрели и сделали какую-нибудь функцию для обработки, а точнее получения баффа игроков из пати?
 
Клиент: Interlude

  • 0

#27
ScythLab

ScythLab

По стандарту все пакеты проходят через пару AddNetworkQueue/DispatchNetworkQueue, но при этом защита может менять внутреннюю логику по своему усмотрению и нужно разбираться на конкретном примере


  • 1

Хобби: разработка непубличного бота для Lineage


#28
KVPV

KVPV
  • 11
    3
    Не выбрано
    • Lvl 9
    • Пользователь

ScythLab, прошу прощения, так как у меня в структуре NetworkPacket стоял не правильный тип для переменной id, нужно было указать unsigned char, вместо char. Понял что тип переменной не правильный, т.к. unsigned char принимает от 0 до 255, а char от 0 до 127 (вроде бы так). Заметил это когда прилетали пакеты с ID типа 0xffffee

struct NetworkPacket {
      // char id; <-- не правильно
      unsigned char id; // <-- правильно
      .......
}

Сообщение отредактировал KVPV: 20 Ноябрь 2020 - 15:41

  • 0



Темы с аналогичным тегами interlude, написание бота

Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных

Rawr.pro - Сделано с для игроков.