Получаем лицензионные игры из Steam бесплатно

Fail with honor rather than succeed by fraud

Вчера, отдыхая после рабочей недели и упоровшись нейрометаболическими стимуляторами, как всегда полез в Интернет, и что-то дернуло меня покопаться в устройстве системы приема платежей на сайте Steam. После получасовой возни нашел занятный баг. Оказалось, что у агрегатора, через которого Steam принимает оплату по WebMoney, существует недоработка в системе проверки платежей (причем этот же агрегатор используется Battle.net, то есть World of Warcraft и Startcraft 2 можно попробовать "оплатить" этим же способом).
Принцип довольно прост. Все основано на ошибке агрегатора платежей, через которого Steam принимает оплату по WebMoney. Итак, рассмотрим поэтапно:
Читать далее «Получаем лицензионные игры из Steam бесплатно»

Тащим пароли от Steam

В связи с огромной популярностью сервиса Steam, решил написать простой пример осуществления перехвата вводимых данных при авторизации (логин и пароль) с дальнейшей отправкой на гейт.
Беглый поиск в интернете показал, что подобные примеры существуют, однако, зачастую громоздки, либо уже устарели.
Итак, для осуществления перехвата необходимо определить, куда передается управление при попытке авторизации в Стиме. Основой для взаимодействия с сервисом Steam является Steam.dll, которая экспортирует множество функций, в том числе и функцию SteamLogin, которая как раз и вызывается при попытке авторизации.
Таким образом необходимо реализовать "прослойку", которая будет выполняется перед вызовом этой функции и передавать введенные данные на наш гейт. Для начала нужно определить, возможно ли заставить Steam подгрузить нашу библиотеку без внесения изменения в оригинальные файлы.
Если запустить Steam и посмотреть, какие dll'ки и откуда пытается подгрузить исполняемый файл, то мы увидим примерно следующее (я смотрел с помощью FileMon, но уже давно существует более продвинутый Process Monitor):

Как мы видим, подгружается множество библиотек, причем красным выделены неудачные попытки загрузки библиотек. При вызове LoadLibrary производится попытка найти некоторые системные библиотеки сначала в директории с исполняемым файлом, а уже потом в System32. Это позволяет сделать следующую вещь: выбрать какую-нибудь редкоиспользуемую системную библиотеку из тех, которые исполняемый файл сначала ищет в своей директории (например, rasadhlp.dll), создать свою библиотеку с таким же именем (которая будет сплайсить функцию SteamLogin) с пробросом экспортов в оригинальную библиотеку.
Читать далее «Тащим пароли от Steam»