PDA

Просмотр полной версии : Бот для РуОффа (Западные земли)


AvelDilon
06.08.2017, 00:26
Бот для РуОффа
- Автологин
- Кач джинов
- Автобои питомцев

[Ссылки могут видеть только зарегистрированные и активированные пользователи] - исходники
[Ссылки могут видеть только зарегистрированные и активированные пользователи] - бот

[Ссылки могут видеть только зарегистрированные и активированные пользователи] e1dcd56c75fc2b/analysis/1501964531/

AvelDilon
05.09.2017, 20:06
Обновил офсеты после обновы

j091
05.09.2017, 23:39
Спасибо огромное!

Horkus
09.09.2017, 11:55
Только начал разбираться, так что вполне и сам где-то туплю.
Используя исходники, решил попробовать написать для своих нужд небольшого бота. Все хорошо, находится окно с ПВ, считываются данные о персонаже, тестовые пакеты (взять квест, взять таргет, медитация и тд, которые я при помощи PWPacketListener'a отловил) отправляются и дают результат.
Затруднение вызвало заставить перемещаться. В исходникам в файле Character.cs нашел функцию Move, заполняю параметр loc нужными координатами, но при вызове функции клиент крашится.

Приложу код функции Move c Character.cs. В ассемблере не силен и посмотреть какой актуальный формат пакета движения сейчас... вообщем нуб я :sceptic:
public void Move(Location loc, Boolean wait = false, double accuracy = 0.5)
{
byte[] WP =
{
0x60, //pushad
0xB8, /*2*/0x00, 0x00, 0x00, 0x00, //mov eax, BA
0x8B, 0x00, //mox eax, dword ptr [eax]
0x8B, 0x40, 0x1C, //mov eax, dword ptr[eax + 1C]
0x8B, 0x78, 0x34, //mov edi, dword ptr[eax + 0x34]
0x8B, 0x8F, 0xC4, 0x15, 0x00, 0x00, //mov ecx, dword ptr[edi + 0x154C]
0x6A, 0x01, //push 1
0xB8, /*23*/0x00, 0x00, 0x00, 0x00, //mov eax, action_1
0xFF, 0xD0, //call eax
0x8D, 0x54, 0x24, 0x1C, //lea edx, dword ptr[esp + 0x1C]
0x8B, 0xD8, //mov ebx, eax
0x52, //push edx
0x68, /*37*/0x00, 0x00, 0x00, 0x00, //push walk_mode
0x8B, 0xCB, //mov ecx, ebx
0xB8, /*44*/0x00, 0x00, 0x00, 0x00, //mov eax, action_2
0xFF, 0xD0, //call eax
0x8B, 0x8F, 0xC4, 0x15, 0x00, 0x00, //mov ecx, dword ptr [edi + 0x154C]
0xB8, /*57*/0x00, 0x00, 0x00, 0x00, //mov eax, x
0x89, 0x43, 0x20, //mov dword ptr[ebx + 0x20], eax
0xB8, /*65*/0x00, 0x00, 0x00, 0x00, //mov eax, z
0x89, 0x43, 0x24, //mov dword ptr[ebx + 0x24], eax
0xB8, /*73*/0x00, 0x00, 0x00, 0x00, //mov eax, y
0x89, 0x43, 0x28, //mov dword ptr[ebx + 0x28], eax
0x6A, 0x00, //push 0
0x53, //push ebx
0x6A, 0x01, //push 1
0xB8, /*86*/0x00, 0x00, 0x00, 0x00, //mov eax, action_3
0xFF, 0xD0, //call eax
0x61, //popad
0xC3 //ret
};

Packet P = new Packet(HNDL, WP);
P.Copy(OFS.BA, 2, 4);
P.Copy(OFS.GetUInt("Player_Action_Struct"), 16, 4);
P.Copy(OFS.GetUInt("Player_Action_Struct"), 52, 4);
P.Copy(OFS.GetUInt("action_1"), 23, 4);
P.Copy(OFS.GetUInt("action_2"), 44, 4);
P.Copy(OFS.GetUInt("action_3"), 86, 4);
P.Copy(loc.x, 57, 4);
P.Copy(loc.y, 73, 4);
P.Copy(loc.z, 65, 4);
int WalkMode = Memory.RD(HNDL, CSP + OFS.GetInt("Player_WalkMode"));
P.Copy(WalkMode > 0 ? 1 : 0, 37, 4);

P.Execute();
if (wait)
while (LOC.GetDistance(loc) > accuracy)
{
LoadLocation();
System.Threading.Thread.Sleep(200);
}
}

AvelDilon
09.09.2017, 16:03
Обновил офсеты move1, move2, move3
Должно работать...

НУ-ПОГОДИ
05.07.2018, 21:24
Можешь еще раз обновить эти офс?