Rus. server

08/02/2010 22:45 IemN#1711
Народ, вся надежда на вас...
подскажите НОРМАЛЬНОГО бота для PWI!)
А то скоро рейты, а ничего приличного и хорошо работающего я не нашел, ну кроме как BotPirates 4.10...и тот платный =(
Очень-приочень нужен норм бот!)
08/03/2010 01:17 chamer1234#1712
2GrieVeR-13 а твой сканер в паблике есть? ы
08/03/2010 07:33 obiov#1713
GrieVeR-13 Спасибо большое за ссылку). Начинаю копать. Пока больше чем достаточно!
08/03/2010 12:17 silkytail#1714
Quote:
Originally Posted by GrieVeR-13 View Post
Вообщем, прости, собрат, мир жесток, мы не забудем твои труды.
_http://slil.ru/29526417
Похоже на изделие от ворта :)
08/03/2010 20:25 GrieVeR-13#1715
Quote:
Originally Posted by chamer1234 View Post
Сорри, что сразу не указал оффсеты для бота Prophet Bot Recoded Beta. Вообщем хп мобов я нашёл через CE. Отсюда вытекает ответ - необходимо найти макс хп цели-моба.
Не знаю, что за базовый адрес хп цели здесь используется и даже искать не хочу. Но если ты верно нашел текущие хп, исходя из настроек по умолчанию, адрес максимальных должен быть на 8 байт ниже (меньше). Поищи в области. Нормальные боты работают, считывая массив всех мобов в памяти, определяя цель.
//=====
Нет, в паблике сканера нет. И не думаю, что будет. Сделать такой самому пол часа кода, 10 минут фотошопа.
08/04/2010 07:48 obiov#1716
По OutGame: (PWPacketSender.h)
void SendC22_2e_MeditationStart()
{
CPWPacket P;
P.SetType(0x2e);
SendC22(P);
}

void SendC22_2f_MeditationStop()
{
CPWPacket P;
P.SetType(0x2f);
SendC22(P);
}

Посылку пакетов я использую в InGame боте (Delphi).
Для использования полета у меня работает такой пакет:
280001010C0030080000
здесь 3008 перевернутый $0830 (2096) - id белое крыло сида.
Работает и с другими полетами (должен быть в слоте полета).
В OutGame пока не получилось поднять на крыло.

Чуть поправил основную атаку: (PWPacketSender.h)
void SendC22_03_AttackMob()
{
CPWPacket P;
P.SetType(0x03);
P.WriteByte(0x03);
SendC22(P);
}
бот теперь сам начинает движение к цели.
И тогда соответственно меняем: (AITimerThread.h)
void AttackMobAt(float X, float Y, dword MobUID)
{
CCriticalSectionLock CSL(m_TickCS);

if (m_IsBusy)
return;
if (m_AttackedMobObjUID == MobUID)
return;

//MoveTo(X, Y, 1.0f);
//Тут чар бежал к месту где был моб, а если моб отошел больше чем на 1.0 , стоял в стопоре так как не мог закончить атаку. Сечас самонаводиться на моба как и положенно.

ClearMobSelection();
ClearMoveContext();
m_AttackedMobObjUID = MobUID;

m_PacketSender.SendC22_02_SelectTarget(m_AttackedM obObjUID);

}

Пока движение может чуток глючить.

Атаку скилами пока не сендил.
За пакетом надо лезть в IDA.

Пример перебора и сбора ресурсов(подойдет и для лута и атаки мобов)
Маленькая тестовая вставка в void OnTick() (AITimerThread.h) и чар будет последовательно собирать ресурсы (до первого препятствия). С движением еще надо поработать.

void OnTick()
{
CCriticalSectionLock CSL(m_TickCS);
//************************************************** ************************
CArray<CPWMatter> Matp;
m_PWObjectManager.GetMatter(Matp);//Выбираем ресурсы и лут

if (!m_IsBusy)
for (dword i = 0; i < Matp.Size(); i++)
{
if (Matp[i].IsRes())//только ресурсы
{
GatherResAt(Matp[i].GetPosition().m_X , Matp[i].GetPosition().m_Y,
Matp[i].GetObjectUID());
break;
}
}
//************************************************** ************************

Дальше можно фильтр нужных ресурсов, управление добычей добавлять....
08/04/2010 08:27 dixgen#1717
Знатоки с++ помогите пожалуйста с инжектом. Проект в builder2009 c++
На CreateRemoteThread падает клиент. Не могу понять в чем проблемма..

Code:
....................
struct _TParams 
{
    float Param1;
    float Param2;
    float Param3;
    unsigned int Param4;
};
..........................

static DWORD WINAPI MoveTo(_TParams* lpParam)
{
    DWORD BaseAddress    = 0x0098ADDC;
    DWORD Address1        = 0x004637E0;
    DWORD Address2        = 0x00467270;
    DWORD Address3        = 0x00463BE0;
    DWORD X            = (DWORD)lpParam->Param1;
    DWORD Y            = (DWORD)lpParam->Param2;
    DWORD Z            = (DWORD)lpParam->Param3;
    DWORD Flying        = (BYTE)lpParam->Param4;
    __asm
    {
        pushad;
        mov        eax, dword ptr[BaseAddress];
        mov        eax, dword ptr[eax+0x1C];
        mov        esi, dword ptr[eax+0x20];
        mov        ecx, dword ptr[esi+0xDDC];
        push    1;
        call    Address1;

        mov        edi, eax;
        lea        eax, dword ptr[esp+0x0C];
        push    eax;
        push    Flying;
        mov        ecx, edi;
        call    Address2;

        mov        ecx, dword ptr[esi+0xDDC];
        push    0;
        push    1;
        push    edi;
        push    1;
        call    Address3;

        mov        eax, dword ptr[BaseAddress];
        mov        eax, dword ptr[eax+0x1C];
        mov        eax, dword ptr[eax+0x20];
        mov        eax, dword ptr[eax+0xDDC];
        mov        eax, dword ptr[eax+0x30];
        mov        ecx, dword ptr[eax+0x4];
        mov        eax, X;
        mov        edx, ecx;
        add        edx, 0x20;
        mov        dword ptr[edx], eax;
        mov        eax, Z;
        mov        dword ptr[ecx+0x24], eax;
        mov        eax, Y;
        mov        dword ptr[ecx+0x28], eax;
        popad;
    }
    return 0;
}

....................................

bool InjectFunc(_TParams* lpParam, DWORD szParam)
{
    HANDLE hProcess = NULL;
    HANDLE hThread = NULL;
    LPVOID ThreadCodeAddr = NULL;
    LPVOID ThreadDataAddr = NULL;
    LPVOID Func = MoveTo;
//    LPVOID lnParam=(LPVOID)lpParam; // ?
    hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);
    if (!hProcess)
    {
     //Error message (OpenProcess);
     return false;
    }

    ThreadCodeAddr=VirtualAllocEx(hProcess, NULL, 4096, MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory (hProcess, ThreadCodeAddr, Func, 4096, NULL);

    ThreadDataAddr=VirtualAllocEx(hProcess, NULL, szParam, MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory (hProcess, ThreadDataAddr, lpParam, szParam, NULL);

    hThread = CreateRemoteThread(hProcess, NULL, NULL,(LPTHREAD_START_ROUTINE)ThreadCodeAddr, ThreadDataAddr, NULL, NULL);
    if (!hThread)
    {
      //Error message (CreateRemoteThread);
    }
    else
    WaitForSingleObject(hThread, INFINITE);
    CloseHandle(hThread);
    VirtualFreeEx(hProcess, ThreadCodeAddr, 4096, MEM_RELEASE);
    VirtualFreeEx(hProcess, ThreadDataAddr, szParam, MEM_RELEASE);
    CloseHandle(hProcess);
    return false;
}
..............

   _TParams aParam;
   aParam.Param1 = uX;
   aParam.Param2 = uY;
   aParam.Param3 = uZ;
   aParam.Param4 = 0;
   szP = sizeof(aParam);

   InjectFunc(&aParam, szP);
08/10/2010 18:46 sumikot#1718
Нашел у себя девайс из серого вещества и понял, что давно его не использую по назначению...
Появилась мысль - при обновлении клиента не искать каждый раз новые адреса и смещения. Пусть бот сам ищет. Что из этого получилось на данном этапе:
1. Базовый адрес найти проще всего. В elementclient.exe найти байты 8B0D. В большинстве случаев после них - базовый адрес. Можно искать то же самое и в виртуальной памяти. Код располагается с адреса 401000h.
2. Смещения можно найти по ID массивов. Возможно лежит в диапазоне 0x008A0000 - 0x008CFFFF. Идентификатор скорее всего добавляется компилятором. Хз. Буду рад любой подсказке. С каждой новой версией клиента пределы немного увеличиваются.Например в предидущей версии ID структуры перса был 0x008A24F0, в текущей - 0х008B44C8. Было бы неплохо вытаскивать из клиента сначала возможный диапазон.
Таким способом находится: (Из известных - структура персонажа, массивы мобов, лута - присутствуют)
Скорее всего здесь и множество "пустых" адресов. Еще один подводный камень - скорость исполнения скриптов при переборе...
3. Уровень жизни и маны тоже можно найти - два одинаковых числа (с максимальными жизнью и маной, при условии, что чара никто не гасит), лежат через определенное кол-во байтов. Можно запоминать предидущие значения ячеек - при обновлении будет проще скрипт поиска. Буду рад, если кто продолжит тему в сторону ее развития. Сам уже четвертый месяц в командировке - из всех разновидностей подключения к интернету имею диалап, обновления отпадают... Спасибо за помощь в тестировании ^fallen^angel

Сам скрипт:
[Only registered and activated users can see links. Click Here To Register...]
08/13/2010 20:52 Kolimas#1719
а из вас есть кто нибудь на обкатке обновы?
08/14/2010 16:04 silkytail#1720
а чо там обкатывать ?
08/16/2010 11:56 sioli#1721
Quote:
Originally Posted by Kolimas View Post
а из вас есть кто нибудь на обкатке обновы?
Есть. Нифика не пофиксили. Хотя оффсеты слетели почти все, сильно структуры изменили. Структуру списка названий гильдий до сих пор найти не могу.

Еще инджекты послетали, но тут даже разбиратся лениво пока что.

Кстати вопрос всем, кто сумел найти таймер замка? как не ищу не выходит найти.

Еще интересно как отличить чар в мире или попал в данж какой то.

Заранее спасибо за помощь :)
08/16/2010 11:59 VodkaVodka#1722
а чо там обкатывать ?
08/16/2010 12:10 sioli#1723
новую расу, не? :)
08/17/2010 12:34 GrieVeR-13#1724
Скиньте кто-нибудь ссылку на то, что нужно обкатывать) Всмысле, PWI максимально приближенный к оффу. Пора начинать.
08/17/2010 12:49 sumikot#1725
sioli, можешь выложить elementclient.exe? если сможешь, сожми, пожалуйста.