c4m310t > А негр то знает, что вы его так величаете ? Неполиткорректно жеж... =\ негр по русски даже nah и blj не знает. чего вы от него хотите. а так действительно, nigga это оскобление. а black - нормально. а по русски "черный" очень близко к "черножопый" со всеми вытекающими из... но в америке нет негров!!! и негритянок нет. в наш тим каким-то чудом занесло девушку из ЮАР у меня блин по крокодилам каждый день ностальгия теперь. зато сколько общих тем для общения с ней!!!
kaspersky Мысли у нас сходятся. Но вы явно впереди я пока только прорабатывал нечто похожее и еще не брался за написания. Регулярные я думаю побороть сможете. Они должны летать также как и обыкновенный код. Суть у них одна то и то есть машину Тьюринга. Единственное что в анализаторе что-то не-так или что-то потеряли из вида. Спасибо за идеи побег спать. Завтра буду кодить.
kaspersky Предупреждение за отход от темы. Вы же видите как пользователи реагирую, на ваши сообщения о США. Не надо накаливать обстановку. Это на них, по аналогии красной тряпки на быка, действует. С уважением.
Pavia > Регулярные я думаю побороть сможете. Они должны летать > также как и обыкновенный код. Суть у них одна то и то есть ТЗ выглядит следующим образом: необходимо чтобы в минимальной хардверной конфигурации обрабатывать на лету гигабитный траф. а там не только мой модуль... если вырубить мой моуль, мы имеем скорость сканирования в 1,250 Мб/c и 1,200 с моим модулем но без поддержки жабы. в перой версии виртуальной машины я не мог вытянуть скорость выше 900 Мб/c, после оптимизации скорость поднялась до 1,000 Мб/c, но это все равно очень мало, потому что запаса нет ;( ну вот и посчитайте. при текущем раскладе мы имеем 1,250 _без_ моего модуля и мне от этого остается в лучшем случае только 100. а тепперь делаем несложный подсчет - сколько гекатров трафа я должен обрабатывать в секунду. покажите мне хотя бы парсер, который распарсит с такой скоростью так что летать они не будут. однако, нам все выражения поддерживать и не надо. только самые распростаненные. там обычно идет замена %u на abcd или что-то похожее. первая версия java-машины, поддерживающая vbs, к которой была прикручена поддержка руби, питона и др. умещалась в 200 строк с комментами и уже поддерживала рекурсию, т.е. когда один скрипт генерит на лету другой, а тот другой уже генерит шелл-код, который нам и нужен. понятное дело, что если мы обломимся с эмуляцией первого скрипта, то шелл-кода мы не найдем. пока регулярные выражения не поддерживаются, что создает большую проблему. и пока не ясно как ее обходить. в текущей версии в качестве полумеры использован готовый жаба-скрипт движок у которого перехвачены некоторые функции, а другие вырезаны на фиг. и таким образом все работает, но... только как пост-проверка. в основном облегачающая реверсиг. типа мы видим ужасный скрипт, пропускаем его через перехаченную жаба машину, ловим все что он пытается "спреить" по памяти (если он пытается) и говорим, что вот это возможно шелл-код. записанный уже в "прямом" виде для последующего анализа. > машину Тьюринга. Единственное что в анализаторе что-то > не-так или что-то потеряли из вида. Спасибо за идеи > побег спать. Завтра буду кодить. это же тормоза. с тьюрингом. а компиляция в память даже если она бы и вытягивала по производительности системно зависима ;-(
Premature optimization is the root of all evil. Полагаю статью ты не читал, а бегло просмотрел, как я Так вот классы притянуты для инкапсуляции. Когда читатель разберется в принципах работы и у него _действительно_ встанет проблема скорости, он изменит реализацию. Это учебная стотья а не супер-пупер-распальцованный IPS, который способен поддерживать только КК Зато есть ммм диаграмма классов и каменты для доксигена! Проблемы с кодом найти можно, например конструктор CImulInstance не exception safe, а в деструкторе автор потерял delete, похоже упрощал код что бы не объяснять pimpl & auto_ptr. А еще ты много языком чешешь, в приличных компаниях ЗАПРЕЩАЮТ писать такие подробности о продуктах.) Гы, КК взяли на понт и он выкатил на паблик как лучше криптить сплоеты =) Пеши есчо!
kaspersky пока не сильно понятна тема парсера. а парсеры бывают разные. возможен даже боле-мене хардверный. а, так вы как бэкенд жаба-машину юзаете.. ясно, что ресурсы пойдут, а скорости не будет вот я не понимаю, у вас же хардовый продукт. почему вы не хотите перейти от интерпретации к выполнению на голом железе? вплоть до переноса части функционала на плису? регексп движки, обычно, не особо точатся для скорости. и они и жабаскрипт движки более направлены на кроссовость и расширябельность. вам же это нафиг не надо
Clerk > Почему вы в блоге ничего нового не пишите ? все никак с мыслями не соберусь. кстати, о птичках. вот тут мы говорили в нашем тесном корпоративном кругу за INT 2Ah (ваш ведь трюк и его эмуляцию и наши парни по ходу дела утвержадют, что он нигде не используется. в смысле нету таких вирусов. и никогда не было. могу я сослаться на вас в качестве весчьдока? J0E > Premature optimization is the root of all evil. согласен. но в отношении эмуляции скорости всегда не хватает и приходится извращаться. > Полагаю статью ты не читал, а бегло просмотрел, как я > Так вот классы притянуты для инкапсуляции. cтатью просто просмотрел. классы повергли в шок. там совсем другая архитектура вырисовывается при реализации. взять хотя бы виртуальную память. и посмотреть как она реализована в той же иде. она там по уму реализована. хотя и "антинаучно". > А еще ты много языком чешешь, в приличных компаниях > ЗАПРЕЩАЮТ писать такие подробности о продуктах.) я по статусу реверс инженер. упомянутый продукт - мое хобби, над которым работаю в свободное время. компании он не слишком интересен и как бы даже не слишком полезен. а компании, в которых все строго засекречено и даже компы запираются в ящики, совершенно неинтересны мне. хотя у нас тоже не все идеально. хрен проникнешь в здание. тут у компании возникла потребность загрузить меня работой на выходных и що вы думаете? дошли до уровня СЕО, а доступа так и не дали. секретность плюс бюрократия. у нас вообще куча строгостей. и эти строки явно читаете не только вы. товарищи из McAfee в курсе того, что я пишу и что пишите вы. подробности внутреннего устройства коммерческой тайной не являются, потому как используемые алгоритмы широко известны и описаны на вике. с которой они и были слямзены. не я же придумал такие фундаментальные структуры как, скажем, префиксные деревья. и было бы наивно с моей стороны изобретать велосипед. а еще наивнее надеяться что после мой велосипед будет лучше давно существующих. > Гы, КК взяли на понт и он выкатил на паблик как лучше криптить сплоеты =) ну и где сплоиты? почему не вижу?! смотрю в упор и не наблюдаю. языком чесать все горазды. а как сесть за клаву и натоптать так сразу в кусты qqwe > пока не сильно понятна тема парсера. а парсеры бывают разные. > возможен даже боле-мене хардверный. а ссылку на даташит можно? вы же понимате что "возможен" и "есть" это две большие разницы. >> первая версия java-машины, > а, так вы как бэкенд жаба-машину юзаете.. как фронт-энд. "жаба машина" это очень условно. настолько условно, что ей в общем-то все равно что у нее на входе и крошечный набор операций который она поддерживает переваривает кучу существующих языков, включая перл и питон. то есть понятно, что на питоне пишутся не сами сплоиты, а их генераторы. но если у меня получается их ловить - почему бы этого не сделать? факт скачки, а тем более закачки сорцов сплоита о многом говорит. плюс удобнее (ну мне во всяком случае) пускать мою тулзу, чем держать на компе зоопарк языков. > ясно, что ресурсы пойдут, а скорости не будет это не виртуальная машина > вот я не понимаю, у вас же хардовый продукт. > почему вы не хотите перейти от интерпретации > к выполнению на голом железе? выполнению _чего_ ?! даже если не брать жабу, возьмем к примеру .ani (помните, там была дыра?). задача: задетектить. вопрос: чего мы будем исполнять на голом железе и как это будет выглядеть? где брать столько железа? как минимум это x86 и x86-64 под винду и никсы. а еще ARM поддержать не мешало бы. судя по всему скоро начнется всплеск малвари под мобилки, потому в паблике вааляется куча почти рабочих сплоитов и тонны статей, описывающих как это сделать. так что мыщъх готов поддержать мобилки в любой момент, поскольку начал курить эту тему уже давно, просто сейчас их поддерживать мазы нет, ибо малвари нет. а у меня еще нет и опыта разработки подобных проектов. общее кол-во строк перевалило за 10,000 и для меня это _очень_ большой проект. еще пару версий он вытянет, а потом все. его придется перписывать с нуля. руководство, ес-но не в восторге, но а что делать? но у меня есть отмазка. когда проект стартовал никто вообще не знал как он будет выглядеть через некоторое время. ну это как если трактор в ходе эволюции превратился в летающую газонокосилку. и пришло понимание, что трактор нам нах не нужен, а вот что нам нужно так это вертолет. без редизайна не обойтись. на самом деле, как уже было сказано выше, это чисто мое хобби, к которому компания только-только начинает проявлять интерес, чему я ес-но очень рад. плюс мою тулзу внутри компании используют для упрощения реверсинга. у меня сегодня появился уже двенадцатый регулярный пользователь
ржачно, спасибо. Неужели у вас нет других проблем в макафее кроме как обсуждать тупые и неперспективные поки? Собственно и пока тут нет.
reader323 Ну да, разве что дескрипторы создавать позволяет и тики мерять Впрочем для аверов всё флат..
Clerk >> INT 2Ah (ваш ведь трюк > Напомните про что это. разница в поведении винды и эмулей. винда исключение не выбрасывает, что позволяет задетектить эмуль
kaspersky 0x2A шлюз это заглушка в случае если кодовый селектор дефолтный, иначе он сводится к вызову одного сервиса. Вобще ведь в реальных условиях напрямую импорт я не буду юзать, например дёргать CreateFile() из импорта или сискол какойнибудь. Большинство читающих очень наивны(не приятно домать что и когдато таким был ). Теже сискалы - вьдь в коде Sysenter нет. Только в лабораторных условиях дабы модель вызова откатать. Реально например вызывается какойто системный калбэк, из него берётся адрес внутренней функи и выполняется разбор её в памяти(граф строется или морфится в памяти), а далее юзается этот отморфленный код, либо граф разбирается и извлекаются нужные ссылки. Авер не знает к примеру что необходимое смещение находится в инструкции, адрес которой находится в графе как функция от числа условных ветвлений.. Так и сисколы вызываем. Тоже касается и прерываний. Эмулятору не достаточно эмулировать вызов их, нужно есчо до инта добраться
Clerk Те вы разбираете функцию и эмулируете ее работу, рассматривая как конечный результат правильный (в плате параметров и порядка) вызов сискола? Только я не до конца понял как это поможет от проактивки? или вы с сигнатурами так боретесь. Такая идея (если я ее правильно понял) мне давно приходил, только в виде морфинга api и смешивания с ними своего кода, но реализация имхо получиться достаточно сложная и громоздкая. те вы сами не предполагаете что возвращаясь будет выполняться код "после инта" иначе какая проблема до него добраться?
kaspersky имелась ввиду имплементация или частичная имплементация (я ж не знаю чего вы парсить собираетесь) на плисе (потом можно будет перепрошить). даташиты и среды на xilinx|altera сайтах вот тут железяки под зашивку ничегошные вот тут (очень) краткая сводная таблица характеристик. и фоты модулей лепленых в мгу вот тут конвертер С -> verilog. довольно отстойный на первый взгляд. но для попробовать может и сойти, не знаю насчет "есть" - не знаю. не знаю, что вы парсите. или вы про парсергенератор в верилог? я запутался. фронтенд - это парсер переводящий конкретный синтаксис (жава, жс, питон, регексп, перл, С итд) в некое внутреннее представление. бэкенд это внутреннее представление проигрывает (виртуальная машина) или переводит в варианты машкодов-асмов. так, например, работает ACK. только там: C, пас, васик, модула, окам, чето еще. это старый проект, но у меня на несложных тестах работал нормально начинается ощущение, что слово "кобыла" мы понимаем с разных положений точки сборки есть трансляторы (x86, x86-64, arm, ppc, ppc-64) -> внутреннее представление -> (x86, x86-64, arm, ppc, ppc-64). с поддержкой плугинов позволяющих это внутреннее представление ворочать/модифицировать, а полученный транслят выполнять. входных и выходных трансляторов можно и еще написать при желании, особенно, если таблицы будут много компактнее х86. так разбить его на 10ток более мелких. и поставить себе si
Clerk так соль то в чем? если хипсы все равно перехватывают не юзер моднные функции. И про инт, так вообще просто пускаем отдельный поток который сразу завершиться, и все "до настоящего инта" не добраться
промотивирую. парсеры в большинстве случаев довольно просты и линейны (не случай С, тем более С++), для них не нужен суперпроц. но нужна скорость. тем более, если надо (пробовать) парсить сразу кучу возиожных вариантов. те напрашивается идея кучи параллельных простых, но быстрых обработчиков. причем, чтоб обработчики можно было добавлять/убирать, логику изменять итд. причем логика парсера практически полностью жесткая и не требует большой интеллектуальности. к этим условиям очень подходит фпга, для которого нормально все это. и обработка и вывод по очередному токену для всех параллельных парсеров, при условии линейного алгоритма (те, без заглядывания вперед или поисков в памяти спец. на этот токен), может занять около 1 такта. думаю, быстрее врядли. еще какие будут линейные (можно и слегка и средне нелинейные) моменты - тоже можно ускорить подобным макаром