![]() |
eXeL@B —› Вопросы новичков —› Укажите путь в борьбе с HASP HL Envelope |
Посл.ответ | Сообщение |
|
Создано: 06 июня 2013 23:00 · Личное сообщение · #1 Доброго дня всем! Я - упорный чайник. Бился 2 ночи с HASP HL Envelope, думаю, что есть способ проще, до которого я не догадался. Что сейчас имею: exe-шник запускается / отлаживается Олькой, знаю OEP, IAT. Под Олькой даже работает пока HASP воткнут. Нашел условный переход в страшном цикле, в котором конверт восстанавливает таблицу импорта и на каждой итерации цикла в зависимости от значения бита в определенной области памяти решает, ставить адрес функции конверта или настоящей (в kernel32.dll и т.п.). Могу заставить этот цикл сделать все адреса в область конверта (типа чтобы всё эмулировал, правда так программа падает где-то в защите). Если в этом цикле пытаться заставить конверт сделать правильный импорт на ту функцию, которую он должен на себя ставить - он убивается с MessageBox что-то типа Envelope error ... Если одну из функций IAT подменить чтобы конверт её сам отрезолвил в WinAPI (за счет того, что есть одинаковые импортируемые функции типа LocalAlloc) то под конец цикла восстановления IAT конверт тоже ругается. Выяснил, что конверт неохотно пользуется GetProcAddress, а охотно сам роется по таблице экспорта kernel32.dll и т.п. Нашел и место, откуда конверт побайтно читает "скремблированные" (сложение по модулю 2 с 8-битным словом которое я не стал разбираться как получается) названия импортируемых функций, перед передачей их в GetProcAddress. Пока любое мое вмешательство в последовательность действий при забивании конвертом IAT приводит к срабатыванию защиты. Подскажите, куда дальше копать? Может я делаю всё через жопу? Есть ли вообще возможность именно на этапе создания IAT поправить весь импорт сразу или копать по тому адресу, что конверт в IAT забивает (они разные, но всё время ведут в одну функцию)? Может хоть есть способ избавиться от бесполезных инструкций типа push edi; pop edi; xchg al, cl; xchg cl, al; мешаются, боюсь что-то важное пропустить (хотя важного там 5% от объема кода)? Спасибо! ![]() |
|
Создано: 07 июня 2013 01:45 · Личное сообщение · #2 Mishka1234 пишет: Если в этом цикле пытаться заставить конверт сделать правильный импорт на ту функцию, которую он должен на себя ставить - он убивается с MessageBox что-то типа Envelope error ... Точно не помню, но воде после того как импорт построился, ты должен вернуть код в девственное состояние. И тебе повезло - у тебя старая версия конверта ----- Research For Food ![]() |
|
Создано: 07 июня 2013 02:02 · Личное сообщение · #3 |
|
Создано: 07 июня 2013 02:27 · Личное сообщение · #4 |
|
Создано: 07 июня 2013 08:16 · Личное сообщение · #5 |
|
Создано: 07 июня 2013 08:51 · Личное сообщение · #6 |
|
Создано: 07 июня 2013 09:49 · Личное сообщение · #7 Скрипт с форума не заработал, это было первое что я попробовал. daFix пишет: Точно не помню, но воде после того как импорт построился, ты должен вернуть код в девственное состояние. Экспериментировал с модификацией регистров, код не трогал. При модификации кода или регистров в том цикле конверт не дойдя до вставки правильного адреса в IAT завершает работу приложения... Как мне показалось (точнее я это даже проверил), после расшифровке в IAT содержится такое: FFFFFFFF <- вот это будет заменено на код конверта (0) 004XX1X <- вот это указатель на функцию в kernel32.dll (1) ... 004XX2X <- вот это указатель на функцию в kernel32.dll (2) FFFFFFFF ... Если перед началом цикла конверта поменять (1) и (2) местами то и функции будут поменяны местами (правда конверт потом всё-равно убъет программу). В принципе можно порыть запутанный код по вычислению адреса (1), но что-то мне подсказывает, что имя функции, куда должен указывать адрес (0) где-то среди зашифрованных данных. Правильное направление? Насчет того, что envelope старое я не уверен (ибо других не видел), софт 2013 года, хотя точно знаю, что с версий 2010-2011 годов снимали. С другой стороны, инсталлятор ставит runtime aladdin, что намекает на более-менее старый софт. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Укажите путь в борьбе с HASP HL Envelope |