-
-
> "Как?": - ну это вам решать, способов масса.
Знаков препинания многовато )
-
<tfuncdata></tfuncdata></tsectiondata> Это какой-то артефакт?
-
За грмматику согласен, и второй косяк подчищу. По самому материалу, не слишком ли переборщил? Имх стоит его подразбавить немного обьяснениями технических деталей, бо кажется слишком суховато вышло - тупо обьяснение методы и все. Народ может не понять, как мне кажется
-
> Итак TLS Callback и что это за зверь. Спасибо!, не знал о таком.
> Их можно задавать в динамике перед резюмом нити через модификацию резюмом? (вкусный намек на изюминку статьи ) )
Соответственно подумалось что они (TLS Callback) отработают уже только в завершении потока.
Поэтому и вопросы: 1. Когда еще (кроме начального старта, как в статьи) отработает TLS Callback в exe: - создание/завершение потока? - загрузка/выгрузка длл? 2. И для длл-ки?
> подразбавить немного обьяснениями технических деталей, да, но не из-за того, что суховато, а потому что интересно ;)
ЗЫ. И что там с подлым хромом - люблю жанр "технический детектив".
-
Ага понял, хорошая идейка для развития темы статьи. Добавлю что да как
-
// дабы процедура tls_callback появилась в MAP файле // нужно ее вызвать, но вызывать ее мы будем с некоректными параметрами // дабы она лишний раз почем зря не отработала tls_callback(nil, 100, nil); // const ptls_callback : Pointer = @tls_callback; ?
//... F.Position := TlsTable; F.ReadBuffer(OldCallbackTableAddr, 4); Inc(OldCallbackTableAddr, 8); F.Position := TlsTable; F.WriteBuffer(OldCallbackTableAddr, 4); // CallbackTableAddr 'передвинули' на два Pointer-а, \ Writeln('Назначен новый адрес цепочки обработчиков, оффсет: ', IntToHex(TlsTable, 8), ', новое значение: ', IntToHex(OldCallbackTableAddr, 8)); F.Position := TlsTable + HardcodeTLS32Offset; // \а заносим CallbackAddr куда? F.WriteBuffer(CallbackAddr, 4); // \или мы знаем, что OldCallbackTableAddr указывал на (TlsTable + HardcodeTLS32Offset - 8) ? Writeln('Адрес каллбэка выставлен, оффсет: ', IntToHex(TlsTable + HardcodeTLS32Offset, 8)); OldCallbackTableAddr := 0; TlsTable := F.Position; for I := 0 to 15 do // а почему именно 16, вроде хватило бы и одного ? F.WriteBuffer(OldCallbackTableAddr, 4); Writeln('Цепочка калбэков очищена, оффсет: ', IntToHex(TlsTable, 8), ', размер: ', 16 * 4);
//... Writeln('Правлю время создания МАР файла'); // как бы понятно, но зачем?
-
> 3 каллбэка, которые выполняются до загрузки ее в АП процесса.
То есть на эти каллбэки накладываются ограничения более строгие чем на DllEntry? А когда в еxe, то тоже так?
-
Ну это ошметки от тестового кода, где я эксперентировал. Там есть небольшой нюансик если собирать под ХЕ10
В финалке все причешу и код будет ровный, постараюсь сразу и под 64 бита реализовать (изменения в принципе минорные)
-
Есть небольшие ограничения, но только в специфичных случаях, а так по факту считай что это такой-же dllmain, причем не важно где он расположен что в библиотеке что в приложении (логика работы одинаковая)
-
Опс, я там написал "до загрузки"?!!! Это, конечно ошибка. До передачи на ЕР процесса и ЕР библиотеки - подправлю
-
> По самому материалу, не слишком ли переборщил? > Имх стоит его подразбавить немного обьяснениями технических > деталей, бо кажется слишком суховато вышло - тупо обьяснение > методы и все. Народ может не понять, как мне кажется
Кто не поймет, тому и не надо оно.. В попытках объяснить технические детали можно "Windows Internals" переписать в десяти томах )
-
Ну я как раз и пытаюсь простыми словами о сложном, иначе зачем писать?
-
Тогда надо начинать с "На кого рассчитана статья".
-
На работающих с защитой, есесно. Я только про нее и пишу :)
-
Полную вычитку делать долго. Пробежал глазами минут за 10, не вникая в детали, - хоршо, в твоём стиле, всё так нормально, это не вникая в уже в технические детали.
Одну деталь только убери "Ну, во первых: он работает как диод - бесшумно." Диоды работают шумно, как и все приборы.
-
Ну да. Аналогия с диодом совсем не в дугу. Лучше - "Ну во-первых, он работает бесшумно как квалифицированный агент спецслужб." Это ближе по аналогии. Да и к сути статьи это ближе. Кто из работающих с защитой ПО знает о диодах вообще и о том что они из себя представляют в частности?
-
Опять забыл поставить смайлик. :(
-
> [16] Германн © (27.02.16 01:22) > Лучше - "Ну во-первых, он работает бесшумно как квалифицированный агент спецслужб." Это ближе по аналогии.
Агенты тоже бывают шумными, а иные проводят в обе стороны. Не годится. Может обойтись без аналогий, а прямо так текстом рубануть правду, чуть подсластив? Уж не знаю как, но придерживаясь стилистики... Нет, авторская должна быть.
-
> Имх стоит его подразбавить немного обьяснениями технических > деталей, бо кажется слишком суховато вышло - тупо обьяснение > методы и все. Народ может не понять, как мне кажется
и действительно. стоит немного добавить, что такое tls callback и для чего они нужны.
|