Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Взлом Bimsbot 3.07a

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Взлом программ] >> Взлом Bimsbot 3.07a
Имя
Сообщение << Старые топики   Новые топики >>
Взлом Bimsbot 3.07a - 2012-03-08 23:24:35.116666   
Gnumoder

Сообщений: 18
Оценки: 0
Присоединился: 2012-03-07 23:42:12.686666
Всем доброго времени суток.
Начну, пожалуй, сразу с проблемы:
Есть такая программа-бот для онлайновой игрулины WoW (ссылка). Мне, естественно, хочется пользоваться ей и не платить (ну жадный я).
Способов я перепробовал кучу, но найти механизм активации так и не смог. Использовал следущее - IDA Pro Advanced (32-bit), HDasm, Resource Hacker, winhexru, Reg\Filemon, ArtMoney и еще несколько, которые уже удалил с харда и позабыл о их существовании. Пытался даже перелопатить механизм работы кейгена от (да капец, я прослезился) старой версии, написанием которого занимался разработчик(и) этого самого бота. Но и там фига с маслом. В IDA есть структура главного исполняемого файла бота (в виде дерева). Я так и не сообразил, которая из процедур вызывает проверку активации программы (по-идее она должна быть в числе первых, искал по адресу в HEXe тоже ноль).
Итак, требуется:
1. Узнать, где я пропустил нужный алгоритм.
2. Помощь вроде "тыка носом" или толковое объяснение, как правильно искать.
Если еще что-то нужно по-подробнее описать, говорите.
А то уже 3 день копаюсь, хрень бессвязную несу и по-полчаса залипаю в монитор.
P.S.
Кстати, бот по тестовому заходу показал себя с лучшей стороны, алгоритмы если не совершенные, то весьма и весьма близки к ним. Может даже на его основе можно и для других игр боты написать с незначительными изменениями кода. Единственный обнаруженный мною минус - это необходимость за него платить =) Автору несомненный плюс за программу. Главное, что бы это за рекламу не посчитали =)
Post #: 1
RE: Взлом Bimsbot 3.07a - 2012-03-09 13:45:22.816666   
Flint_ta

Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
Это .net сборка, упакованая DotNet Reactor v4.X. Мало у кого будет желание в этом ковыряться.
Post #: 2
RE: Взлом Bimsbot 3.07a - 2012-03-09 16:51:51.436666   
Gnumoder

Сообщений: 18
Оценки: 0
Присоединился: 2012-03-07 23:42:12.686666
UPD
Post #: 3
RE: Взлом Bimsbot 3.07a - 2012-03-10 15:33:26.050000   
Gnumoder

Сообщений: 18
Оценки: 0
Присоединился: 2012-03-07 23:42:12.686666
UPD
Post #: 4
RE: Взлом Bimsbot 3.07a - 2012-03-10 15:37:49.746666   
Flint_ta

Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
Тут спросите http://exelab.ru/f/index.php?action=vthread&forum=1&topic=16650&page=0
Post #: 5
RE: Взлом Bimsbot 3.07a - 2012-03-13 14:08:06.443333   
Gnumoder

Сообщений: 18
Оценки: 0
Присоединился: 2012-03-07 23:42:12.686666
UPD
Post #: 6
RE: Взлом Bimsbot 3.07a - 2012-03-14 10:19:19.376666   
Gnumoder

Сообщений: 18
Оценки: 0
Присоединился: 2012-03-07 23:42:12.686666
UPD
Файл с трудом деобфусцирован, распакован и готов к переборке… нашел форму вызова окна активации программы. Теперь проблем - где лежит база ключей)
private void button_1_Click(object sender, EventArgs e) &nbsp; {GForm4 gForm = new GForm4(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gForm.ShowDialog(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Application.Exit();} &nbsp; protected override void Dispose(bool disposing) &nbsp; {if (disposing &amp;&amp; this.icontainer_0 != null) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {this.icontainer_0.Dispose();} по этой кнопке происходит вызов вот этого поля
public GForm4() &nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.InitializeComponent(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base.Icon = Class6.smethod_7(); &nbsp; } &nbsp; private void button1_Click(object sender, EventArgs e) &nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class0.smethod_4(this.textBox_0.Text + "\r\n" + this.method_0()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show("Коды сохранены, перезапустите бота"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base.Close(); &nbsp; } &nbsp; public string method_0() &nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebClient webClient = new WebClient(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string result; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = webClient.DownloadString("http://www.bimsbot.ru/fishbot43x.php?id=" + Convert.ToString(Class4.ulong_1) + "&amp;kod=" + this.textBox_0.Text); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = "765546318"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return result; &nbsp; } &nbsp; protected override void Dispose(bool disposing) &nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (disposing &amp;&amp; this.icontainer_0 != null) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.icontainer_0.Dispose(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base.Dispose(disposing); &nbsp; } &nbsp; private void InitializeComponent() &nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.label1 = new Label(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBox_0 = new TextBox(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.button1 = new Button(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base.SuspendLayout(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.label1.AutoSize = true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.label1.Location = new Point(12, 9); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.label1.Name = "label1"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.label1.Size = new Size(96, 13); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.label1.TabIndex = 0; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.label1.Text = "Код регистрации:"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBox_0.Location = new Point(114, 6); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBox_0.Name = "Код"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBox_0.Size = new Size(136, 20); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBox_0.TabIndex = 1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.button1.Location = new Point(262, 5); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.button1.Name = "button1"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.button1.Size = new Size(88, 21); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.button1.TabIndex = 2; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.button1.Text = "Активировать"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.button1.UseVisualStyleBackColor = true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.button1.Click += new EventHandler(this.button1_Click); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base.AutoScaleDimensions = new SizeF(6f, 13f); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base.AutoScaleMode = AutoScaleMode.Font; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base.ClientSize = new Size(362, 34); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base.Controls.Add(this.button1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base.Controls.Add(this.textBox_0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base.Controls.Add(this.label1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base.Name = "Коды"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Text = "Регистрация"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base.ResumeLayout(false); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base.PerformLayout(); &nbsp; } } Вызывает подозрение base.Name = "Коды"; Единственное, где её искать… братцы-кролики, на вашу помощь надеюсь сильно8|
Post #: 7
RE: Взлом Bimsbot 3.07a - 2012-03-14 13:26:29.560000   
Gnumoder

Сообщений: 18
Оценки: 0
Присоединился: 2012-03-07 23:42:12.686666
UPD
Случайно наткнулся на такую строку MessageBox.Show("Невозможно связаться с сервером бота для проверки кодов. Проверьте, что ничего не блокирует выход бота в интернет и повторите попытку.\r\n\r\nДо появления связи с сервером бот будет работать в триальном режиме."); Но при любых условиях этот бокс не вызывается…. странно. Но, в таком случае, возможен вариант - подставить свой адрес и сделать так, что бы при любом приходящем запросе, отсылалось "да" (или что ему там нужно). Только вот как это сделать - вопросище %)
Post #: 8
RE: Взлом Bimsbot 3.07a - 2012-03-14 13:53:59.840000   
Flint_ta

Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
private void button1_Click(object sender, EventArgs e) { Class0.smethod_4(this.textBox_0.Text + "\r\n" + this.method_0()); MessageBox.Show("Коды сохранены, перезапустите бота"); base.Close(); }
По нажатию на кнопку вызывается Class0.smethod_4, а затем сообщение "Коды сохранены, перезапустите бота". Подозреваю что нужная вам функция Class0.smethod_4, посмотрите что происходит внутри нее.
Post #: 9
RE: Взлом Bimsbot 3.07a - 2012-03-14 14:04:42.690000   
Gnumoder

Сообщений: 18
Оценки: 0
Присоединился: 2012-03-07 23:42:12.686666
// Class0 public static void smethod_4(string string_0) { using (StreamWriter streamWriter = new StreamWriter("registration.re", false)) { streamWriter.WriteLine(string_0); } } Тут smethod_4 записывает строку, которую ему передали в файл registration.re
А передается ему строка, которая состоит из this.textBox_0.Text + то что возвращает this.method_0()
this.textBox_0.Text + "\r\n" + this.method_0()); Стало быть в method_0() происходит проверка

public string method_0() { WebClient webClient = new WebClient(); string result; try { result = webClient.DownloadString("http://www.bimsbot.ru/fishbot43x.php?id=" + Convert.ToString(Class4.ulоng_1) + "&kod=" + this.textBox_0.Text); } catch { result = "765546318"; } return result; } Тут видно что проверка происходит на сервере http://www.bimsbot.ru/fishbot43x.php?id=" + Convert.ToString(Class4.ulоng_1) + "&kod=" + this.textBox_0.Text);
Post #: 10
RE: Взлом Bimsbot 3.07a - 2012-03-14 14:16:52.240000   
Flint_ta

Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
Упс, нечаянно отредактировал ваше сообщение )
Post #: 11
RE: Взлом Bimsbot 3.07a - 2012-03-14 14:28:03.243333   
Gnumoder

Сообщений: 18
Оценки: 0
Присоединился: 2012-03-07 23:42:12.686666
Так-с… если я правильно соображаю, то он САМ генерит код на основе введенных крякозябриков и версии, ибо в this.method_0() (если я там смотрю) записано:
// Class0 public static string smethod_0() {&nbsp; WebClient webClient = new WebClient(); &nbsp;&nbsp; string address = "http://bimsbot.ru/verfish.txt"; &nbsp;&nbsp; string result; &nbsp;&nbsp; try &nbsp;&nbsp; {result = webClient.DownloadString(address);} &nbsp;&nbsp; catch &nbsp;&nbsp; {result = "N/A";} &nbsp;&nbsp; return result;} После скидывает в http://www.bimsbot.ru/fishbot43x.php?id=%22 в виде запроса, после чего получает подтверждение рег\не рег? Но как он это понимает, если с сервера отсылается комбинация чисел? Значит у него все-таки есть верификационная база?
Post #: 12
RE: Взлом Bimsbot 3.07a - 2012-03-14 14:36:29.896666   
Gnumoder

Сообщений: 18
Оценки: 0
Присоединился: 2012-03-07 23:42:12.686666
Я, кстати, на http://fish-bot.at.ua/ временно пересел, там всякой ереси меньше, искать проще, а защита идентичная бимсу.
Post #: 13
RE: Взлом Bimsbot 3.07a - 2012-03-14 14:41:09.560000   
Flint_ta

Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
quote:

Так-с… если я правильно соображаю, то он САМ генерит код на основе введенных крякозябриков и версии, ибо в this.method_0() (если я там смотрю) записано:


Это не то

quote:

После скидывает в http://www.bimsbot.ru/fishbot43x.php?id=%22 в виде запроса, после чего получает подтверждение рег\не рег?

Он получает какой-то результат, вы бы просниффали запросы и ответы, так было бы яснее что уходит на сервер.

quote:

Но как он это понимает, если с сервера отсылается комбинация чисел? Значит у него все-таки есть верификационная база?

База обычно находится на сервере, и при запуске он скорее всего тоже что-то отправляет на сервер. А значит читает файл registration.re, поищите в коде где к нему еще идет обращение.
Post #: 14
RE: Взлом Bimsbot 3.07a - 2012-03-14 15:10:07.653333   
Gnumoder

Сообщений: 18
Оценки: 0
Присоединился: 2012-03-07 23:42:12.686666
Обращений к registration.re я не нашел, зато нашел кое-что другое:
&nbsp; this.ulong_4 += 1uL; &nbsp;if (this.ulong_4 &gt; this.ulong_2) { this.timer_0.Enabled = false; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.button_2.Text = "Начать"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show("Триальная версия работает ограниченное количество забросов.\n\nДля снятия ограничения купите ключ и зарегистрируйте бота.", "Триальная версия"); &nbsp; return; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } Интерес вызывает if (this.ulong_4 > this.ulong_2), т.к. он есть везде, где упоминается триал.
Post #: 15
RE: Взлом Bimsbot 3.07a - 2012-03-14 15:12:59.410000   
Flint_ta

Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
Потому что "Триальная версия работает ограниченное количество забросов", this.ulоng_4 скорее всего кол-во запросов.
Post #: 16
RE: Взлом Bimsbot 3.07a - 2012-03-14 15:53:08.703333   
Gnumoder

Сообщений: 18
Оценки: 0
Присоединился: 2012-03-07 23:42:12.686666
Вот нечто, напоминающее лог. Структура запроса-ответа нужна?
GET /fishbot43x.php?id=381746400&amp;kod=567567567777777777777777777777777777777777777777777 HTTP/1.1 Host: www.bimsbot.ru Connection: Keep-Alive HTTP/1.1 200 OK Server: nginx/1.1.10 Date: Wed, 14 Mar 2012 11:49:48 GMT Content-Type: text/html; charset=CP1251 Transfer-Encoding: chunked Connection: keep-alive X-Powered-By: PHP/5.2.17 9 954623436 0
Post #: 17
RE: Взлом Bimsbot 3.07a - 2012-03-14 16:15:11.756666   
Flint_ta

Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
quote:

Вот нечто, напоминающее лог. Структура запроса-ответа нужна?

Мне нет ) А вы разбирайтесь что там к чему. Еще раз говорю смотрите что делается с файлом registration.re. Из него должны быть прочитаны данные и отправлены на сервер, и где-то рядом будет код отвечающий за решение о зарегистрированности программы.
Post #: 18
RE: Взлом Bimsbot 3.07a - 2012-03-14 16:23:13.116666   
Gnumoder

Сообщений: 18
Оценки: 0
Присоединился: 2012-03-07 23:42:12.686666
Спасибо за помощь)А существуют трассировщики для подобных задач? Ну например функция а вызывает файл б из файла с?
Post #: 19
RE: Взлом Bimsbot 3.07a - 2012-03-15 12:47:22.133333   
Flint_ta

Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
Логи трассировщиков обычно очень большие, а толк в данном случае от него будет сомнительный. ProcMon попробуйте http://download.sysinternals.com/Files/ProcessMonitor.zip
А если вы имели ввиду низкоуровневую трассировку, тогда Ababo Code Tracer.
Post #: 20
RE: Взлом Bimsbot 3.07a - 2012-03-17 12:58:07.753333   
Gnumoder

Сообщений: 18
Оценки: 0
Присоединился: 2012-03-07 23:42:12.686666
Без декомпилирования каким-либо способом реально поправки в файл внести? Вот, кстати, код отвечающий за решение о активации программы:
&nbsp;&nbsp;&nbsp; public static string smethod_9(string string_0) &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileInfo info = new FileInfo(string_0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!info.Exists) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string str = string.Empty; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string str2 = string.Empty; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StreamReader reader = System.IO.File.OpenText(string_0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Label_0022: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str2 = reader.ReadLine(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (str2 != null) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str2 = str + str2; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; goto Label_0022; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader.Close(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return str; &nbsp;&nbsp;&nbsp; } Найти-то нашел, теперь проблемы с компиляцией сборки - постоянно выдает кучу ошибок, которые даже при их исправлении появляются. Я сомневаюсь в их существовании… есть методы принудительной компиляции с сохранением всех ссылок и синтаксиса?
Post #: 21
RE: Взлом Bimsbot 3.07a - 2012-03-17 14:48:40.780000   
Gnumoder

Сообщений: 18
Оценки: 0
Присоединился: 2012-03-07 23:42:12.686666
UPD
Нашел способ, но только через ассемблер, в котором я практически ничего не понимаю (на то есть причины).
Может помочь с этим кто-нибудь?
Post #: 22
Страниц:  [1]
Все форумы >> [Взлом программ] >> Взлом Bimsbot 3.07a







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.