Как то решил сравнить содержимое PEB под ОllyDbg и без нее в XP (sp1). Получилась интересная вещь, что кроме байта BeingDebugged и разного "мусора" четко различаются значения указателя PEB.Ldr (смещение 0Ch). Пример: 0С: 00241E90 - без отладчика 0С: 00241EA0 - под OllyDbg => +10h - какие-то 16 байт Кто что думает по этому поводу ? Может ось все таки вставляет какие-то ссылочки на дебаггер в контекст процесса ? Или это опять частный случай ? special for volodya: что говорят на этот счет твои "упаковщики" ? PS: я по прежнему под мастдаем парюсь, так что подробнее покопаться не получается
Вот тебе ещё результаты из других осей 00071E90h - w2ksp4 00071EA0h - w2ksp4 + olly 00131DC8h - nt4.0 00131DD0h - nt4.0 + olly
bogrus Спасибо за результаты из других осей. В теории я не силен, но вроде бы значения не зависят от запуска других приложений. Как твое впечатление ? PS: Ой.. Насчет "других приложений" - это пивной глюк. Пить меньше надо.., но не получается..
Что значит других , у других своё пространство . Тебя же интересует запуск под отладчиком . Я проверял не только с олли , действительно это значение разное . А почему разное , так это надо курить PEB , для чего оно там используеться .
bogrus Да, насчет других приоложений я чушь спорол, прошу прощения (хотел поправить да не успел, ты меня опередил). А теоретики, сегодня отдыхают ?
Пока вопросы плодятся быстрее чем ответы.. 1) Пытался "выйти на след" отладчика через OutputDebugString, но погряз в дебрях. В отличие от 9х, никакой предварительной проверки наличия отладки не делается. "Тупо" устанавливается SEH с каким-то запутанным обработчиком и вызывается kernel32.RaiseException. Что дальше ? Где будет обработано это исключение, в этом SEH или в глубинных "потрохах" ситемы ? 2) Промотр ntdll.ConnectToDbg показывает, что еще какой-то признак отладки пишется в TEB.DbgSsReserved (dword TEB+F24h). Если он не 0, то на выход с песнями. Если 0, то ссылочка на это поле передается в ntdll.ZwCreateDebugObject. Дальше - дебри.
Промотр ntdll.ConnectToDbg показывает, что еще какой-то признак отладки пишется в TEB.DbgSsReserved (dword TEB+F24h). Если он не 0, то на выход с песнями. Если 0, то ссылочка на это поле передается в ntdll.ZwCreateDebugObject. Дальше - дебри. Слушай, я дико занят. У меня сейчас курсы по MySQL. Эти дебри - это LPC. А DbgSsReserved - это два DWORD'a. В третьих упаковщиках эта тема ДЕТАЛЬНО прорабатывается. Все там будет. Не морочь пока себе этим голову.
volodya Как говориться, и на том спасибо. "А DbgSsReserved - это два DWORD'a" Знаю, знаю. Я хотел сказать, что ConnectToDbg проверяет на 0 только первый dword. А как скоро ожидаются твои "третьи" ?
Я хотел сказать, что ConnectToDbg проверяет на 0 только первый dword. NtCurrentTeb()->DbgSsReserved[0] - это объект синхронизации NtCurrentTeb()->DbgSsReserved[1] - хендл LPC-порта на стороне клиента. А как скоро ожидаются твои "третьи" ? Третьи состоят из двух частей. Т.к. вводится очень большой объем криптографии, то пишется математическое введение. На данный момент введение доросло до 20 страниц. Полагаю, еще столько же - и можно класть на сайт Третья часть тоже пока только 20 страниц. Сначала закончу мат. введение. Положу на сайт. Потом крепко возьмусь за собственно статью. Очень много интересных наработок и много людей подключено.
2 volodya До выпуска долгожданной статьи обратите ,пожалуйста ,внимание на Titanium 4.0 от BitArts . В нем используется на мой взгляд интересный метод защиты и упаковки.
Кто знает, что за байтик или двордик сидит в PEB по смещению 68h ? В XP(sp1) без отладчика этот дворд = 0, а с Olly = x70h. В мастдае в этом месте всегда 0, а как насчет w2k ? Проверьте, кому не трудно, плииз.. <font color="gray]<font size=2>mov eax,fs:[30h] mov eax,[eax+68h] ;= ???</font><!--size--></font><!--color--> volodya, обещанных упаковщиков 3 года ждут ?
Там Peb.NtGlobalFlag (см. KmdKit) В w2k также как у тебя (под отладкой там 70h), но в NT4.0 там 0h Попробуй http://www.wasm.ru/forum/index.php?action=vthread&forum=3&topic=7309&page=0#12 Там такой вариант: Код (Text): mov eax,[fs:18h] mov eax,[eax+30h] mov eax,[eax+18h] cmp dword [eax+10h],0 jnz debugged А вообще, если порыть, то таких мест ой-ёй-ой можно понаходить, даже многие api отрабатывают по-разному если под отладкой или без, ещё можно в виндовых сорцах включить поиск по слову "debug", тоже будет не мало интересного
Это NtGlobalFlag под всеми NT-виндами. PEB STRUCT . . . NtGlobalFlag DWORD ? ; 0068h . . . PEB ENDS Enable heap tail checking 0x10 Enable heap free checking 0x20 Enable heap parameter checking 0x40
Точно! и я как раз нарвался, трассируя прогу, что *Неap* ф-ции под отладкой вообще по другим ветвлениям (jcc) ходили
volodya, обещанных упаковщиков 3 года ждут ? У меня и так 10-12 часовой рабочий день Во-вторых, сначала выйдет КНИГА. Моя с Рельфом. О математике в криптографии. Без нее 3-ю часть читать будет полубесполезно.