Конференция "Прочее" » Нужна вычитка статьи
 
  • Rouse_ © (26.02.16 16:45) [0]
    http://rouse-debug.blogspot.ru/2016/02/delphi-tls-callback.html

    Писал буквально пару дней - поэтому сам сильно не вчитывался.
    Помимо вычитки проверьте плз сам материал, боюсь что торопился и мог много нюансов просто проглотить.
  • Омлет © (26.02.16 21:01) [1]
    > "Как?": - ну это вам решать, способов масса.

    Знаков препинания многовато )
  • Омлет © (26.02.16 21:05) [2]
    <tfuncdata></tfuncdata></tsectiondata>



    Это какой-то артефакт?
  • Rouse_ © (26.02.16 21:42) [3]
    За грмматику согласен, и второй косяк подчищу.
    По самому материалу, не слишком ли переборщил?
    Имх стоит его подразбавить немного обьяснениями технических деталей, бо кажется слишком суховато вышло - тупо обьяснение методы и все. Народ может не понять, как мне кажется
  • NoUser © (26.02.16 22:04) [4]
    > Итак TLS Callback и что это за зверь.
    Спасибо!, не знал о таком.

    > Их можно задавать в динамике перед резюмом нити через модификацию
    резюмом? (вкусный намек на изюминку статьи ) )

    Соответственно подумалось что они (TLS Callback) отработают уже только в завершении потока.

    Поэтому и вопросы:
    1. Когда еще (кроме начального старта, как в статьи)  отработает TLS Callback в exe:
    - создание/завершение потока?
    - загрузка/выгрузка длл?
    2. И для длл-ки?

    > подразбавить немного обьяснениями технических деталей,
    да, но не из-за того, что суховато, а потому что интересно ;)

    ЗЫ.
    И что там с подлым хромом - люблю жанр "технический детектив".
  • Rouse_ © (26.02.16 22:20) [5]
    Ага понял, хорошая идейка для развития темы статьи. Добавлю что да как
  • Nouser © (26.02.16 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 © (26.02.16 23:37) [7]
    > 3 каллбэка, которые выполняются до загрузки ее в АП процесса.

    То есть на эти каллбэки накладываются ограничения более строгие чем на DllEntry?
    А когда в еxe, то тоже так?
  • Rouse_ © (26.02.16 23:38) [8]
    Ну это ошметки от тестового кода, где я эксперентировал. Там есть небольшой нюансик если собирать под ХЕ10

    В финалке все причешу и код будет ровный, постараюсь сразу и под 64 бита реализовать (изменения в принципе минорные)
  • Rouse_ © (26.02.16 23:43) [9]
    Есть небольшие ограничения, но только в специфичных случаях, а так по факту считай что это такой-же dllmain,  причем не важно где он расположен что в библиотеке что в приложении (логика работы одинаковая)
  • Rouse_ © (26.02.16 23:46) [10]
    Опс, я там написал "до загрузки"?!!!
    Это, конечно ошибка. До передачи на ЕР процесса и ЕР библиотеки - подправлю
  • Омлет © (26.02.16 23:46) [11]
    > По самому материалу, не слишком ли переборщил?
    > Имх стоит его подразбавить немного обьяснениями технических
    > деталей, бо кажется слишком суховато вышло - тупо обьяснение
    > методы и все. Народ может не понять, как мне кажется


    Кто не поймет, тому и не надо оно..
    В попытках объяснить технические детали можно "Windows Internals" переписать в десяти томах )
  • Rouse_ © (26.02.16 23:49) [12]
    Ну я как раз и пытаюсь простыми словами о сложном, иначе зачем писать?
  • Омлет © (26.02.16 23:55) [13]
    Тогда надо начинать с "На кого рассчитана статья".
  • Rouse_ © (27.02.16 00:41) [14]
    На работающих с защитой, есесно. Я только про нее и пишу :)
  • Inovet © (27.02.16 01:07) [15]
    Полную вычитку делать долго. Пробежал глазами минут за 10, не вникая в детали, - хоршо, в твоём стиле, всё так нормально, это не вникая в уже в технические детали.

    Одну деталь только убери
    "Ну, во первых: он работает как диод - бесшумно."
    Диоды работают шумно, как и все приборы.
  • Германн © (27.02.16 01:22) [16]
    Ну да. Аналогия с диодом совсем не в дугу.
    Лучше  - "Ну во-первых, он работает бесшумно как квалифицированный агент спецслужб." Это ближе по аналогии.
    Да и к сути статьи это ближе. Кто из работающих с защитой ПО знает о диодах вообще и о том что они из себя представляют в частности?
  • Германн © (27.02.16 01:23) [17]
    Опять забыл поставить смайлик. :(
  • Inovet © (27.02.16 03:22) [18]
    > [16] Германн ©   (27.02.16 01:22)
    > Лучше  - "Ну во-первых, он работает бесшумно как квалифицированный агент спецслужб." Это ближе по аналогии.

    Агенты тоже бывают шумными, а иные проводят в обе стороны. Не годится. Может обойтись без аналогий, а прямо так текстом рубануть правду, чуть подсластив? Уж не знаю как, но придерживаясь стилистики... Нет, авторская должна быть.
  • Dimka Maslov © (27.02.16 08:06) [19]

    > Имх стоит его подразбавить немного обьяснениями технических
    > деталей, бо кажется слишком суховато вышло - тупо обьяснение
    > методы и все. Народ может не понять, как мне кажется


    и действительно. стоит немного добавить, что такое tls callback и для чего они нужны.
 
Конференция "Прочее" » Нужна вычитка статьи
Есть новые Нет новых   [134434   +28][b:0][p:0.001]