Сейчас на форуме: asfa, Rio, _MBK_, Adler (+8 невидимых)

 eXeL@B —› Вопросы новичков —› Укажите путь в борьбе с HASP HL Envelope
Посл.ответ Сообщение

Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 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% от объема кода)?
Спасибо!




Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 07 июня 2013 01:45
· Личное сообщение · #2

Mishka1234 пишет:
Если в этом цикле пытаться заставить конверт сделать правильный импорт на ту функцию, которую он должен на себя ставить - он убивается с MessageBox что-то типа Envelope error ...


Точно не помню, но воде после того как импорт построился, ты должен вернуть код в девственное состояние.
И тебе повезло - у тебя старая версия конверта

-----
Research For Food




Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 07 июня 2013 02:02
· Личное сообщение · #3

daFix пишет:
Точно не помню, но воде после того как импорт построился, ты должен вернуть код в девственное состояние.

Либо скопировать исправленный импорт и на OEP вставить его.

была давно тема, там кто-то скрипт выкладывал для нахождения оеп и правки импорта.




Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 07 июня 2013 02:27
· Личное сообщение · #4

Vovan666 пишет:
была давно тема, там кто-то скрипт выкладывал для нахождения оеп и правки импорта.


Их конверт часто меняется, поэтому вероятность того что он подойдёт очень мала

Vovan666 пишет:
Либо скопировать исправленный импорт и на OEP вставить его.

+1

-----
Research For Food




Ранг: 10.6 (новичок)
Активность: 0.010
Статус: Участник

Создано: 07 июня 2013 08:16
· Личное сообщение · #5

daFix, мне нужно с Вами переговорить через личку, а не могу, т.к. У Вас исчерпан лимит входящих сообщений.




Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 07 июня 2013 08:51
· Личное сообщение · #6

daFix пишет:
Их конверт часто меняется

сумлеваюсь

-----
От многой мудрости много скорби, и умножающий знание умножает печаль




Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 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
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати