Сейчас на форуме: asfa, _MBK_, Adler (+8 невидимых)

 eXeL@B —› Вопросы новичков —› реверс l2divine (используя brain.ini и hand.dll)
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 1.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 02 февраля 2013 18:09 · Поправил: rastHEX
· Личное сообщение · #1

Попробую начать 3ю тему - надеюсь не забанят
Итак какашки брошеные мне заставили меня взять на вооружение brain.ini и hand.dll
При помощи них выяснилось следующее

Защита
[!] dotNet Reactor v3.3 - v3.9 protected !
Microsoft SLPS --> Link <--

Используя NETUnpack получит 5 файлов
Unpacked_1
Unpacked_2
Unpacked_3.dll
Unpacked_4.dll
Unpacked_5.dll

просканировав их ProtectionId на Unpacked_5.dll наткнулся на [!] dotFuscator detected !
это и её размер в 2.2мб натолкнул на мысль что это и есть программа а остальное - мусор упаковщика
(к стати не подскажите - так ли оно на самом деле? )
Затем использовал Kurapica DotNET DeObfuscator в результате работы которого получил длл которая открылась в Рефлекторе.

схема работы бота



На данный момент задача в раскриптовке исходящего и ответного запросов.

Обновление ссылок (результаты работы)
--> линк на самого бота <--
b0e0_02.02.2013_EXELAB.rU.tgz - Unpacked_5-cleaned (сам распакованный exe)
39fd_02.02.2013_EXELAB.rU.tgz - 2dll.rar Unpacked_3 и Unpacked_4

запросы словленые снифером (Base64binarity)
исходящий
Code:
  1. http://www.l2divine.com/ws/gateway.jsp?wsid=21&h=AQCMYXTEPOFeJfaADxNjl9bJFsR23XGMVe0vwRlPz98NK3GkJf8ZUf%2fdrtmzWKhNFlYQBLjRc9fTdKTOvX3eqfWB4IdevFQDjRjiJFNj5wfXUEjsczl8IjVR2hgcVlTMWJiSbgIkuqHq47Jr1h3so0ljmyiVhMO8AoQJNyXIUsr15Llj6MAtm2in9EivDx8dCEJbLHx%2fqU1nU26g5iibAwi%2b9xhTsDqWAZR2uM6WIWX6W6kd3cmbS6EkFIQZddLuGZED58JrKvYiXFqmTuqOhk8rQZ6Lo8KVcPmxuedqDmdZW5crA1oGgf6weeqqIdqCgcQuUPzjX0I1H55L0IpWZmo%3d


входящий
Code:
  1. AWpDKbfQFtVOWmKMri45eHwzT1Xoa+Z3v9wFCU9/Gui6phbAIl48FqMvqtWSZifnnHpoh6BXWrxf\n
  2. Xu1H1t2DGLjg6UEG9oEeW4vWTkx0z1Qt1rMywpbVqES6mVbuQtWHniG09b/AyBp0eIs19gSl9G/q\n
  3. q0SDobWHGwvfKJBe5mVrYgcUtV5bwDWXF+ddF5fl5pXHrTu7BvPTecxNhLw4QTWhrWkvGmEaKDyi\n
  4. 5AQV+pvusxx/8faINwFqAVSxvxfEcAENZnYO1jVR5jNehhJrGF15XlnsBFimUnTjOYRppRUTl8ug\n
  5. INOMnPCcD5daqHNip4ASw7NUpa43cqGN6aZLXmVpzFcAqIfEjuOGeI0p2qQW01spmrOjLKaAQQX4\n
  6. obAzrsCCVn7nbo/IxmX8xfEXfKhcWHp1snlw8opfMBfGzPFl0QJBokcj+FlogVGcV4HbtAsGNwGF\n
  7. +3XY41MAz6XHCF2wtKtubknnpVl96y8/HKDbnd1ykSPCssaW3jgq26jOzQ==\r\n





Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 02 февраля 2013 18:21 · Поправил: ZaZa
· Личное сообщение · #2

rastHEX
Для деобфускации лучше использовать --> de4dot <--

Если у Вас столько времени и топиков заняла лишь деобфускация, тогда Вам ОЧЕНЬ много нужно думать и читать... За Вас здесь ничего делать не будут! [Ваши предыдущие топики не читал]

Да и перезалить надо бы... Deposit нынче не в почете...

-----
One death is a tragedy, one million is a statistic.




Ранг: 1.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 02 февраля 2013 18:25 · Поправил: rastHEX
· Личное сообщение · #3

ZaZa
Спасибо. вроде меньше кода и понятнее в рефлекторе длл выглядит



b0e0_02.02.2013_EXELAB.rU.tgz - Unpacked_5-cleaned.rar


ЗЫ: Размер меньше стал, она сюда влезла




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 02 февраля 2013 18:33
· Личное сообщение · #4

Ботоводов тут тоже не любят, потому, наверное, Вы весь в какашках и ходите...

А откуда уверенность, что именно эта бибилиотека содержит в себе алгоритм криптования запроса на сервер и раскриптовки ответа?

Проще, наверное, плясать от исполняемого файла... Он то точно скажет, к какой функции/процедуре бибилиотеки обращается...

-----
One death is a tragedy, one million is a statistic.




Ранг: 1.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 02 февраля 2013 18:40
· Личное сообщение · #5

обфусцированной была только она одна.
однако после того как посмотрел обнаружил что код лицензирования действительно не в ней!
спасибо ZaZa

Две другие в рефлекторе фроде идентичны (тогда почему их две )




39fd_02.02.2013_EXELAB.rU.tgz - 2dll.rar




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 02 февраля 2013 18:44
· Личное сообщение · #6

Странно больно Вы ищете: метод научного тыка?

Должно же быть хоть какая-то методика поиска нужного места в программе!
Например, начать с поиска строки [хотя там есть специальная функция для шифрования/дешифрования строк], или просто идти с начала исполняемого файла и искать, искать, искать....

-----
One death is a tragedy, one million is a statistic.




Ранг: 1.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 02 февраля 2013 18:55
· Личное сообщение · #7

искал по методу - ценное шифруем наиболее устойчиво.



Ранг: 0.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 03 февраля 2013 05:02 · Поправил: dima2k
· Личное сообщение · #8

Я бы в Рефлекторе в исполняемом файле перешел в начальную процедуру и изучил вначале ее. Как правило вызов функции обработки лицензии находится в ней. Затем, найдя функцию, здесь же, в рефлекторе, определил бы в каких еще процедурах она вызывается. Саму функцию лицензирования можно не трогать, особенно, если там используется шифрование, а просто удалить вызовы ее в найденых процедурах. Затем поиском поискал бы обращения к вебсайту/серверу разработчика и отключил бы возможные стучалки. И напоследок поиском нашел бы возможные вызовы Kill() и убрал бы их, на тот случай, если разработчиком предусмотрены закрытия программы. Применительно к данной прОграмме глупость написал =(



Ранг: 1.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 03 февраля 2013 17:41 · Поправил: rastHEX
· Личное сообщение · #9

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



Ранг: 1.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 03 февраля 2013 19:29
· Личное сообщение · #10

Code:
  1.                  public static void LoadLicense(string filename)
  2.                  {
  3.                         if (Status.LoadLicenseEvent != null)
  4.                         {
  5.                               FileStream fileStream = new FileStream(filename, 3, 1);
  6.                               byte[] array = new byte[fileStream.get_Length()];
  7.                               fileStream.Read(array, 0, array.Length);
  8.                               fileStream.Close();
  9.                               Status.LoadLicense(array);
  10.                         }
  11.                  }


Как понимаю грузит код из файла, в массив и вызывает функцию обработки лицензии. только вот программа никаких файлов не создаёт

Code:
  1.                  public static void LoadLicense(byte[] license)
  2.                  {
  3.                         if (Status.LoadLicenseEvent != null)
  4.                         {
  5.                               Status.LoadLicenseEvent(license);
  6.                         }
  7.                  }


Code:
  1. // License.Status
  2. public static event Status.LoadLicenseEventHandler LoadLicenseEvent
  3. {
  4.          [MethodImpl(32)]
  5.          add
  6.          {
  7.                  Status.LoadLicenseEvent = (Status.LoadLicenseEventHandler)Delegate.Combine(Status.LoadLicenseEvent, value);
  8.          }
  9.          [MethodImpl(32)]
  10.          remove
  11.          {
  12.                  Status.LoadLicenseEvent = (Status.LoadLicenseEventHandler)Delegate.Remove(Status.LoadLicenseEvent, value);
  13.          }
  14. }


[MethodImpl(32)] - как это найти?
разбираю Unpacked_3.dll



Ранг: 1.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 03 февраля 2013 19:49 · Поправил: rastHEX
· Личное сообщение · #11

Code:
  1. static Status()
  2. {
  3.          // Note: this type is marked as 'beforefieldinit'.
  4.          Status.licensed = false;
  5.          Status.eva_lock = false;
  6.          Status.date_lock = false;
  7.          Status.uses_lock = false;
  8.          Status.instances_lock = false;
  9.          Status.hardware_lock = false;
  10.          Status.eva_time = 0;
  11.          Status.eva_time_current = 0;
  12.          Status.hid = "####-####-####-####-####";
  13.          Status.lhid = "####-####-####-####-####";
  14.          Status.uses = 1;
  15.          Status.instances = 0;
  16.          Status.uses_current = 1;
  17.          Status.eva_type = EvaluationType.Trial_Days;
  18.          Status.license_exp_date = DateTime.get_Now();
  19.          Status.key_n_value = new SortedList();
  20.          byte[] array = new byte[0];
  21.          Status.lic = array;
  22. }


как понимаю назначение переменных?!
Status.lic ключь(ответ от сервера) в этой переменной




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 03 февраля 2013 19:56
· Личное сообщение · #12

может вам сначала C# изучить? а то блог ни о чем...



Ранг: 1.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 03 февраля 2013 19:59 · Поправил: rastHEX
· Личное сообщение · #13

вот и изучаю на примере. просто провожу паралели. У меня нормальный опыт лиш в 1С (там сиподобный язык)

ЗЫ: какоето подозрение что тем зашифрованным в Base64 запросом фаил какой то передаётся

исходящий
Code:
  1. http://www.l2divine.com/ws/gateway.jsp?wsid=21&h=AQCMYXTEPOFeJfaADxNjl9bJFsR23XGMVe0vwRlPz98NK3GkJf8ZUf%2fdrtmzWKhNFlYQBLjRc9fTdKTOvX3eqfWB4IdevFQDjRjiJFNj5wfXUEjsczl8IjVR2hgcVlTMWJiSbgIkuqHq47Jr1h3so0ljmyiVhMO8AoQJNyXIUsr15Llj6MAtm2in9EivDx8dCEJbLHx%2fqU1nU26g5iibAwi%2b9xhTsDqWAZR2uM6WIWX6W6kd3cmbS6EkFIQZddLuGZED58JrKvYiXFqmTuqOhk8rQZ6Lo8KVcPmxuedqDmdZW5crA1oGgf6weeqqIdqCgcQuUPzjX0I1H55L0IpWZmo%3d


входящий (может это фаил?)
Code:
  1. AWpDKbfQFtVOWmKMri45eHwzT1Xoa+Z3v9wFCU9/Gui6phbAIl48FqMvqtWSZifnnHpoh6BXWrxf\n
  2. Xu1H1t2DGLjg6UEG9oEeW4vWTkx0z1Qt1rMywpbVqES6mVbuQtWHniG09b/AyBp0eIs19gSl9G/q\n
  3. q0SDobWHGwvfKJBe5mVrYgcUtV5bwDWXF+ddF5fl5pXHrTu7BvPTecxNhLw4QTWhrWkvGmEaKDyi\n
  4. 5AQV+pvusxx/8faINwFqAVSxvxfEcAENZnYO1jVR5jNehhJrGF15XlnsBFimUnTjOYRppRUTl8ug\n
  5. INOMnPCcD5daqHNip4ASw7NUpa43cqGN6aZLXmVpzFcAqIfEjuOGeI0p2qQW01spmrOjLKaAQQX4\n
  6. obAzrsCCVn7nbo/IxmX8xfEXfKhcWHp1snlw8opfMBfGzPFl0QJBokcj+FlogVGcV4HbtAsGNwGF\n
  7. +3XY41MAz6XHCF2wtKtubknnpVl96y8/HKDbnd1ykSPCssaW3jgq26jOzQ==\r\n




Ранг: 0.6 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 04 февраля 2013 03:53
· Личное сообщение · #14

Unpacked_5.dll это и есть exe файл. Его хеадер просто нужно подправить.
Тут не все так просто как тебе кажется. Данная программа помимо обфускации защищена вот этой виртуальной машиной _http://www.microsoft.com/slps/.
Точнее 3 метода защищено. Можешь увидеть в коде такие вызовы
Code:
  1. SLMRuntime.SVMExecMethod(this, "*************", new object[]
  2.                  {
  3.                         sender,
  4.                         e
  5.                  });

Пытался как то девиртуализировать этот код, но не преуспел, столкнулся с проблемами. Код защищенных хранится в файле ресурсов _SVM_BUF.DAT
Виртуальная машина исполняется в Permutation_1cc06_2.0.dll, эта длл тоже накрыта дотфускатором.

Поэтому грубо отломал защиту. Но так как расчет зашифрованного логина для входа в игру производится на сервере, пришлось вставить еще и свой код RSA шифрования.
Еще в одном из защищенных методов производится расчет хешсумы exe файла, поэтому оригинальный exe пришлось тоже оставить.
Вообщем, чтобы снять защиту надо девертуализировать код, насколько я знаю готовых решений для этого нету. Может кто то подскажет по этому поводу...
Надо защитить свой код этим протектором, тогда реверсить будет проще.



Ранг: 1.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 04 февраля 2013 06:20 · Поправил: rastHEX
· Личное сообщение · #15

т.е. ты думаеш механизм раскриптовки ключа в самой программе? идея лекарства - эмуляция http сервера и подмена оригинального адреса на 127.0.0.1 в файле хостс. и соответственно отправка правильного запроса клиенту.



Ранг: 1.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 04 февраля 2013 06:52 · Поправил: rastHEX
· Личное сообщение · #16

тормозит ещё то что разбирающиеся из комьюнити ненавидят меня

В Олли с фантомом попытка снятия дампа неудачна. может можно загрузить 5ю длл лоадером каким и сдампить потом? комьюнити хелп

т.е. расшифрованный код находится в памяти виртуальной машины которая и есть Permutation_1cc06_2.0.dll
и для его запуска нужно загрузить Permutation_1cc06_2.0.dll а в неё загрузить шифрованный код из файла ресурсов. гдето ведь он должен расшифровыватся

Ты говорил об RSA однако когда я снифал явного обмена ключами не было. Ты расшифровал хоть какой то из запросов?

комьюнити - с меня за помощь красивая статья на портал по снятию dotNet Reactor + Microsoft.Licensing

Деобфусцированная Permutation_1cc06_2.0.dl (глянув в неё сложилось мнение что вся система от мс лиценз. и разработчик руку мало приложил)



Ранг: 0.6 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 04 февраля 2013 15:17
· Личное сообщение · #17

rastHEX пишет:
т.е. ты думаеш механизм раскриптовки ключа в самой программе? идея лекарства - эмуляция http сервера и подмена оригинального адреса на 127.0.0.1 в файле хостс. и соответственно отправка правильного запроса клиенту.


Эта идея и так всем понятна, но для этого нужно понять что шифруется и чем шифруется.


rastHEX пишет:
т.е. расшифрованный код находится в памяти виртуальной машины которая и есть Permutation_1cc06_2.0.dllи для его запуска нужно загрузить Permutation_1cc06_2.0.dll а в неё загрузить шифрованный код из файла ресурсов. гдето ведь он должен расшифровыватся


Там не просто расшифрованный код. Там исполняется код что написан под эту виртуальную машину, можна сказать свой ассемблер спецификацию которого никто не знает. Дамп тебе ничего не даст, тебе нужно написать свой дизассамблер для него. Какая команда что означает и что делает.

rastHEX пишет:
Ты говорил об RSA однако когда я снифал явного обмена ключами не было. Ты расшифровал хоть какой то из запросов?


Ключами никто не обменивается они явно зашиты в следуемую программу, а именно в код защищенных методов. Никаких пакетов я не расшифровал, это логический вывод из анализа кода. А именно как ты знаешь в протоколе Ла2, используется RSA для шифрования передаваемого логина и пароля. В данном случае l2divine передает нужные данные на сервер, а сервер возвращает зашифрованный логин, пароль и подтверждение что оплачено, все это накрыто еще своей шифрацией сверху.



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 04 февраля 2013 16:58
· Личное сообщение · #18

Сначала объясни где расположены основные функции бота на клиенте или на сервере. У тебя как я понимаю есть клиент, а серверная часть?



Ранг: 1.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 04 февраля 2013 17:01 · Поправил: rastHEX
· Личное сообщение · #19

Medsft
функционал на клиенте. есть клиент и снифнутые запросы. на сервере http://www.l2divine.com/ws/gateway.jsp?wsid= яваскрипт запрос обрабатывает. сканировал акунетиксом - уязвимостей на сайте нет чтоб джаваскрипт выковырять.

heXelium
есть идея как загрузить длл виртуальной машины?
как понимаю основая цель - как раз и есть ключи шифрования протокола. RSA стандартное.
Ещё как думаеш - можно ли загрузить Unpacked_5.dll длл? лоадером занятся. а процедуру проверки хэш суммы - поставить бряк и занопить, подставив нужное значение вывода?



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 04 февраля 2013 17:12
· Личное сообщение · #20

rastHEX пишет:
функционал на клиенте.
- а зачем тебе тогда функционал проверки лицензии нужен?



Ранг: 0.6 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 04 февраля 2013 17:31
· Личное сообщение · #21

Medsft пишет:
rastHEX пишет:функционал на клиенте. - а зачем тебе тогда функционал проверки лицензии нужен?


Он хочет сломать защиту путем запуска своего сервера проверки. Как я уже описывал выше чтобы просто отломать защиту патчем, нужно также дописать свою логику для RSA шифрования (это нужно для авторизации в игре) так как это логика вынесена на сервер.

rastHEX пишет:
есть идея как загрузить длл виртуальной машины?как понимаю основая цель - как раз и есть ключи шифрования протокола. RSA стандартное.Ещё как думаеш - можно ли загрузить Unpacked_5.dll длл? лоадером занятся. а процедуру проверки хэш суммы - поставить бряк и занопить, подставив нужное значение вывода?


Еще раз RSA это то чем шифруются пакеты к серверу ла2, эта логика вынесена на сервер, в защищаемой программе ее нету, все передается путем запросов на сервер L2divine вот эти запросы зашифрованы не известной шифрацией не RSA!!!
Unpacked_5.dll тебе не нужен лоадер, это и есть искомый ексе, нужно только подправить хеадер.
Процедура проверки хэш суммы находится в защищенном методе, ты ее не занопишь не зная ассемблера этой виртуальной машины, и бряк не поставишь не зная что там делается.

Я вижу 2 пути решения взлома:
1. Ты статически анализируеш код виртуальный машины, узнаешь какой код она исполняет, какая команда виртуального кода за что отвечает. И пишешь девиртуализатор. Потом анализируешь механизм защиты запросов к серверу l2divine.
2. Делаешь как я. Тупо патчишь программу, обламывая проверку. Но + к этому тебе придется написать свою реализацию недостающей логики RSA шифрованию, что находится на сервере l2divine.

Твоих знаний я думаю не достаточно ни для одного из этих шагов. Сначала стоит поучится на чемто попроще.

| Сообщение посчитали полезным: Medsft

Ранг: 1.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 04 февраля 2013 17:38
· Личное сообщение · #22

heXelium
Простые методы не для меня. сложное-интересно, да и думаю интересно не только мне - защита ведь нетривиальная.
т.е. как понимаю с виртуальной машиной всёравно разбиратся. есть ссылки на инфу по теме?



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 04 февраля 2013 17:49
· Личное сообщение · #23

Блин откуда ты вообще хочешь добыть пакеты обмена серверов бота и линейки? Для себя хотя бы нарисуй схему своего проекта... Какая в твоей задача на хер подмена сервера. Не думал ты также что и на сервере тоже можно проверять ключ твоей лицухи а реализация проверки его на клиенте простая затычка для облегчения нагрузки сервера...
Если любишь глобальные задачи ставлю ее тебе: спи.ди серверную часть ))))))))) самому смешно стало...



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 04 февраля 2013 17:50
· Личное сообщение · #24

Этот бот пишется самими же разработчиками игры. Знай

| Сообщение посчитали полезным: heXelium

Ранг: 0.6 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 04 февраля 2013 17:50
· Личное сообщение · #25

Ну вот _http://habrahabr.ru/post/164437/ не совсем относится к менеджед коду, но идея должна быть понятна.
Еще можешь посмотреть исходники de4dot как он справляется с Agile.net виртуально машиной.



Ранг: 0.6 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 04 февраля 2013 18:00
· Личное сообщение · #26

Medsft пишет:
Блин откуда ты вообще хочешь добыть пакеты обмена серверов бота и линейки? Для себя хотя бы нарисуй схему своего проекта... Какая в твоей задача на хер подмена сервера. Не думал ты также что и на сервере тоже можно проверять ключ твоей лицухи а реализация проверки его на клиенте простая затычка для облегчения нагрузки сервера...


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

Medsft пишет:
Этот бот пишется самими же разработчиками игры. Знай

Откуда такая инфа?)



Ранг: 1.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 04 февраля 2013 18:11 · Поправил: rastHEX
· Личное сообщение · #27

Medsft
Пакеты добывает снифер. Непохоже чтоб разработчики и бота писали, хотя фиг его знает. я общался через форум с тамошним dev - бот даже не юзает простейшие алгоритмы обхода препятствий и геодату - недумаю чтоб разработчики игры могли такое ниасилить



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 04 февраля 2013 18:34
· Личное сообщение · #28

Твою дивизию... Смотри схему
(1 часть клиент <обмен пакетами чего ты хочешь от бота>)(2 часть Сервер бота<обмен пакетами что нужно сделать>Сервер игры)
Про 2 часть говорить не будем:
Думаем:
На хрена нам особо шифровать команды типа: иди из пункта А в пункт Б
Отвечаем:
1.Для того чтобы проверить- а команды присланы от чела который платил... или нет
Думаем: ну можно же организовать логику проверки лицензии полностью на сервере.... а тут что-то не то... а что тогда...
Догадываемся: что чуваки знают определенную логику сервера игры и пути ее шифрования (ну например какие нибудь координаты, способы поведения перса, нужные ключи.... чтобы из отправленного пакета клиентом бота сервер бота смог понять что ты хочешь: иди из пункта А в пункт Б) а вот это уже то что никто не должен знать.. Согласен? если нет перечитай заново))))))
Вывод Ты можешь КОГДА НИБУДЬ осилить и девиртуализировать машину клиента и ЭТО даст тебе возможность написать свой бот.... (поскольку Я не верю что ты сможешь спи.дить серверную часть)... но я точно знаю что как только ты это сделаешь завтра выйдет патч игры где что нибудь будет изменено на 1 байт а следом за данным шагом выйдет обновленный бот с еще лучщей защитой.



Ранг: 1.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 04 февраля 2013 18:43 · Поправил: rastHEX
· Личное сообщение · #29

MedsftMedsft
т.е. ты имееш ввиду бот лиш оболочка а вся логика на сервере????
это ведь не единственный бот к линейке - значить логика запросов известна.



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 04 февраля 2013 19:03
· Личное сообщение · #30

Боты разные бывают )))) хорошие и плохие ты ведь почему-то за этот взялся
Я смотрел в свое время эту самую логику ... давно это было... там помоему еще какаято хрень по защите клиента была .. вообщем не помню потому как и не решил ее тогда )))


. 1 . 2 . >>
 eXeL@B —› Вопросы новичков —› реверс l2divine (используя brain.ini и hand.dll)
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати