ITT Wrapper

Тема в разделе "WASM.RESEARCH", создана пользователем HuXTUS, 16 дек 2007.

  1. HuXTUS

    HuXTUS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2007
    Сообщения:
    240
    Здравствуйте! Заранее прошу меня простить за большое количество текста.

    История такая: дал мне друг игрушку “Колыбель римской империи” (cradle of Rome), чтобы я ее отучил деньги просить. Запускаю у себя дома. Появляется окошко враппера, внизу написано Powered by ITT wrapper. Начинаю ковырять. Первое впечатление: тьфу, какая ерунда! Прога просто выполняет CreateProcess к файлу gamedat.bin, который лежит в этой же папке. Переименовав файл в .exe его можно спокойно запустить. Чтобы не все было так просто, обе проги постоянно обмениваются сигналами в виде поименованных мутексов и, если игрушка не находит в определенный момент времени нужный мутекс, она закрывается.
    Что сделал я: написал простой лоадер, который запускает наш gamedat.bin и с помощью WriteProcessMemory на начало функции OpenMutexA пишет call ExitThread. Самой проге мутексы не нужны, их использует только следящий поток, который после этого завершается и не мешает жить.
    Так вот :) У меня все заработало. Притаскиваю лоадер другу, у него не пашет. Просто ничего не происходит. Уходя, забрал у него еще одну игрушку, защищенную тем же враппером. Применяю раз двадцать тот же(!) лоадер к проге. Не запускается. Начинаю мучить отладчиком,…вдруг заработало! И прекрасно работает сейчас. Я ничего не менял в своем exe-шнике. У меня такое подозрение, будто Прога палит комп “хакера” и просто сдается ему, чтобы отвалил, а на компе юзера просто не заработает.
    Кто-нибуть сталкивался и может прояснить положение?
    Спасибо.
     
  2. HuXTUS

    HuXTUS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2007
    Сообщения:
    240
    Написал очередную версию кряка. На этот раз лоадер выступает в качестве “умного” отладчика. Запускает жертву DEBUG_ONLY_THIS_PROCESS. Ставит бряк на начало OpenMutexA. Игнорирует все другие отладочные события, дожидаясь нашего бряка. Прибивает плохой процесс. Выполняет DebugActiveProcessStop.

    P.S. Жаль, что никто не отвечает. Тема больше походит на мой блог. ))
     
  3. Aquila

    Aquila Самурай дзена

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    1.467
    Адрес:
    Russia, Moscow
    Держи в курсе - интересно, закончится ли это победой разума в итоге или нет :).
     
  4. HuXTUS

    HuXTUS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2007
    Сообщения:
    240
    Балин))) Только что от друга. Не работает у него. да что такое....

    Самое интересное - проделываю все нужные действия под Olly у него на компе, т.е.:
    -бряк на OpenMutexA
    -Вписать туда ExitThread

    Запускается и работает. А мой лоадер, который выполняет всё один-в-один - нет.

    Смотрел под отладчиком свое творение: все шаги нормально отрабатывают без ошибок.

    Вот еще что выяснил: сам файл gamedat.bin защищен(это громко сказано) фирменным протектором. Вторую игру(называется она Beez) я смог распаковать - не сложнее UPX и дамп заработал сам по себе. А вот первую игру распаковал, но она выдает ошибку - может знаете, иногда такие сообщения выдают проги скомпилированные Microsoft Visual Studio. Ругается на плавающую запятую.

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

    Попробую еще один путь(пока не реализовал):
    апгрейдить свой "думающий" отладчик так, чтобы он притворялся wrapper'ом, то есть начинал обмениваться с прогой нужными мутексами. Для этого плохой поток в проге убивать не надо. Просто надо реагировать на отладочное событие, считывать контекст потока, брать имя нужного мутекса через стек и создавать такой мутекс))))

    Сама регистрация в программе предполагает отправку смс с простым кодом. Высылаемый пароль состоит только из цифр и имеет короткую длину. Это намекает на то, что все должно быть просто. Но кейген мне уже не интересен)))
     
  5. HuXTUS

    HuXTUS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2007
    Сообщения:
    240
    Похоже, эта тема больше походит на записки сумасшедшего, но:
    Попробовал сейчас запустить ради прикола свой лоадер (обе версии) у себя дома. Не работают. Что с первой, что со второй игрой. Дамп второй игры пашет.

    Решил распаковать первую игру. Тупо ставлю hardware breakpoint на esp-4. Два раза F9. Прога останавливается на jmp <адрес>. Инструкция, на которую она прыгает – pushad. Я подумал, что тут “упаковщик в упаковщике”. Но ради прикола сдумпил прогу. Запускаю ImpRec. Передаю ему тот адрес, на котором стою (за вычетом ImageBase, ессно). Он грит, не могу найти там ничего хорошего. Ладно, думаю, хватит с меня. Запускаю дамп,…работает! А ведь я даже импорт не восстановил.

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

    P.S. Я бы другу отнес работающий дамп прямо сейчас, но он уже убежал на работу.
     
  6. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    Пеши исчо)))
     
  7. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Не хотелось бы сглазить, но репортаж читается с не меньшим интересом, чем "История одного байта". Надеюсь, концовка не подкачает.
     
  8. HuXTUS

    HuXTUS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2007
    Сообщения:
    240
    Последняя сцена.
    Сделал то, что собирался – лоадер ставит бряк на OpenMutexA, когда он срабатывает, берет контекст потока (а их в той проге несколько), в котором произошло исключение, находит строку, содержащую имя мутекса, создает его, после чего отпускает прогу на волю, которая ни о чем не подозревая получает в результате вызова свой handle.
    Запустил. Заметно тормозит. Может быть я что-то не так сделал, но мой отладчик просто захлебнулся всякими ошибками.

    Решил пойти по другому пути – инжект. Сделал кряк, который запускает прогу и вызывает CreateRemoteThread (все, как у Рихтера). А моя DLL должна была уже из тыла врага перехватывать открытие мутекса и создавать его наперед. Что-то у меня не получилось :). DLL_PROCESS_ATTACH срабатывает, начинает выполняться, но до конца не доходит. Просто мистика. Даже если влепить в самое начало xor eax,eax / mov eax, [eax] ошибка не происходит. Впрочем, я не особо в этом понимаю, поэтому мог и ошибиться.

    Немного изменил кряк. Теперь он просто выделяет в проге VirtualAllocEx память, на которую из OpenMutexA будет прыжок. В выделенной памяти код создает мутекс. Короче, при минимальном внешнем вмешательстве прога сама себя обманывает.

    У меня заработало. Отнес этот патч, а также сдумпленную программу все тому же товарищу. Патч не работает. Выскакивает ошибка инициализации приложения (0x000000005), кажется так. А дамп заработал.

    Заказ выполнен. “спасибо” получено.

    P.S. Взял у него еще одну игру – Inca Ball (Храм инков) – очередной клон Zuma. Поставил, скинул в папку свой патч – работает.

    kero
    Интригующей концовки не получилось.
     
  9. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    HuXTUS
    У меня на домашнем компе XP Home Edition -- на работе XP SP2, то что дома работает нормально на работе выкидывают "ошибка инициализации приложения (0x000000005)". Программы сделанные под XP SP2 - стабильно работают дома
     
  10. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    HuXTUS
    Вызовы DllMain в лоадере завёрнуты в __try.

    Возможно, дело в синхронизации потоков? Т.е. ты слишком быстро прибиваешь следящий поток и прога не успевает узнать результат мьютекс-теста.
     
  11. HuXTUS

    HuXTUS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2007
    Сообщения:
    240
    green
    спасибо.

    я же не во всех случаях его прибивал. это раз.
    Самой проге не нужны мутексы. Плохой поток порождается враппером. Этот тред только и делает, что генерирует в зависимости от времени(я так понял) имя мутекса и пытается его открыть. Если прога зарегистрированная либо еще осталось триальное время оболочка параллельно во времени создает нужный мутекс. Стоит только мутексу с правильным именем не появиться...GameOverA

    +
    Mikl__
    У него действительно Home. Попробовал в институте, там у нас professional - заработало на всех трех экземплярах. А я то навыдумывал)))
     
  12. V0ldemAr

    V0ldemAr New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2005
    Сообщения:
    31
    Адрес:
    Ukraine
    имхо маразм, пропатч импорт той ехе на OpenMutexA и дело с концом.
     
  13. support_star

    support_star New Member

    Публикаций:
    0
    Регистрация:
    24 дек 2007
    Сообщения:
    1
    HuXTUS

    Сизифоф, или как там его, труд ты проделал. Для ITT wrapper существует ужу 4 лекарства, и уже достаточно давно существует. Самое практичное на моу взгляд, это патчер от Vovan. Патчишь showcase.exe и регаешь любым кодом.
     
  14. HuXTUS

    HuXTUS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2007
    Сообщения:
    240
    ALL
    сорри за этот флудерский пост.

    support_star
    Да, ты абсолютно прав. зачем что-то делать самому, бороться, искать, исследовать, когда есть патчер от Vovan?

    фи, сколько лишних телодвижений: пропатчить, потом еще любой код вводить...
    У меня попроще: достаточно запустить лоадер.

    Кстати, если программу распаковать, а это просто делается, то теоретически она будет работать быстрее, так как в ней не будет защитного потока. Да и стабильнее - мало ли что может случиться.
     
  15. urri

    urri New Member

    Публикаций:
    0
    Регистрация:
    3 янв 2008
    Сообщения:
    4
    всем привет.
    мож кто из вас поможет решить такую задачу, пусть она и не профильная для форума, но хоть под этот топик подпадает :).
    Вобщем ближе к телу...
    Имею на компе несколько игр казуальных, включая ту самую cradle of rome. С некоторого момента эта игруха перестала загружаться, супруга заподозрила в умышленном саботаже :), хотя я, как говорится, ни сном ни духом. При тапаньи мышой на ярлык выпадает окошко IE _без ничего_, т.е. пустое, см. скрин [​IMG]
    вобщем хз как это лечится. Игруха удалялась, реестр очищался - не помогло.
    а сегодня скачал ей (супруге) еще одну казуальную игруху, так она стартует таким окном [​IMG] в триальном режиме работает, а если нажать на приглашение ввести ключик, то выпадает опять окошко _без ничего_ :)
    и что мне делать? кто сможет помочь?
     
  16. V0ldemAr

    V0ldemAr New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2005
    Сообщения:
    31
    Адрес:
    Ukraine
    учимся пользоватся windows, чтобы сделать скрин текущего окна используем Alt+Print Screen ;)
     
  17. urri

    urri New Member

    Публикаций:
    0
    Регистрация:
    3 янв 2008
    Сообщения:
    4
    это было сделано сознательно.
    чтобы показать окно в трее и окружение (винХР, что работает в фоне...)
    типа дополнительная информация.
    Жаль что тебе нечего сказать по теме вопроса :)
     
  18. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    urri
    Чего мудрить то?
    Найди нормальный кряк и не мучайся.
     
  19. urri

    urri New Member

    Публикаций:
    0
    Регистрация:
    3 янв 2008
    Сообщения:
    4
    причем здесь кряк, если игра просто отказывается стартовать, равно как и любая другая игра от издательства невософт (или как их там зовут)
     
  20. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    Возможно "чистка" реестра не понравилась защите