Rus. server

12/27/2009 12:37 origmas#1171
Quote:
Originally Posted by dwar View Post
popad = pop EDI, ESI, EBP, ESP, EBX, EDX, ECX, EAX
т.е., достаточно оставить popad (если здесь под POPAD() подразумевается аналог команды ассемблера)
а равновесие не нарушится - мы ведь в стек получается 2 раза EDI прячем PUSHAD и PUSH EDI, а вынимаем один POPAD .. ??
12/27/2009 12:44 origmas#1172
Quote:
Originally Posted by dj_al View Post
подумай ...
Не ID прячется а куазатель на ID

static DWORD WINAPI SelectMonster(LPCVOID lpParam )
{ DWORD BaseAddress = 0x0098ADDC;
DWORD CallAddress = 0x005B7B70;
DWORD MonsterID = (DWORD)lpParam;
12/27/2009 13:10 Shamanpovt#1173
Функция [Only registered and activated users can see links. Click Here To Register...] и из AutoGeo совпадают. Проверил опкоды - всё правильно.
12/27/2009 13:11 origmas#1174
Quote:
Originally Posted by dj_al View Post
Вах ...
MonsterID - это указатель на ID (в этой именно реализации на VC++)

mov edi, MonsterID; // записывается в регистр
mov edi, [edi]; // из адресса, который и представляет собой этот указатель (по нем и лежит ID) - читаются данные в опять-же в этот регистр - то-есть сам ID
push edi; // и прячется ..

сам ID подготавливается функцией распределения памяти под данные функции потока, записью туда ID-а и открытием потока, а в эту функцию ID передается из основной программы ..

... это не я "Молодца" - это тот кто так догадался сделать на VC++

.. вообще-то работает ..
12/27/2009 14:32 BuBucekTop#1175
У меня сделано как FSM. Но если ты хочешь

Quote:
Originally Posted by silkytail View Post
... формализовать планы и цели так, чтобы это не было зашито только в коде и можно было это настраивать? ...
То надо ичпользовать Lua или Python. А для любителей дельфи - FastScript.
12/27/2009 14:37 origmas#1176
Novohyd

процесс можно не трогать пусть он открыт всегда .. там одна строчка в функции
CallRemoteFunction(...) перед return стоит CloseHandle(hProcess); - убери и все ОК!
теперь логику надо отштудировать - там в цикле DO не так как-то определение занятости моба (с инжектом полного выделения) стало работать .. подумай или закоменть все что с ней связано и сам цикл DO .. один FOR оставь пока.. (потом с занятостью разберемся)
12/27/2009 14:59 muzhig#1177
Quote:
... формализовать планы и цели так, чтобы это не было зашито только в коде и можно было это настраивать? ...
Чтобы формализовать цели, даже пусть самые навороченные, хватит обычного XML.
Но кроме формализации целей, придется формализовать также и методы их достижения, по хорошему. А это имхо сложнее- предоставить человеку возможность писать свои скрипты.. кто это будет делать? если даже нескриптовые варианты ботов отлаживаются с трудом, то потом мы получим очень сложного бота (в плане настройки).

Лично я усвоил правило:
За универсальность приходится платить. Или производительностью или излишней сложностью интерфейса.

Ведь потом все равно придется делать для пользователя удобный и доступный интерфейс- то есть дедукция - от общего к частному.
Лично я поставлю себе на форму галочку "Улетать при критическом здоровье"- для меня этого достаточно.

Выходит, игра не стоит свеч. Зачем напрягаться, делать супер навороченного бота, которым потом будет также трудно пользоваться?

Мой вердикт: я за универсальность, но в меру.

ЗЫ: про автоматы и FSM: мы проходили теорию автоматизации весьма поверхностно, так что возможно с терминологией я ошибся. Извиняйте. Главное, вы поняли идею))
12/27/2009 16:35 BuBucekTop#1178
Кстати, кто-нибудь обнаружил в клиенте список активных и доступных квестов ??
Поделитесь смещениями... А то начал тут делать авто-гео и застрял на этом моменте.
12/27/2009 16:59 Novohyd#1179
Quote:
Originally Posted by origmas View Post
Ну че Novohyd - прививается зараза - Али как ?

-- беги за Клинским ..))
Заменил - 19 ошибок компилятор выдал. Сижу-разбираюсь
12/27/2009 17:09 Novohyd#1180
Все поправил - пробелы откуда-то взялись при копировании с форума.
Запустил - моба не выделяет. При нескольких нажатиях на кнопу Цель вместо в строке где показывает выбранного моба пишет Диапозон от 147 до 187 и в зависание бота.
Чтоб проверить раскомментировал WriteProcessMemory(Proc,(LPVOID)(Pers+_CharTID),&P riorID,4,0); - прописывает моба неполным выделением. Знач моба находит нормально и ид пересылает.
12/27/2009 17:20 muzhig#1181
[Only registered and activated users can see links. Click Here To Register...]
Почитай, мож поможет)) заодно спроси чела, может он пояснит.
12/27/2009 17:51 dj_al#1182
Quote:
Originally Posted by origmas View Post
MonsterID - это указатель на ID (в этой именно реализации на VC++)

mov edi, MonsterID; // записывается в регистр
mov edi, [edi]; // из адресса, который и представляет собой этот указатель (по нем и лежит ID) - читаются данные в опять-же в этот регистр - то-есть сам ID
push edi; // и прячется ..

сам ID подготавливается функцией распределения памяти под данные функции потока, записью туда ID-а и открытием потока, а в эту функцию ID передается из основной программы ..

... это не я "Молодца" - это тот кто так догадался сделать на VC++

.. вообще-то работает ..
В данной реализации сишника то работает. А вот человек спрашивал про Автоит.А ты ему там советуешь выполнять данную операцию. А для него она НЕ ПРИМЕНИМА. Поэтому в его реализации данная вещь приводит к 100% лаже.

Заметь в его примере:
Code:
MOV_EDI(Dec("801050D6"))
MOV_EDI_DWORD_PTR_EDI()
PUSH_EDI()
Он запихивает само ID в регистр EDI, а не указатель на него. Поэтому операция MOV_EDI_DWORD_PTR_EDI() для него идиотична. К тому же, чтобы использовать пример из твоего сишника, ты сначала должен этот ID писать в адресное пространство клиента, а потом только передавать параметром своей функции (кстати что абсолютно бессмысленно, т.к. по сути при вызове CreateRemoteThread ты передаёшь 1 параметр - в 4 байта, который всего лишь является указателем на число в 4 байта, поэтому в данной конкретной ситуации проще не через указатель передавать, а само ID вместо указателя. Но такой частный случай может привести к тому, что не подойдёт общий код инъекции, расчитанный на большую структуру параметров).

На автоите ID передаётся совсем по другому. Там не делается передача по указателю. Вместо этого динамически формируется исполняемый код, который именно записывает этот ID по самому значению в регистр EDI, и передача параметров просто не осуществляется.

Т.е. в его случае команда:
MOV_EDI(Dec("801050D6"))
должна сформировать исполняемый ассемблерный код команды:
mov edi, 0x801050D6

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

А причина проблем у человека: либо некорректное формирование исполняемого кода инъекции, либо неправильно осуществление самой инъекции.
12/27/2009 18:12 muzhig#1183
Как узнать, чей лут? Отличить свой лут/ничей и чужой.
Чтобы не стоять тупо около монетки не своей- палевно очень.
Да и когда чел рес копает, у него над душой стоять в ожидании копания тоже как то некрасиво....
12/27/2009 18:17 Shamanpovt#1184
Ребят, нашёл ошибку)
В Autogeo неправильно переводится add ecx,... в машинные коды)
Теперь работает)
Спасибо вам огромное!
12/27/2009 18:53 Novohyd#1185
Quote:
Originally Posted by Shamanpovt View Post
Ребят, нашёл ошибку)
В Autogeo неправильно переводится add ecx,... в машинные коды)
Теперь работает)
Спасибо вам огромное!
Если не секрет, как правильно?