· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› sections encrypting

Посл.отвђт Сообщенiе


Дата: Дек 20, 2003 18:00:42

dobriy den' dorogie experti :)
ya vot rabotayu nad moin crypter-om, i u menya takoy vorpos...
ya uje znayu chto nel'zya kodirovat' resource sekciyu, toka mojno kak-to isportit', a mojno li kodirovat' vse ostal'nie sekcii ?
kodirovka samaya prostaya, tipa XOR-a...
ili esli net, kak uznat' kakie regioni ili sekcii mojno kodirovat'...
mojet toka CodeBase + CodeSize ?

spasibo :)


Дата: Дек 21, 2003 00:33:10

Читай мои статьи.
А вообще, можно частично трогать ресурсы и лучше не трогать те секции, которые требуют инициализации лоадером, например, TLS.


Дата: Дек 22, 2003 13:27:05

Ресурсы можно заново скомпилировать. Я использую обычно для таких махинаций resource Workshop от
Бормана. Он даже показывает иконки, которые не находятся в секции .rsrc С помощью него сохраняем всю секцию на диск в виде *.res файла, а потом удалив секцию создаем ее
заново с нулевым размером .Добавляем секцию.


Дата: Дек 23, 2003 08:37:19

кодировать можно все, кроме:
- системных ресурсов типа "MANIFEST", "REGISTRY" и чего-то еще....
- кодируй TLS как хочешь, только не забудь потом самостоятельно проинициализировать его...
- не трогать экспорт! кусается!
- можно вообще убить импорт, но не все винды это одобрят - подсунь лучше хоть какой-нибудь пустой импорт
- перемещаемые элементы - будь внимателен! если убиваешь, то учти, что программа может и не загрузиться, если адресное пространство будет занято


Дата: Дек 23, 2003 15:56:17

А кто и когда инициализирует TLS?
Это делает сама система внутри CreateThread, или компилер вставляет некий стаб в IAT?


Дата: Дек 24, 2003 08:02:35

TLS инициализируется kernel32.dll (так было в w9x/me)
а вообще, TLS - это то место в теле програмы, где происходит обмен между нитями приложения
инициализируется так:
1. TlsCreate (кажись так функцию зовут - точно не помню) - получаем номер участка памяти TLS
2. этот номер загоняем в приложение (обозначено в TLS Directory) и все!
этот прием используется в моей защите ORiEN ((тут она)) - никогда еще не подводил!


Дата: Дек 24, 2003 15:20:45

zalexf
Про твою защиту я знаю... :)
Я вот чего не пойму - TLS должна инициализироваться системой при создании новой нитки, т.е. CreateThread.
Возникает вопрос, откуда система узнает, что у процесса, вызвавшего CreateThread, есть TLS-секция?
Напрашиваются два ответа:
1. Из образа PE на диске.
2. Из TLS директории образа в памяти.
А может все это вообще по другому происходит?


Дата: Дек 24, 2003 18:41:14

Интерестно, кто-нибудь из вас читал Питрека?
TLS инициализируется ntdll.dll. Для чего я линки в статье давал, а?


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.062