Язык протектора GPcH (www.dotfix.net) Хакер, номер #087, стр. 087-142-6 ;создаем секцию с именем 'cool' и длиной 'len' ;функция занесет реальный и виртуальный адреса ;в переменные 'raw' и 'va'. createsection cool,@len@,raw,va ;вставляем код в EXE-файл по адресу, ;который содержится в переменной 'raw' putcode @raw@, 60@decoder@6168@va_oep@E800000000C3C3 ;изменим oep на адрес начала нашего кода ;в созданной секции setoep @va@ ;разблокируем возможность записи в секции setflag C0000020 ;выведем на экран сообщение messagebox New oep: @va@,64 Как видишь, то, что пишут Си-кодеры целый день и отлаживают неделю, мы в состоянии наколбасить за полчаса, включая время отладки. Ладно, это мы отвлеклись. Как же работает скрипт? Все просто! Определяем точку входа и ксорим первые 10 байт, затем копируем дескриптор в переменную decoder. Создаем новую секцию и добавляем туда декодер и переход на OEP. Если тебя смутила запись "60@decoder@6168@va_oep@E800000000C3C3", то объясняю: 60 - опкод команды ассемблера pushad 61 - опкод команды ассемблера popad 68@va_oep@ - push @va_oep@ E800000000 - push 0 C3 – ret Этот извратный jmp используется в некоторых протекторах для того, чтобы скрыть переход. Вот, в общем, и все, что я хотел тебе рассказать. Немного практики и, вероятно, ты будешь оптимизировать с помощью данного скриптового языка многие свои (и не свои) задачи по обработке PE-файлов. [использование скриптов] Ну вот, написал ты скрипты, поставил последнюю команду и первая твоя мысль: а куда это все класть? И правда. О самом главном я так и не сказал. Все скрипты необходимо сохранять в таком формате: "<имя скрипта>.fix". Теперь полученный нами скрипт копируем в папку Scripts. Она находится в той папке, в которую ты установил DotFix FakeSigner (если еще не установил - вставляй ту круглую хренотень, что валялась в пакете вместе с журналом, в корпус или открывай http://fakesigner.dotfix.net). Теперь самое время запустить DotFix и выбрать любой EXE-файл, затем в списке скриптов выбрать нужный и нажать кнопку Patch. Скрипт начнет выполняться. Рекомендую во всех скриптах вначале писать запрос у пользователя, а то вдруг он не по ошибке запустил скрипт. Это, так сказать, правило хорошего тона. Также рекомендуется в скриптах предусматривать бэкап исходного файла и возможность его восстановления в случае ошибки скрипта (для этого подойдут команды copyfile и delfile). Советую предусмотреть консольный интерфейс и возможность сохранения предпочтений юзера в реестр. Соблюдая эти советы, можно написать действительно невероятно удобный скрипт. [хочу компилятор] Разобравшись со скриптовым языком, ты наверняка напишешь что-нибудь мощное, новое, продвинутое. И у тебя возникнет вопрос: а нельзя ли этот скрипт превратить в нормальный PE-экзешник, независимый от FakeSinger’а? Обрадую тебя, над этим вопросом автор уже работает, и, думаю, в одной из ближайших версий DotFix FakeSigner'а появится компилятор скриптов в EXE-файле. Так что можешь уже начинать писать свой суперскрипт! А если не хватает команд - пиши мне, буду расширять язык нужными операторами и командами. |