|
|
| Посл.отвђт | Сообщен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 |