Форум: "Прочее";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];
ВнизНужна вычитка статьи Найти похожие ветки
← →
Rouse_ © (2016-02-26 16:45) [0]http://rouse-debug.blogspot.ru/2016/02/delphi-tls-callback.html
Писал буквально пару дней - поэтому сам сильно не вчитывался.
Помимо вычитки проверьте плз сам материал, боюсь что торопился и мог много нюансов просто проглотить.
← →
Омлет © (2016-02-26 21:01) [1]> "Как?": - ну это вам решать, способов масса.
Знаков препинания многовато )
← →
Омлет © (2016-02-26 21:05) [2]
<tfuncdata></tfuncdata></tsectiondata>
Это какой-то артефакт?
← →
Rouse_ © (2016-02-26 21:42) [3]За грмматику согласен, и второй косяк подчищу.
По самому материалу, не слишком ли переборщил?
Имх стоит его подразбавить немного обьяснениями технических деталей, бо кажется слишком суховато вышло - тупо обьяснение методы и все. Народ может не понять, как мне кажется
← →
NoUser © (2016-02-26 22:04) [4]> Итак TLS Callback и что это за зверь.
Спасибо!, не знал о таком.
> Их можно задавать в динамике перед резюмом нити через модификацию
резюмом? (вкусный намек на изюминку статьи ) )
Соответственно подумалось что они (TLS Callback) отработают уже только в завершении потока.
Поэтому и вопросы:
1. Когда еще (кроме начального старта, как в статьи) отработает TLS Callback в exe:
- создание/завершение потока?
- загрузка/выгрузка длл?
2. И для длл-ки?
> подразбавить немного обьяснениями технических деталей,
да, но не из-за того, что суховато, а потому что интересно ;)
ЗЫ.
И что там с подлым хромом - люблю жанр "технический детектив".
← →
Rouse_ © (2016-02-26 22:20) [5]Ага понял, хорошая идейка для развития темы статьи. Добавлю что да как
← →
Nouser © (2016-02-26 23:23) [6]
// дабы процедура 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("Правлю время создания МАР файла"); // как бы понятно, но зачем?
← →
Nouser © (2016-02-26 23:37) [7]> 3 каллбэка, которые выполняются до загрузки ее в АП процесса.
То есть на эти каллбэки накладываются ограничения более строгие чем на DllEntry?
А когда в еxe, то тоже так?
← →
Rouse_ © (2016-02-26 23:38) [8]Ну это ошметки от тестового кода, где я эксперентировал. Там есть небольшой нюансик если собирать под ХЕ10
В финалке все причешу и код будет ровный, постараюсь сразу и под 64 бита реализовать (изменения в принципе минорные)
← →
Rouse_ © (2016-02-26 23:43) [9]Есть небольшие ограничения, но только в специфичных случаях, а так по факту считай что это такой-же dllmain, причем не важно где он расположен что в библиотеке что в приложении (логика работы одинаковая)
← →
Rouse_ © (2016-02-26 23:46) [10]Опс, я там написал "до загрузки"?!!!
Это, конечно ошибка. До передачи на ЕР процесса и ЕР библиотеки - подправлю
← →
Омлет © (2016-02-26 23:46) [11]> По самому материалу, не слишком ли переборщил?
> Имх стоит его подразбавить немного обьяснениями технических
> деталей, бо кажется слишком суховато вышло - тупо обьяснение
> методы и все. Народ может не понять, как мне кажется
Кто не поймет, тому и не надо оно..
В попытках объяснить технические детали можно "Windows Internals" переписать в десяти томах )
← →
Rouse_ © (2016-02-26 23:49) [12]Ну я как раз и пытаюсь простыми словами о сложном, иначе зачем писать?
← →
Омлет © (2016-02-26 23:55) [13]Тогда надо начинать с "На кого рассчитана статья".
← →
Rouse_ © (2016-02-27 00:41) [14]На работающих с защитой, есесно. Я только про нее и пишу :)
← →
Inovet © (2016-02-27 01:07) [15]Полную вычитку делать долго. Пробежал глазами минут за 10, не вникая в детали, - хоршо, в твоём стиле, всё так нормально, это не вникая в уже в технические детали.
Одну деталь только убери
"Ну, во первых: он работает как диод - бесшумно."
Диоды работают шумно, как и все приборы.
← →
Германн © (2016-02-27 01:22) [16]Ну да. Аналогия с диодом совсем не в дугу.
Лучше - "Ну во-первых, он работает бесшумно как квалифицированный агент спецслужб." Это ближе по аналогии.
Да и к сути статьи это ближе. Кто из работающих с защитой ПО знает о диодах вообще и о том что они из себя представляют в частности?
← →
Германн © (2016-02-27 01:23) [17]Опять забыл поставить смайлик. :(
← →
Inovet © (2016-02-27 03:22) [18]> [16] Германн © (27.02.16 01:22)
> Лучше - "Ну во-первых, он работает бесшумно как квалифицированный агент спецслужб." Это ближе по аналогии.
Агенты тоже бывают шумными, а иные проводят в обе стороны. Не годится. Может обойтись без аналогий, а прямо так текстом рубануть правду, чуть подсластив? Уж не знаю как, но придерживаясь стилистики... Нет, авторская должна быть.
← →
Dimka Maslov © (2016-02-27 08:06) [19]
> Имх стоит его подразбавить немного обьяснениями технических
> деталей, бо кажется слишком суховато вышло - тупо обьяснение
> методы и все. Народ может не понять, как мне кажется
и действительно. стоит немного добавить, что такое tls callback и для чего они нужны.
← →
DayGaykin © (2016-02-27 09:56) [20]Если есть возможность выполнить что-то перед запуском потока, зачем тогда эти заморочки с BeginThread?
← →
NoUser © (2016-02-27 15:55) [21]Ты о делфийской обертке или о чем?
← →
Rouse_ © (2016-02-27 16:05) [22]BeginThread это сугубо VCL.
← →
Rouse_ © (2016-02-27 17:58) [23]
> Nouser © (26.02.16 23:23) [6]const
ptls_callback: Pointer = @tls_callback;
Действительно - век живи, век учись, все равно дураком помрешь :)
Чет как-то не знал про такой нюанс :)
← →
Rouse_ © (2016-02-27 19:52) [24]Подготовил примерчик по антидампу с использованием TLS - щас добавлю через часок, а по антиотладке думаю будет избыточно - все и так у меня в статьях есть.
К сожалению момент с динамическим добавлением TLS Callback придется выпилить - посеял я примерчик, там простое что-то было (банально TlsSetValue + немного хитростей с инициализацией структуры), но... почти полдня искал - не найшел :(
← →
Rouse_ © (2016-02-27 20:10) [25]Исходники: http://rouse.drkb.ru/blog/early_execution.zip
В папке bin лежит экзешник, демонстрирующий методу антидампа, поэтому хром может сругнуться - мол экзехи в архиве
← →
Rouse_ © (2016-02-27 22:03) [26]Все, финалка готова: http://rouse-debug.blogspot.ru/2016/02/delphi-tls-callback.html
Вроде все моменты учел.
← →
Игорь Шевченко © (2016-02-27 22:09) [27]https://ru.wikipedia.org/wiki/Callback_(%D1%82%D0%B5%D0%BB%D0%B5%D1%84%D0%BE%D0%BD%D0%B8%D1%8F)
калл настолько глаз режет, что нечитабельно ни разу.
← →
Rouse_ © (2016-02-27 22:15) [28]Эмм, так вроде везде правильно написал "callback" или "калбэк" - гдето очепятался чтоль?
← →
Игорь Шевченко © (2016-02-27 22:21) [29]Rouse_ © (27.02.16 22:15) [28]
По ссылке пишут "коллбэк".
← →
Rouse_ © (2016-02-27 22:28) [30]Принято - поправил
← →
Rouse_ © (2016-02-27 22:29) [31]Блин, еще и текст исходников же еще править - ладно, это завтра :)
← →
Германн © (2016-02-28 00:38) [32]
> Игорь Шевченко © (27.02.16 22:09) [27]
>
> https://ru.wikipedia.org/wiki/Callback_(%D1%82%D0%B5%D0%BB%D0%B5%D1%84%D0%BE%D0%BD%D0%B8%D1%8F)
В дополнение.
колл тоже режет, но слух. Сдвоенные согласные в аглицком редко используются для "продления" звука, как в русском.
Более-менее правильная русская транскрипция этого слова - колбэк.
← →
Rouse_ © (2016-02-28 00:42) [33]Мне вот проще калбэк писать, привык, но раз низя - пусть будет через о и с двумя л :)
← →
Германн © (2016-02-28 00:49) [34]
> Rouse_ © (28.02.16 00:42) [33]
>
> Мне вот проще калбэк писать, привык, но раз низя - пусть
> будет через о и с двумя л :)
Лучше через О. Тут ИШ абсолютно прав. Ты же не говоришь "звоните/звоню в калцентр" :)
← →
Kilkennycat © (2016-02-28 00:54) [35]
> Ты же не говоришь "звоните/звоню в калцентр" :)
часто складывается впечатление, что именно туда.
← →
Eraser © (2016-02-28 00:55) [36]болл, волл, колл )
← →
Rouse_ © (2016-02-28 00:55) [37]Да в принципе... Как скажете, так и будет, главное чтоб техническая часть статьи была без ошибок :)
← →
Германн © (2016-02-28 00:58) [38]2 Eraser © (28.02.16 00:55) [36]
Футбол, файервол, и уже упомянутый колцентр. Нигде нет сдвоенных согласных. Хотя в оригинале они есть.
← →
Германн © (2016-02-28 01:01) [39]
> Rouse_ © (28.02.16 00:55) [37]
>
> Да в принципе... Как скажете, так и будет, главное чтоб
> техническая часть статьи была без ошибок :)
Извини за оффтоп.
← →
Rouse_ © (2016-02-28 01:13) [40]Да нормально, как мне статью то править, если я все мнения со стороны не услышу? Не для себя ж пишу :)
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.084 c