Статья [Reverse-Engineering] Лоадер INTERIUM

  • colby57
  • UNEXPECTED_KERNEL_MODE_TRAP_M (1000007f)
  • 155
  • 2
  • 240
Шалом.

Сегодня хочу поведать о том как я реверсил лоадер известного мувмент чита - Interium.

1. Введение
Скажу сразу, никакого хейта к кодерам интериума у меня нет, занимаюсь реверсом не для того чтобы кому-то поднасрать с высока своими кряками, а для того чтобы познавать всегда что-то новое. Поэтому кряк интериума будет только у меня =) Однако, я испытал настоящий баттхёрт анализируя защиту в лоадере, о всех косяках в защите я не буду рассказывать, расскажу о тупых методах поиска и фатальной для проекта уязвимости из-за которой я крякнул интериум.

2. Лоадер
Лоадер накрыт VMProtect, но кодеры назвали две секции с протектором зачем-то Themida.
1615212000869.png


Забавно, что кодеры решили возлагать надежды полностью на протектор и не пытаться сделать что-то самим кроме защиты от школоты, поэтому в лоадере так много пробелов в защите. Итак, что же ищет лоадер интериума и как он это делает? У него есть три типа проверки: Чекать имена окон, чекать имена запущенных процессов и чекать наличие файла с логами.

Проверяет имена окон он очень тупо и предсказуемо, в вечном цикле через FindWindowA он проверяет:
Скрытое содержимое доступно для зарегистрированных пользователей!


process_hacker_detector.png

Как же обходить подобные проверки? Да, можно обойтись простым Window Renamer'om, который будет менять название окна на какое пожелаешь. Но всё же я покажу как легко избавиться от подобных проверок. Ставим бряк на FindWindowA, так как он находится в бесконечном цикле то бряк сработает моментально, смотрим регистр EAX и узнаем, что первым делом он чекает есть ли окна с названием Process Hacker.

1615212115167.png


В стеке мы можем увидеть адрес из которого был сделан вызов, переходим к нему и видим следующее:

1615212304831.png


Как вы уже могли понять из скриншота, достаточно пропатчить джамп или пронопать проверку. И так же можно сделать с остальными проверками, следующее он будет проверять на наличие Process Dumper, он обходится таким же способом.



Переходим к следующему типу проверки: Проверка запущенных процессов.
На самом деле я уже рассказывал как с этим бороться в прошлом своем туториале по разбору CrackMe. Достаточно поставить RET в начало функции и второй козырь интериума выходит из строя. Не буду тут расписывать что он ищет, а покажу вам скрин, потому что он пиздец как много ищет))
Скрытое содержимое доступно для зарегистрированных пользователей!


О третьем типе поиска не очень интересно говорить, разработчики тут так же меня развеселили тем, что пытались найти логи титанхайд на диске С, во время дебага не раз замечал как лоадер пытается найти по такому пути лог "C:\\TitanHide.log"
ловит логи титанхайда.png



Теперь расскажу о связи с сервером и какой кринж можно словить анализируя их связь. Соединение там держится на сокетах и http реквестах, про сокеты тут можно забыть, так как серверу вообще поебать на подобные махинации с клиентом. Зацикливаем внимание на http реквестах, именно тут произошел фатальный косяк кодеров, когда у вас имеется подписка вы можете спокойно нажать на кнопку 'INJECT', однако во время всего этого вызывается функция HttpOpenRequestW и передает серверу данные о клиенте по типу "Логин, пароль" и тому подобное. Но если перехватить эту функцию и перейти по ссылке, то оригинальный зашифрованный модуль интериума начнет скачиваться на ваш рабочий стол. Это действительно так, я даже потом сдампил регион виртуальной памяти чита с игры, да бы сравнить размер и разница там была буквально в килобайте.


На скрине слева оригинальный модуль чита полученный с сервера и справа дамп с виртуальной памяти игры.
1615213239077.png


Казалось бы, раз модуль качается только с кнопки 'INJECT', то у человека без подписки нет шансов получить доступ к модулю. Сильно же я ошибался найдя еще три проверки с авторизацией, после которых будет решено впустить вас в следующее окно с инжектом, или выдать ошибку о том что нет подписки или выдать ошибку о невалид данных. Пронопав все три проверки вы получите чудо как на моём скрине:

Не имею подписки, и юзера с никнеймом 'Colby5Covington' нет на форуме интериума. Самое забавное, что сервер интериума все равно дал разрешение на скачку модуля чита.
1615213696927.png


3. Заключение
Как я и сказал, неприязни как таковой к проекту и кодерам у меня нет и рассказывать про ту фатальную уязвимость с авторизацией я не стал. Не стоило полагаться полностью на VMProtect имея при себе серьезные уязвимости. У вас как никак хороший мувмент софт, но такая ущербная защита. Кряк сюда я не выложу.

4. Бонус
Скрытое содержимое доступно для зарегистрированных пользователей!


На этом всё. Всем добра и позитива.
 
  • 31
  • 38
Шалом.

Сегодня хочу поведать о том как я реверсил лоадер известного мувмент чита - Interium.

1. Введение
Скажу сразу, никакого хейта к кодерам интериума у меня нет, занимаюсь реверсом не для того чтобы кому-то поднасрать с высока своими кряками, а для того чтобы познавать всегда что-то новое. Поэтому кряк интериума будет только у меня =) Однако, я испытал настоящий баттхёрт анализируя защиту в лоадере, о всех косяках в защите я не буду рассказывать, расскажу о тупых методах поиска и фатальной для проекта уязвимости из-за которой я крякнул интериум.

2. Лоадер
Лоадер накрыт VMProtect, но кодеры назвали две секции с протектором зачем-то Themida.
Посмотреть вложение 9208

Забавно, что кодеры решили возлагать надежды полностью на протектор и не пытаться сделать что-то самим кроме защиты от школоты, поэтому в лоадере так много пробелов в защите. Итак, что же ищет лоадер интериума и как он это делает? У него есть три типа проверки: Чекать имена окон, чекать имена запущенных процессов и чекать наличие файла с логами.

Проверяет имена окон он очень тупо и предсказуемо, в вечном цикле через FindWindowA он проверяет:
### Скрытое содержимое ###

Посмотреть вложение 9213
Как же обходить подобные проверки? Да, можно обойтись простым Window Renamer'om, который будет менять название окна на какое пожелаешь. Но всё же я покажу как легко избавиться от подобных проверок. Ставим бряк на FindWindowA, так как он находится в бесконечном цикле то бряк сработает моментально, смотрим регистр EAX и узнаем, что первым делом он чекает есть ли окна с названием Process Hacker.

Посмотреть вложение 9209

В стеке мы можем увидеть адрес из которого был сделан вызов, переходим к нему и видим следующее:

Посмотреть вложение 9210

Как вы уже могли понять из скриншота, достаточно пропатчить джамп или пронопать проверку. И так же можно сделать с остальными проверками, следующее он будет проверять на наличие Process Dumper, он обходится таким же способом.



Переходим к следующему типу проверки: Проверка запущенных процессов.
На самом деле я уже рассказывал как с этим бороться в прошлом своем туториале по разбору CrackMe. Достаточно поставить RET в начало функции и второй козырь интериума выходит из строя. Не буду тут расписывать что он ищет, а покажу вам скрин, потому что он пиздец как много ищет))
### Скрытое содержимое ###

О третьем типе поиска не очень интересно говорить, разработчики тут так же меня развеселили тем, что пытались найти логи титанхайд на диске С, во время дебага не раз замечал как лоадер пытается найти по такому пути лог "C:\\TitanHide.log"
Посмотреть вложение 9214


Теперь расскажу о связи с сервером и какой кринж можно словить анализируя их связь. Соединение там держится на сокетах и http реквестах, про сокеты тут можно забыть, так как серверу вообще поебать на подобные махинации с клиентом. Зацикливаем внимание на http реквестах, именно тут произошел фатальный косяк кодеров, когда у вас имеется подписка вы можете спокойно нажать на кнопку 'INJECT', однако во время всего этого вызывается функция HttpOpenRequestW и передает серверу данные о клиенте по типу "Логин, пароль" и тому подобное. Но если перехватить эту функцию и перейти по ссылке, то оригинальный зашифрованный модуль интериума начнет скачиваться на ваш рабочий стол. Это действительно так, я даже потом сдампил регион виртуальной памяти чита с игры, да бы сравнить размер и разница там была буквально в килобайте.


На скрине слева оригинальный модуль чита полученный с сервера и справа дамп с виртуальной памяти игры.
Посмотреть вложение 9216

It would seem that once the module swings only with the 'INJECT' button, a person without a subscription has no chance to access the module. Strongly, I was wrong to find three more checks with authorization, after which it will be decided to let you into the next window with an injection, or to issue a mistake that there is no subscription or issue a bug about the data failure. After the first three checks, you get a miracle as on my screen:

I don't have a subscription, and the user with the nickname 'Colby5Covington' is not on the interium forum. The funny thing is that the interium server still gave permission to jump the cheat module.
Посмотреть вложение 9217

Conclusion
As I said, I do not have any dislike for the project and coders and I did not talk about that fatal vulnerability with authorization. You shouldn't have relied entirely on VMProtect with serious vulnerabilities. You have no good software, but such flawed protection. I'm not putting the quack in here.

4. Bonus
Hidden content ###

That's it. All good and positive.
very good tutorial
 
Сверху Снизу