Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизГде Розыч узнает про недокументированные функции? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.069 c