Здравствуйте! Заранее прошу меня простить за большое количество текста. История такая: дал мне друг игрушку “Колыбель римской империи” (cradle of Rome), чтобы я ее отучил деньги просить. Запускаю у себя дома. Появляется окошко враппера, внизу написано Powered by ITT wrapper. Начинаю ковырять. Первое впечатление: тьфу, какая ерунда! Прога просто выполняет CreateProcess к файлу gamedat.bin, который лежит в этой же папке. Переименовав файл в .exe его можно спокойно запустить. Чтобы не все было так просто, обе проги постоянно обмениваются сигналами в виде поименованных мутексов и, если игрушка не находит в определенный момент времени нужный мутекс, она закрывается. Что сделал я: написал простой лоадер, который запускает наш gamedat.bin и с помощью WriteProcessMemory на начало функции OpenMutexA пишет call ExitThread. Самой проге мутексы не нужны, их использует только следящий поток, который после этого завершается и не мешает жить. Так вот У меня все заработало. Притаскиваю лоадер другу, у него не пашет. Просто ничего не происходит. Уходя, забрал у него еще одну игрушку, защищенную тем же враппером. Применяю раз двадцать тот же(!) лоадер к проге. Не запускается. Начинаю мучить отладчиком,…вдруг заработало! И прекрасно работает сейчас. Я ничего не менял в своем exe-шнике. У меня такое подозрение, будто Прога палит комп “хакера” и просто сдается ему, чтобы отвалил, а на компе юзера просто не заработает. Кто-нибуть сталкивался и может прояснить положение? Спасибо.
Написал очередную версию кряка. На этот раз лоадер выступает в качестве “умного” отладчика. Запускает жертву DEBUG_ONLY_THIS_PROCESS. Ставит бряк на начало OpenMutexA. Игнорирует все другие отладочные события, дожидаясь нашего бряка. Прибивает плохой процесс. Выполняет DebugActiveProcessStop. P.S. Жаль, что никто не отвечает. Тема больше походит на мой блог. ))
Балин))) Только что от друга. Не работает у него. да что такое.... Самое интересное - проделываю все нужные действия под Olly у него на компе, т.е.: -бряк на OpenMutexA -Вписать туда ExitThread Запускается и работает. А мой лоадер, который выполняет всё один-в-один - нет. Смотрел под отладчиком свое творение: все шаги нормально отрабатывают без ошибок. Вот еще что выяснил: сам файл gamedat.bin защищен(это громко сказано) фирменным протектором. Вторую игру(называется она Beez) я смог распаковать - не сложнее UPX и дамп заработал сам по себе. А вот первую игру распаковал, но она выдает ошибку - может знаете, иногда такие сообщения выдают проги скомпилированные Microsoft Visual Studio. Ругается на плавающую запятую. Я уверен, что все должно быть просто. Если защита действительно пытается определить факт нападения, после чего притворяется блондинкой, то надо мне найти способ как заставить ее во всех случаях думать, что ее хотят. Но вот как она это определяет... Попробую еще один путь(пока не реализовал): апгрейдить свой "думающий" отладчик так, чтобы он притворялся wrapper'ом, то есть начинал обмениваться с прогой нужными мутексами. Для этого плохой поток в проге убивать не надо. Просто надо реагировать на отладочное событие, считывать контекст потока, брать имя нужного мутекса через стек и создавать такой мутекс)))) Сама регистрация в программе предполагает отправку смс с простым кодом. Высылаемый пароль состоит только из цифр и имеет короткую длину. Это намекает на то, что все должно быть просто. Но кейген мне уже не интересен)))
Похоже, эта тема больше походит на записки сумасшедшего, но: Попробовал сейчас запустить ради прикола свой лоадер (обе версии) у себя дома. Не работают. Что с первой, что со второй игрой. Дамп второй игры пашет. Решил распаковать первую игру. Тупо ставлю hardware breakpoint на esp-4. Два раза F9. Прога останавливается на jmp <адрес>. Инструкция, на которую она прыгает – pushad. Я подумал, что тут “упаковщик в упаковщике”. Но ради прикола сдумпил прогу. Запускаю ImpRec. Передаю ему тот адрес, на котором стою (за вычетом ImageBase, ессно). Он грит, не могу найти там ничего хорошего. Ладно, думаю, хватит с меня. Запускаю дамп,…работает! А ведь я даже импорт не восстановил. Не сочтите за психа, но только что решил проверить, и у меня снова работают оба лодера на обеих играх. Wrapper надо мной издевается, похоже. Новый тип защиты: свести крекера с ума. P.S. Я бы другу отнес работающий дамп прямо сейчас, но он уже убежал на работу.
Не хотелось бы сглазить, но репортаж читается с не меньшим интересом, чем "История одного байта". Надеюсь, концовка не подкачает.
Последняя сцена. Сделал то, что собирался – лоадер ставит бряк на OpenMutexA, когда он срабатывает, берет контекст потока (а их в той проге несколько), в котором произошло исключение, находит строку, содержащую имя мутекса, создает его, после чего отпускает прогу на волю, которая ни о чем не подозревая получает в результате вызова свой handle. Запустил. Заметно тормозит. Может быть я что-то не так сделал, но мой отладчик просто захлебнулся всякими ошибками. Решил пойти по другому пути – инжект. Сделал кряк, который запускает прогу и вызывает CreateRemoteThread (все, как у Рихтера). А моя DLL должна была уже из тыла врага перехватывать открытие мутекса и создавать его наперед. Что-то у меня не получилось . DLL_PROCESS_ATTACH срабатывает, начинает выполняться, но до конца не доходит. Просто мистика. Даже если влепить в самое начало xor eax,eax / mov eax, [eax] ошибка не происходит. Впрочем, я не особо в этом понимаю, поэтому мог и ошибиться. Немного изменил кряк. Теперь он просто выделяет в проге VirtualAllocEx память, на которую из OpenMutexA будет прыжок. В выделенной памяти код создает мутекс. Короче, при минимальном внешнем вмешательстве прога сама себя обманывает. У меня заработало. Отнес этот патч, а также сдумпленную программу все тому же товарищу. Патч не работает. Выскакивает ошибка инициализации приложения (0x000000005), кажется так. А дамп заработал. Заказ выполнен. “спасибо” получено. P.S. Взял у него еще одну игру – Inca Ball (Храм инков) – очередной клон Zuma. Поставил, скинул в папку свой патч – работает. kero Интригующей концовки не получилось.
HuXTUS У меня на домашнем компе XP Home Edition -- на работе XP SP2, то что дома работает нормально на работе выкидывают "ошибка инициализации приложения (0x000000005)". Программы сделанные под XP SP2 - стабильно работают дома
HuXTUS Вызовы DllMain в лоадере завёрнуты в __try. Возможно, дело в синхронизации потоков? Т.е. ты слишком быстро прибиваешь следящий поток и прога не успевает узнать результат мьютекс-теста.
green спасибо. я же не во всех случаях его прибивал. это раз. Самой проге не нужны мутексы. Плохой поток порождается враппером. Этот тред только и делает, что генерирует в зависимости от времени(я так понял) имя мутекса и пытается его открыть. Если прога зарегистрированная либо еще осталось триальное время оболочка параллельно во времени создает нужный мутекс. Стоит только мутексу с правильным именем не появиться...GameOverA + Mikl__ У него действительно Home. Попробовал в институте, там у нас professional - заработало на всех трех экземплярах. А я то навыдумывал)))
HuXTUS Сизифоф, или как там его, труд ты проделал. Для ITT wrapper существует ужу 4 лекарства, и уже достаточно давно существует. Самое практичное на моу взгляд, это патчер от Vovan. Патчишь showcase.exe и регаешь любым кодом.
ALL сорри за этот флудерский пост. support_star Да, ты абсолютно прав. зачем что-то делать самому, бороться, искать, исследовать, когда есть патчер от Vovan? фи, сколько лишних телодвижений: пропатчить, потом еще любой код вводить... У меня попроще: достаточно запустить лоадер. Кстати, если программу распаковать, а это просто делается, то теоретически она будет работать быстрее, так как в ней не будет защитного потока. Да и стабильнее - мало ли что может случиться.
всем привет. мож кто из вас поможет решить такую задачу, пусть она и не профильная для форума, но хоть под этот топик подпадает . Вобщем ближе к телу... Имею на компе несколько игр казуальных, включая ту самую cradle of rome. С некоторого момента эта игруха перестала загружаться, супруга заподозрила в умышленном саботаже , хотя я, как говорится, ни сном ни духом. При тапаньи мышой на ярлык выпадает окошко IE _без ничего_, т.е. пустое, см. скрин вобщем хз как это лечится. Игруха удалялась, реестр очищался - не помогло. а сегодня скачал ей (супруге) еще одну казуальную игруху, так она стартует таким окном в триальном режиме работает, а если нажать на приглашение ввести ключик, то выпадает опять окошко _без ничего_ и что мне делать? кто сможет помочь?
это было сделано сознательно. чтобы показать окно в трее и окружение (винХР, что работает в фоне...) типа дополнительная информация. Жаль что тебе нечего сказать по теме вопроса
причем здесь кряк, если игра просто отказывается стартовать, равно как и любая другая игра от издательства невософт (или как их там зовут)