Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Где Розыч узнает про недокументированные функции?   Найти похожие ветки 

 
Slipknot_VEVO   (2012-09-26 22:37) [0]

Они ж недокументированные!
Значит в спраке нет.
Может есть в статьях... А там они откуда узнали?

Вообщем, объясните. :)


 
Юрий Зотов ©   (2012-09-26 22:38) [1]

Он пиво Гейтсу выставил и теперь все из первых рук получает.


 
Jeer ©   (2012-09-26 22:40) [2]

Ему Гейтс пиво выставляет за новые обнаруженные недокументированные функции :)


 
Rouse_ ©   (2012-09-26 23:01) [3]

Что значит где? Там ->>>
Ну а вообще недокументированность это то, о чем не описано, но можно узнать. Возьми любую MS бибилиотеку, посмотри какие она функции экспортирует. Поищи их в справке MSDN. Если не нашел - айда ее под отладчик и разгребаем ее параметры. Как-то так :)
Гораздо интереснее искать недокументированные инструкции, ну например мало кто знает что есть длинные NOP-ы или бряки это не только CC опкод, есть и другие вариации опкодов генерирующих отладочные исключения не описанные с Intel-овском мануале :)
Вот это как раз интересно и находится совершенно случайно, я в свое время часть находил генерируя рандом с целью проверки свое движка дизасма, парралельно проверяя то что он не смог разобрать (но оно выполнилось) с мануалами и сторонними дизасмами...


 
Rouse_ ©   (2012-09-26 23:07) [4]

ЗЫ: а так вообще большая часть это просторы инета (китайцы в этом плане сильно помогают), исходные коды операционок, антивирусов и т.п.

Собственных наработок в плане нахождения новых недокументированных фишек у меня не более 10-15 процентов, и то больше половины получено в результате взлома чужих приложений и изучения новых трюков...


 
Игорь Шевченко ©   (2012-09-26 23:27) [5]


> Они ж недокументированные!


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


 
Petr V. Abramov ©   (2012-09-26 23:28) [6]


> Rouse_ ©   (26.09.12 23:01) [3]

занятно :)
остается вопрос, почему это работает на всех процах и на AMD тоже


 
Rouse_ ©   (2012-09-26 23:30) [7]


> Petr V. Abramov ©   (26.09.12 23:28) [6]
> занятно :)
> остается вопрос, почему это работает на всех процах и на
> AMD тоже

Ну тебе же Игорь ответил - теоретически оно может перестать работать :)


 
Rouse_ ©   (2012-09-26 23:36) [8]


> Petr V. Abramov ©   (26.09.12 23:28) [6]

зы, про sysenter и syscall думаю в курсе, в свое время AMD грозилось вообще sysenter в привелигерованные занести, но воз и ныне там :)


 
Германн ©   (2012-09-27 01:43) [9]


> Rouse_ ©   (26.09.12 23:07) [4]
>
> ЗЫ: а так вообще большая часть это просторы инета

А версия насчёт пива и БГ - всё же более красивая.
:)


 
Rouse_ ©   (2012-09-27 01:45) [10]


> Германн ©   (27.09.12 01:43) [9]
> А версия насчёт пива и БГ - всё же более красивая.

Обе не верные, я ставил Чивас ;)


 
Дмитрий С ©   (2012-09-27 02:08) [11]

можно еще какие-нить недокументированные "вкусняшки"  рассказать?)


 
Дмитрий С ©   (2012-09-27 02:09) [12]

интересно как ты определил, что длинный ноп, всетаки ничего не делает?)


 
Rouse_ ©   (2012-09-27 02:32) [13]


> Дмитрий С ©   (27.09.12 02:09) [12]
> можно еще какие-нить недокументированные "вкусняшки"  рассказать?)
> интересно как ты определил, что длинный ноп, всетаки ничего не делает?)

По поводу недокументированных инструкций и методах их детекта - не расскажу. Ну по крайней мере до тех пор, пока не выведу их из состава своего движка защиты.

По поводу вкусняшек, смотря что интересно. Ну для примера у меня есть варианты генерации BSOD-а из третьего кольца под всеми операционными системами включая восьмерку. Ну или перевод процессора в хитрый режим, в котором он будет генерировать исключение отладки #DB при выполнении любого условного перехода (инструкция Jxx) в теле приложения. Чем-то я могу поделиться, что-то публикую в блоге или на сайте. Задавай вопросы конкретней...


 
Rouse_ ©   (2012-09-27 02:46) [14]


> Дмитрий С ©   (27.09.12 02:09) [12]
> интересно как ты определил, что длинный ноп, всетаки ничего
> не делает?)

А, ну вообще на этот вопрос я могу ответить.
Грубо, т.к. последовательность опкодов недокументированна, а дизассемблер ее пытается преобразовать в что-то, что он знает, например пусть это будет упрощенно:
xor eax, eax
xor ebx, ecx
not ecx

при трассировке ты естественно ожидаешь что все эти три инструкции выполнятся последовательно, и будешь удивлен, когда при выполнении первой-же инструкции EIP уйдет байт эдак на 10 далее, пропуская то, что тебе нагенерировал дизасм...


 
Inovet ©   (2012-09-27 04:37) [15]

> [8] Rouse_ ©   (26.09.12 23:36)

Недокументированные фичи в процессорах как-то используются интеловским компилятором или это технологические артефакты?


 
Anatoly Podgoretsky ©   (2012-09-27 07:08) [16]

> Rouse_  (26.09.2012 23:30:07)  [7]

А практически это доказал Нортон


 
Anatoly Podgoretsky ©   (2012-09-27 07:09) [17]

> Rouse_  (27.09.2012 01:45:10)  [10]

Че Ге Варе?


 
Inovet ©   (2012-09-27 07:55) [18]

> [16] Anatoly Podgoretsky ©   (27.09.12 07:08)
> А практически это доказал Нортон

Это в чём он так?


 
Anatoly Podgoretsky ©   (2012-09-27 08:57) [19]

> Inovet  (27.09.2012 07:55:18)  [18]

Он использовал много недокументированых функий в 95 и при переходе на 98
много прекратило работать или стало работать не так


 
AV ©   (2012-09-27 09:14) [20]

А.. Norton Utilities..
Да, наделали они делов..
Конечно, крутая вещь была, но потом запорола, наверное, не один hdd ^)


 
Anatoly Podgoretsky ©   (2012-09-27 09:25) [21]

> AV  (27.09.2012 09:14:20)  [20]

У меня точно запороло, с тех пор я в удаление от Нортона.


 
Дмитрий С ©   (2012-09-27 10:31) [22]


> Rouse_ ©   (27.09.12 02:46) [14]
>
>

Ну это понятно. А как ты узнал что твоя инструкция ничего не делает?


 
Дмитрий С ©   (2012-09-27 10:31) [23]

ну не твоя, конечно, а найденная.


 
AV ©   (2012-09-27 10:32) [24]

Дык, написано, прыгнуло через нее


 
Дмитрий С ©   (2012-09-27 10:57) [25]


> Дык, написано, прыгнуло через нее
>

Ничего не прыгнуло. Грубо говоря, процессор выполняет 5и байтовую команду, а дизассемблер думает, что это 5 разных команд, получается эффект прыжка.


 
Германн ©   (2012-09-27 14:00) [26]


> Грубо, т.к. последовательность опкодов недокументированна,
>  а дизассемблер ее пытается преобразовать в что-то, что
> он знает, например пусть это будет упрощенно:
> xor eax, eax
> xor ebx, ecx
> not ecx
>
> при трассировке ты естественно ожидаешь что все эти три
> инструкции выполнятся последовательно, и будешь удивлен,
>  когда при выполнении первой-же инструкции EIP уйдет байт
> эдак на 10 далее, пропуская то, что тебе нагенерировал дизасм.
> ..
>


Хм. А если злонамеренно вставить в исполняемый код (в то место, в которое реально никогда программа не заходит) "левый" байт. Не будет ли это попыткой затруднить дизассемблирование?


 
Rouse_ ©   (2012-09-27 15:47) [27]


> Ну это понятно. А как ты узнал что твоя инструкция ничего
> не делает?

Ну это очень просто, у каждой инструкции есть документированное поведение, описанное в интеловском мануале, грубо после ее исполнения меняются состояние регистров и флагов. Зная это, можно определить что перед тобой.
Во, кстати, в последнем интеловском мануале часть данных появилась, в моем данной информации нет:

2 bytes 66 NOP 66 90H
3 bytes NOP DWORD ptr [EAX] 0F 1F 00H
4 bytes NOP DWORD ptr [EAX + 00H] 0F 1F 40 00H
5 bytes NOP DWORD ptr [EAX + EAX*1 + 00H] 0F 1F 44 00 00H
6 bytes 66 NOP DWORD ptr [EAX + EAX*1 + 00H] 66 0F 1F 44 00 00H
7 bytes NOP DWORD ptr [EAX + 00000000H] 0F 1F 80 00 00 00 00H
8 bytes NOP DWORD ptr [EAX + EAX*1 + 00000000H] 0F 1F 84 00 00 00 00 00H
9 bytes 66 NOP DWORD ptr [EAX + EAX*1 +
00000000H]
66 0F 1F 84 00 00 00 00
00H


Часть правда тут не совсем работает, но покажу фишку из того что работает, например возьмем трехбайтный NOP, опкоды $0F, $1F, 0

Пишем код:
 asm
   db $0F, $1F, $00
   xor eax, eax
   inc eax
   neg eax
 end;


а теперь смотрим что получилось в дизассемблере:

004520DE OF            db $0f
004520DE 1F            pop ds
004520E0 0031          add [ecx],dh
004520E2 C040F7D8      rol byte ptr [eax-$09],$d8


Шикарный вид :)

В списке отсутствуют 12 и 14 байтные ноп-ы, я собственно их оычно использую

То-же примерно получится если, как сказал Герман, злонамеренно вставить "левый" байт. Такой подход называют прыжком в середину инструкции, хотя на самом деле конечно это просто прыжок по валидному адресу. Выглядит так:

   db $EB, $01   // jmp +1 (прыжок на xor пропуская "левый байт")
   db $B8        // непосредственно сам "левый" байт
   xor eax, eax  // правильный код


из этого получается вот такая каша:
jmp +$01
mov eax, $d285co31


в кратце как-то так...


 
Rouse_ ©   (2012-09-27 15:54) [28]


> Inovet ©   (27.09.12 04:37) [15]
> Недокументированные фичи в процессорах как-то используются
> интеловским компилятором или это технологические артефакты?

Если чесно не разбирал вопрос с этого ракурса...


 
Дмитрий С ©   (2012-09-27 16:08) [29]

Наверняка современные отладчики умеют с этим бороться. Например переразобрать код если обнаружился EIP в середине инструкции.


 
Rouse_ ©   (2012-09-27 16:14) [30]


> Дмитрий С ©   (27.09.12 16:08) [29]
> Наверняка современные отладчики умеют с этим бороться.

С такими простыми случаями Olly бороться умеет, но это сильно упрощенная схема, ничто не мешает написать код так, что один байт будет реально принадлежать двум, а то и трем различным инструкциям, наложенных друг на друга со смещением. В данном случае поможет только трассировка


 
Дмитрий С ©   (2012-09-27 16:18) [31]

Хм. Теоретически ведь можно написать такой компилятор или конвертер, который весь код "покроет" этим трюком.


 
Дмитрий С ©   (2012-09-27 16:20) [32]

а еще про bsod. А можно не bsod вызвать, а отключить блок питания? Резко и внезапно?


 
brother ©   (2012-09-27 16:25) [33]

> отключить блок питания? Резко и внезапно?

можно! Выдерни шнур из розетки! -_-


 
Rouse_ ©   (2012-09-27 16:27) [34]


> Дмитрий С ©   (27.09.12 16:18) [31]
> Хм. Теоретически ведь можно написать такой компилятор или
> конвертер, который весь код "покроет" этим трюком.

Собственно это одна из моих основных задач :)


> Дмитрий С ©   (27.09.12 16:20) [32]
> а еще про bsod. А можно не bsod вызвать, а отключить блок
> питания? Резко и внезапно?

Конечно, пиропатрон к кабелю и два провода на LPT порт :)
Будет шумно, резко и внезапно!!! :)


 
Дмитрий С ©   (2012-09-27 17:19) [35]

Да уж. Пиропатроны делать я умею и главное есть из чего. но мне бы по проще чего нить и по тише)


 
Игорь Шевченко ©   (2012-09-27 17:43) [36]


> А можно не bsod вызвать, а отключить блок питания? Резко
> и внезапно?


можно


 
TUser ©   (2012-09-27 17:52) [37]

О сбое компьютера вы узнаете по яркой вспышке, клубам дыма и взрыву, который отбросит вас не менее, чем на три метра. (с)


 
no_way   (2012-09-27 18:12) [38]

Rouse_, а зачем вы вообще пишите защиту сами, а не используете vmprotect, например
насколько знаю, автоматом его еще никто не разворачивает
стоит он копейки, а сэкономит кучу времени и сил
и авторы русские, постоянно бывают на рсдн

зы
не реклама, сам его не использую и к нему никакого отношения не имею


 
Slipknot_VEVO   (2012-09-27 18:13) [39]

Удалено модератором


 
Rouse_ ©   (2012-09-27 18:31) [40]


> no_way   (27.09.12 18:12) [38]
> Rouse_, а зачем вы вообще пишите защиту сами, а не используете
> vmprotect, например

Почему не использую? Использую конечно, только ExeCryptor но полагаться только на него одного нельзя, поэтому нужно включать мозги везде где только нужно.
По поводу же VmProt-а, на автомате не разворачивают, но средства помогающие разбирать ВМ есть, что уже чревато...



Страницы: 1 2 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.052 c
4-1259833099
Mixali4
2009-12-03 12:38
2013.03.22
Как получить идентификатор контекстного меню


2-1331717137
QWERTY_
2012-03-14 13:25
2013.03.22
сравнение crc32


2-1332606068
leklerk
2012-03-24 20:21
2013.03.22
Отслеживание изменений пользователя


15-1345368609
Дмитрий С
2012-08-19 13:30
2013.03.22
Pci-e SSD


15-1330029003
Юрий
2012-02-24 00:30
2013.03.22
С днем рождения ! 24 февраля 2012 пятница