Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Наставьте на путь истинный

-

Общение разработчиков

- Программирование для Perfect World, общение и обсуждене разработок

Ответ
 
Опции темы
Старый 22.03.2012, 06:01   #1
 Пехотинец
Аватар для dwa83
 
dwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личность
Регистрация: 21.03.2012
Сообщений: 83
Популярность: 1178
Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
 
По умолчанию Наставьте на путь истинный

Здравствуйте, загорелся идеей написать бота под свои нужды (так как нет идеального бота для всех случаев, как уже на форуме кто-то писал).

Скачал Borland C++ builder 6, решил в ней делать.
Делфи с паскалем уже подзабыл, так как в какой то момент на c++ перепрыгнул (с++ тоже вспоминать придётся, да и знания средненькие).

Решил пока сделать считывание параметров перса.
Вооружившись вот этой темкой
http://zhyk.ru/forum/showthread.php?t=356949
этой
http://zhyk.ru/forum/showthread.php?t=287321
и на всякий случай этой
[Ссылки могут видеть только зарегистрированные пользователи. ]

Полазил пару часов пока допёр как подключаться к процессу и как считывать. В итоге прога считывает значение ХП перса, но почему-то не то значение. Знающие с++, ткните меня в то место где я напортачил, уже не знаю в какую сторону копать.

Вот код с проекта
Этот кусок вначале после подключения библиотек
Код:
HWND hwndPW;   // хэндл окна PW
DWORD pid;     // unsigned long
HANDLE process; // процесс PW

DWORD BA       = 0x00B27A04; // базовый адрес
DWORD persA1   = 0x1C; // смещение1 (структура перса)
DWORD persA2   = 0x34; // смещение2 (структура перса)
DWORD hpA      = 0x0490; // хп перса

DWORD buff;
DWORD bcount;

int hp;
И этот кусок в обработчике нажатия на кнопку(на форме только кнопка и листбокс)
Код:
 hwndPW=FindWindow(0,"Perfect World");
  GetWindowThreadProcessId(hwndPW,&pid);
  process=OpenProcess(PROCESS_ALL_ACCESS,false,DWORD(pid));

  ReadProcessMemory(process,&BA,&buff,sizeof(buff),&bcount);
  ReadProcessMemory(process,&(buff+=persA1),&buff,sizeof(buff),&bcount);
  ReadProcessMemory(process,&(buff+=persA2),&buff,sizeof(buff),&bcount);
  ReadProcessMemory(process,&(buff+=hpA),&hp,sizeof(hp),&bcount);

  CloseHandle(process);

  ListBox1->Clear();
  ListBox1->Items->Add("Хэндл окна - "+IntToStr(int(hwndPW)));
  ListBox1->Items->Add("PID просесса - "+IntToStr(int(pid)));
  ListBox1->Items->Add("просесс - "+IntToStr(int(process)));
  ListBox1->Items->Add("Базовый адрес - "+IntToStr(int(BA)));
  ListBox1->Items->Add("Что получили - "+IntToStr(int(hp)));

http://www.zhyk.ru/forum/picture.php?albumid=1299&pictureid=3496

Последний раз редактировалось dwa83; 22.03.2012 в 06:08. Причина: Добавление скрина
  Ответить с цитированием
Старый 22.03.2012, 06:49   #2
-= Мастер Света =-
 Рыцарь-капитан
Аватар для krukovis
 
krukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нации
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
 
По умолчанию Re: Наставьте на путь истинный

Цитата:
Сообщение от dwa83Посмотреть сообщение
DWORD bcount;

Это, на сколько помню, параметр - Количество бит для чтения. и он должен быть равен в твоем случае четырем 4.
А у тебя походу 0.
________________
--------------------------------------------
PerfectAutoLogin v 7.4 - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
[for 1.4.6] PW Patcher 12.0 - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
InGamePatcher 1.2 - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------
  Ответить с цитированием
Старый 22.03.2012, 06:54   #3
 Пехотинец
Аватар для dwa83
 
dwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личность
Регистрация: 21.03.2012
Сообщений: 83
Популярность: 1178
Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
 
По умолчанию Re: Наставьте на путь истинный

Нет нет, это счётчик количества считанных байт из памяти. Помоему он нафик не нужен даже. Ну если только для проверки всё ли мы считали, что хотели.

Добавлено через 3 минуты
Я вот думаю может с оффсетами чего-то напутал, или может считываю как то не правильно..
Ещё вопрос; вот дана цепочка смещений, доходим до последнего адреса, считываем, и там находится нужное нам значение или адрес нужного нам значения?

Добавлено через 1 час 28 минут
Нашёл наконец таки ошибку) Сыграла свою роль забытость языка и, в частности, способы передачи данных в функцию))

Стоило только преобразовать тип к (void*)BA вместо &BA и всё заработало) Помогли некоторые примеры, написанные на C++, плохо что таковых очень мало тут по сравнению с темами для Delphi(

Последний раз редактировалось dwa83; 22.03.2012 в 08:22. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 22.03.2012, 09:55   #4
 Сержант
Аватар для BritishColonist
 
BritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауру
Регистрация: 11.12.2010
Сообщений: 110
Популярность: 541
Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
 
По умолчанию Re: Наставьте на путь истинный

dwa83, ознакомьтесь с темой: http://zhyk.ru/forum/showthread.php?t=274071.
Если интересуют конкретные особенности языка (а в частности: использование WinAPI, DLL, макросов, указателей, классов), то вот ещё две мои темы, правда на другом сайте и по другой игре, но вроде подробно описаны многие вещи:
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
Хотя присутствуют излишества (например, return в конце каждой функции. это необязательно), но это не так важно.

Кстати, работать в любом случае придётся в основном с WinAPI, следовательно, примеры под Delphi тоже будут довольно-таки понятными.
________________
Принимаю реквесты на статьи, программы. Всё будет запилено в лучшем виде :3
  Ответить с цитированием
Старый 23.03.2012, 14:08   #5
 Пехотинец
Аватар для dwa83
 
dwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личность
Регистрация: 21.03.2012
Сообщений: 83
Популярность: 1178
Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
 
По умолчанию Re: Наставьте на путь истинный

Спасибо, ознакомлюсь. С считыванием данных пока разобрался, теперь нужно с инжектом разобраться, пока понятий об этом совсем ноль, ну почти. Почитаю данные темки, если будут вопросы - пишу сюда)
Пока сделал вот такую штуку
http://www.zhyk.ru/forum/picture.php?albumid=1299&pictureid=3502
  Ответить с цитированием
Старый 26.03.2012, 18:33   #6
 Пехотинец
Аватар для dwa83
 
dwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личность
Регистрация: 21.03.2012
Сообщений: 83
Популярность: 1178
Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
 
По умолчанию Re: Наставьте на путь истинный

Почитал первую темку, понял примерно следующее. Если что-то не так понял, поправьте меня.


В классе игрока вызываем функцию(например таргета)
внутри функции таргета происходит вызов функции InjectAndExecute(иньекция потока и ожидание его завершения, если я правильно понял), в качестве параметров мы передаём указатель на нашу функцию и указатель на параметры для этой функции. То-есть функция уже существует в адресном пространстве НАШЕЙ программы и так же значение параметра лежит гдето тут же у нас в проге..

Далее функция инжекта выделяет в ЧУЖОМ процессе дополнительное место размером с нашу функция и дополнительно место под хранение наших параметров а нам возвращает указатели на эти места(допустим это будет Pf - указатель на место в памяти выделенное в другом процессе под функция и pp - аналогичный указатель на место памяти, где будут храниться параметры для функции. Далее мы берём указатель на функцию в нашей проге и указатель на параметры и, пользуясь ими, копируем нашу функцию с параметрами в выделенную в другом процесе память. Далее мы создаём поток (к многопоточным приложениям я к сожалению отнёсся без интереса когда в своё время насиловал книжку по с++, потому не знаю об этом нифига), как я понимаю этот кусок кода будет выполняться параллельно с основным потоком клиента игры, и по завершению кода этот поток сообщает в то место, откуда мы его создали, а именно в нашу программу, что он завершился. Далее в нашей же программе идёт освобождение памяти в чужом процессе, занимаемой функцией и параметрами.

А что происходит после создания потока с нашей функцией? Она запускается сразу после создания потока?
Так же вопрос: Как сюда Target_THREAD(DWORD* WorldIdentifier) попадает указатель на место? в результате выполнения CreateRemoteThread? А если у нас не один пармаметр передаётся, как их передавать? Допустим у нас есть func_THREAD(DWORD* var1, DWORD* var2) тогда нам по указателю pParams нужно хранить массив с этими двумя параметрами, следующими в порядке их обьявления в параметрах функции?

Допустим всё так, тогда идём дальше. В созданном потоке находится копия кода, вызывающего клиентскую функцию таргета, но уже с нашей модификацией (подставляем свой ID), и далее идёт обычный вызов клиентской функции таргета с как обычно подготовленными регистрами:

pushad // сохраняем все регистры, чтобы не "повредить" стек
mov edx,0x00606A70 // помещаем адрес клиентской функции таргета(Как искать?)
mov edi,Id //тут помещаем ID
mov eax,dword ptr ds:[BA] // Базовый адрес как то используется в функции таргета?
push edi // Тут мы для неё готовим параметр, записав его в стек, если я правильно понял
mov ecx,dword ptr ds:[eax+0x20] // Какоето смещение от базового адреса? что за смещение?
add ecx,0xEC // Как я понял тут идёт по аналогии с *(*BA+0x20)+0xEC не понял что это за цепочка
call edx // собственно вызов функции
popad // возвращаем регистры на место

Дофига осталось непонятных вещей.. А в общем я всё правильно понял?
На ассемблере прогил ооочень давно и совсем на другой платформе(старый добрый z80) но думаю разобраться не составит труда.
  Ответить с цитированием
Пользователь сказал cпасибо:
ktulx (22.04.2012)
Старый 26.03.2012, 21:47   #7
 Сержант
Аватар для BritishColonist
 
BritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауру
Регистрация: 11.12.2010
Сообщений: 110
Популярность: 541
Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
 
По умолчанию Re: Наставьте на путь истинный

dwa83, вроде всё верно.
В клиенте выделяется память под функцию, в эту область памяти записывается код функции и параметры к ней же, потом происходит вызов функции через CreateRemoteThread, которой в качестве параметров помимо хендла процесса передаются указатели на функцию и параметры к ней (указатели эти получены из памяти клиента при выделении в нём памяти). После вызова CreateRemoteThread, созданный поток сразу же запускается (сам), следовательно, код функции потока сразу же начнёт выполняться. Как только функция потока возвращает управление, поток, кажется, убивается. Я точно не уверен. Примерно в этом состоит основной принцип инжектов.
Код, имитирующий действия клиента все привыкли называть просто инжектами. Инжекты представляют собой код (преимущественно ассемблерный), предназначенный исключительно для внедрения в другой процесс (нет смысла в прямом запуске инжектов из программы). Поэтому некоторые любят получать байткод своих инжектов и записывать байты из него в массив, чтобы не обрамлять инжект в своей программе как обычную функцию.
Передать несколько параметров можно, например, любым структурированным типом (class, struct). Рекомендую использовать именно структуры, так логичнее. То есть нужные параметры можно описать как поля структуры, присвоить им определённые значения, а затем передать в функцию указатель на эту структуру. Причём тут есть два варианта: один набор параметров - одна структура (т.е. в разных инжектах будет использоваться своя структура со своими понятными именами полей, например Player->TargetId), либо (как любят дельфисты портала) одна структура для любых инжектов (но тогда будет тяжелее восприниматься смысл кода, ибо поля будут всегда иметь одинаковые имена, например PParams->Param1).
Как искать адреса, смещения и код для инжекта? Здесь необходим опыт работы в отладчике (например, OllyDbg) и в программе вроде Cheat Engine. CE используется для поиска смещений и кода, работающего с определёнными адресами, а Olly - для анализа этого кода, понимания его логики, выделения значимых его частей. Чтобы понять некоторые основы сего ремесла, нужно читать соответствующие статьи (благо, есть люди, которые пишут их) и уделять много времени копанию в коде клиента.
Вот парочка годных статей от Dinmaite:
поиск базового адреса (об указателях и смещениях);
поиск кода для инжекта (об инъекциях кода).
________________
Принимаю реквесты на статьи, программы. Всё будет запилено в лучшем виде :3

Последний раз редактировалось BritishColonist; 26.03.2012 в 21:51.
  Ответить с цитированием
Старый 27.03.2012, 15:57   #8
 Пехотинец
Аватар для dwa83
 
dwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личность
Регистрация: 21.03.2012
Сообщений: 83
Популярность: 1178
Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
 
По умолчанию Re: Наставьте на путь истинный

BritishColonist, спасибо огромное за обучалку. Всё получилось, всё работает. С инжектами разобрался, с поиском кода для инжекта тоже, прочитав темы по данным ссылкам. Осталось программу нормально структурировать(пока только есть недоклассы для работы с удалённым процессом, который включает в себя функции считывания данных в различные структуры, списки окружабщих мобов\нпс, параметры персонажа, и одна рабочая функция для инжекта). Осталось найти несколько необходимых кусков кода для инжекта и можно будет стряпать логику поведения самого бота). Спасибо ткнуть увы не могу, сообщений маловато. Вообще не думал что осилю данную тему, но подсказки и обьяснения были на высоте)

Добавлено через 6 часов 2 минуты
Вот вопросик ещё.. искал код использования скилла, нашёл вот это. Что это за вызов такой странный в последней строчке? Ещё интересно вот что, здесь идёт запоминание ESI и EDI, но выше по коду я не вижу вообще откуда в них берутся значения.. как тут поступить? Уже столько раз клиент подвесил) замаялся))

CPU Disasm
Address Command Comments
004B64EF NOP
004B64F0 /. SUB ESP,8
004B64F3 |. PUSH EBP
004B64F4 |. MOV EBP,ECX
004B64F6 |. MOV EAX,DWORD PTR SS:[EBP+8]
004B64F9 |. TEST EAX,EAX
004B64FB |. JNE SHORT 004B6504
004B64FD |. XOR AL,AL
004B64FF |. POP EBP
004B6500 |. ADD ESP,8
004B6503 |. RETN
004B6504 |> MOV ECX,DWORD PTR DS:[0B27A04]
004B650A |. MOV EAX,DWORD PTR DS:[EAX+8]
004B650D |. PUSH ESI
004B650E |. PUSH EDI
004B650F |. MOV EDX,DWORD PTR DS:[ECX+1C]
004B6512 |. PUSH EAX
004B6513 |. MOV ESI,DWORD PTR DS:[EDX+34]
004B6516 |. CALL DWORD PTR DS:[<&ElementSkill.?IsGoblinSkill@ElementSkill@GNET@@S A_NI@Z>]

Последний раз редактировалось dwa83; 27.03.2012 в 22:04. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 27.03.2012, 22:38   #9
 Сержант
Аватар для BritishColonist
 
BritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауру
Регистрация: 11.12.2010
Сообщений: 110
Популярность: 541
Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
 
По умолчанию Re: Наставьте на путь истинный

dwa83, вероятно, эти регистры были заполнены до вызова данной функции.
Странный вызов - вызов функции IsGoblinSkill из библиотеки ElementSkill. Честно говоря, я не узнавал, в чём смысл этого названия и что она делает, но это точно не нужно. Если интересно, могу подогнать свой инжект скиллов.
________________
Принимаю реквесты на статьи, программы. Всё будет запилено в лучшем виде :3
  Ответить с цитированием
Старый 28.03.2012, 01:28   #10
 Пехотинец
Аватар для dwa83
 
dwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личность
Регистрация: 21.03.2012
Сообщений: 83
Популярность: 1178
Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
 
По умолчанию Re: Наставьте на путь истинный

Не отказался бы от кода, самому найти не получается. Пытался отсеивать так: искал в СЕ адреса из которых идёт обращение к BA при нажатии на 1 скилл, затем из найденных адресов выбирал те, по которым проходит и при использовании другого скилла, ну и на всякий случай отсеял при использовании скилла и его отмене тут же, чтобы отсеять именно начало использования. При этом нашёл только один нормальный кусок кода, в котором присутствует ID скилла как параметр, но и с ним не получилось, там вроде бы кроме самого ID пара нулей как параметры в стек помещались. В итоге клиент подвисал. А тот код что я выше указал я последним нашёл, когда отсеивал на привращении дру в лису и обратно, причём отсеился единственный кусок кода, к тому же там перед вызовом функции как раз и указывался ID скилла в PUSH EAX, но видимо всё равно не то. Так же пробовал взять из темки готовый адрес, и искал все вызовы call 0xADRES. Таких кусков нашёл штук 5, да и с ними не смог ничего работающего сделать.
  Ответить с цитированием
Старый 28.03.2012, 02:08   #11
 Сержант
Аватар для BritishColonist
 
BritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауру
Регистрация: 11.12.2010
Сообщений: 110
Популярность: 541
Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
 
По умолчанию Re: Наставьте на путь истинный

Код:
void CPlayer::CastSkillOnTarget(DWORD SkillId) // кастуется строго на цель, но если эффект положительный, а цель - моб/враг, то кастуется на себя
{
	DWORD Function = 0x00463630;
	__asm	{
		push -1
		push 0
		push 0
		mov ecx,PlayerStruct
		push SkillId
		call Function
	}
}
void CPlayer::CastSkillOnSelf(DWORD SkillId) // даже если кто-то выделен, скилл пойдёт на себя, но атакующие скиллы не пройдут даже по мобам
{
	DWORD wId = *(DWORD*)(PlayerStruct+0x47C);
	DWORD PtrToPlayerWId = (DWORD)&wId;
	DWORD Function = 0x00697760;
	__asm	{
		push PtrToPlayerWId
		push 1
		push 0
		push SkillId
		call Function
	}
}
Эти два инжекта я использую из DLL, поэтому параметры передаются не как указатели, а как конкретные числа. И поэтому я напрямую читаю память через указатели во втором инжекте. Впрочем вас скорее заинтересует первый из них, т.к. его проще всего будет правильно внедрить.
________________
Принимаю реквесты на статьи, программы. Всё будет запилено в лучшем виде :3
  Ответить с цитированием
Старый 28.03.2012, 11:52   #12
 Пехотинец
Аватар для dwa83
 
dwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личность
Регистрация: 21.03.2012
Сообщений: 83
Популярность: 1178
Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
 
По умолчанию Re: Наставьте на путь истинный

Спасибо, первый кусок прикрутил. Наконец работает и не виснет ничего). Сделал так вот:

Код:
void __stdcall Skill_THREAD(DWORD* ID)
{
  DWORD Id = *ID;
  DWORD Function = 0x00463630;
  __asm
  {
    push -1
    push 0
    push 0
    mov ecx,DWORD PTR DS:[0x0B27A04]
    mov ecx,DWORD PTR DS:[ecx+0x1C]
    mov ecx,DWORD PTR DS:[ecx+0x34]
    push Id
    call Function
  }
}
Добавлено через 2 часа 12 минут
Как бы не надоесть в вопросами, но спрошу. Вопрос касается работы в среде с++ builder. У меня вечное недопонимание того, как следует объявлять модули в начале друг друга. Как пример: есть модуль главной программы. В нём я объявляю новый модуль в котором описываю реализацию своего класса. В классе используются некоторые переменные типа структур, эти структуры я тоже описываю в этом же модуле выше описания моего класса. Теперь мне нужно в другом модуле использовать переменные такого же типа как эти структуры. Если их так же описать в другом модуле, получу ошибку повторного описания структуры. Я выношу эти структуры в отдельный модуль, который обьявляю в начале модуля, в котором они были раньше. Так же объявляю этот модуль с описанием структур в другом, где они тоже должны использоваться. В итоге опять же получаю ошибку "Multiple declaration for ...". Если обьявляю этот файл со структурами в модуле главной программы перед обьявлениями двух модулей(в которых используются эти типы), то результат - эти типы не видны в этих модулях. Где можно взять инфу конкретно по этой теме? Даже не знаю каким запросом гуглить.

Последний раз редактировалось dwa83; 28.03.2012 в 14:05. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 28.03.2012, 15:17   #13
 Сержант
Аватар для BritishColonist
 
BritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауру
Регистрация: 11.12.2010
Сообщений: 110
Популярность: 541
Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
 
По умолчанию Re: Наставьте на путь истинный

dwa83, честно говоря, даже не знаю, что и посоветовать. Я обычно делаю всё одним файлом, чтобы не париться с этими инклудами. C++, знаешь ли.. Тут всё строго : D
________________
Принимаю реквесты на статьи, программы. Всё будет запилено в лучшем виде :3
  Ответить с цитированием
Старый 28.03.2012, 15:28   #14
 Пехотинец
Аватар для dwa83
 
dwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личность
Регистрация: 21.03.2012
Сообщений: 83
Популярность: 1178
Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
 
По умолчанию Re: Наставьте на путь истинный

Наверное так и придётся сделать, но вот код получится слишком громоздким, можно запутаться

Добавлено через 22 часа 0 минут
Кстати вот пока всё что наковырял. По ходу обдумывания поведения бота, поискал некоторые инжекты. Некоторые из них на форуме были на Делфи, я их под себя на с++ переделал. Может кому пригодится, вдруг кто-то на с++ пишет, а переделывать с Делфи не охота). Самолично найти получилось только Target, Fly, CallPet

некоторые инжекты на с++

Последний раз редактировалось dwa83; 29.03.2012 в 13:29. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 02.04.2012, 21:01   #15
 Пехотинец
Аватар для dwa83
 
dwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личность
Регистрация: 21.03.2012
Сообщений: 83
Популярность: 1178
Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
 
По умолчанию Re: Наставьте на путь истинный

Не подскажете инжекты покупки продажи? Сколько не искал не получается найти. Так же не хватает ремонта всего снаряжения. Пока что такой бот: Прилетает по заданным координатам, приземляется готовит пета лупит мобов(параметры мобов задаются в окне бота), собирает лут только в близи убитого моба(пропуская тот что не может поднять) до заполнения инвентаря, затем летит продаваться открывает диалог ...... закрывает диалог и возвращается на место фарма.

Вот в пропущеном месте хотелось бы вставить починку, докупку банок и продажу хлама. Может кто-нибудь помочь с этим? В темке с инжектами есть данные функции, но новые адреса к ним я увы не могу найти, поиск приводит к совершенно не похожим на эти функции кускам кода.

Добавлено через 21 минуту
Интересует ещё такой вопрос. В чём суть инжектов пакетов? Я так понимаю это уже готовые для отправки на сервер команды в виде массива байт. И не опаснее ли схватить с ними бан чем с инжектами функций? Ведь при инжектах функций все пакеты клиент готовит сам, а тут отправка напрямую идёт?

Последний раз редактировалось dwa83; 02.04.2012 в 21:22. Причина: Добавлено сообщение
  Ответить с цитированием
Ответ


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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Статья] Путь к генералу The_Feragamo Общение и обсуждение, архив Point Blank 8 05.10.2011 03:20
Путь Императора Touya25 Прочее 0 12.09.2011 22:43
[Статья] Как качнуть акк в 2 kirya_96 Cross Fire 4 03.03.2011 20:53
Путь ПК :) MostFire Статьи и описания по Lineage 2 11 29.06.2010 16:03

Заявление об ответственности / Список мошенников

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

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net