В последнее время замечаю слишком большую общественную активность антивирусных компаний. Недавно наткнулся на такой сайт, может и баян, но у меня он вызвал удивление. Женя Касперский удивляет: http://av-school.ru/article/
вообще сижу весь на измене))) научите меня кто-нибудь тру-дзенским хакерским техникам))) пойду прочту оттуда пару статей...
Это уж слишком песимистичное мнение. Выпивают. Иногда и за одним столом начинают бить друг дружку, когда маленкий пушистый зверек с большим хвостом сядет на плечо. Но все равно кооприруются, может называют себя не гордым словосочетанием dream team. Но все же я знаю примеры из личного опыта когда товарищи вместе ИТ разработками занимались и денюжку получали.
хорошая статья "Эмулятор исполняемого кода для архитектуры x86 (IA-32)" http://av-school.ru/article/r-5.html
JCronuz Статья хорошая. Но только для школьников которые в компьютерах не разбирается. И которым надо объяснить работу процессора. А если брать по меркам wasm.ru статья просто 7 вода на киселе.
Pavia > Статья хорошая. Но только для школьников которые в компьютерах не разбирается. проблема в том, что по такой статье эмуль не написать. ну разве что страшный примитив со скрипом раскрывающий простой xor. в реальной жизни встают проблемы за которые в статье даже намека нет. и уж совсем наивно приятянута за уши модель с классами. уж стоило бы сказать, что регистры лучше всего индексировать в массив, что ускоряет эмуляцию в разы. а вот с ячейками памяти этот номер не пройдет. разве что разряженный массив брать, но все равно будут тормоза. я вот уже с десяток эмуляторов написал (в том числе и для жабы), но все никак не могу вытянуть нужную скорость. правда у меня прблема. ко мне попадают куски непонятно чего у которых нет никакой точки входа и потому сначала нужно отмачить их, попытавшись войти в русло наиболее осмысленного потока команд который и исполнить. у меня сейчас работает антинаучный гибрид статического парсера и виртуальной машины. в основном идет мультипаттерн матчин и предвычисленные табличные результаты для каждой группы команд. виртуальная машина поднимается только кода она может чем-то помочь. скажем мы нашли расшифровщик, но статический парсер обломался с его разбором (самомодифицирующийся код с нетривальной иницилизацией/пересылкой регистров, например). тогда виртуальная машина может позволить оттрейсить значения регистров (ячеек памяти), после чего она снова ложиться и опять начинается статический разбор. в результате чего можно обрабатывать гегабитый траф на полной скорости. идея в том, что виртуальная машина поднимается очень редко. а статический разбрщик сначала был на двоичных деревьях, сбалансированных с учетом уникальности последовательности байт, позже замененный на уже упомянутый мультипаттерн матчин. в реузльтае всех антинаучных извращений крошечное ядро (порядка 1k строк на си с комментами) парсит любую хрень. хоть проц, хоть жабу, хоть руби, хоть питон. в разумных пределах конечно. о полной поддежке всего набора инструкций/команд речь не идет. но это не меняет идеи - ядро эмулятора практически полностью абстрагировано от конкретных специфик, которые вынесены в отдельные "хаки", которые очень быстро пишутся. при всей порочности моего подхода он все-таки работает. пускай и хреново. но подход, который предлагает автор статьи, дальше курсовой не уйдет. другой поход, в котором мыщъх так же принимал участие, хотя не написал ни строчки кода, а просто дал совет товарищу сводится к тому, что нам нужно отлаживать вынь приложения, и у нас уже есть борщ, но мы не можем позволить себе грузить вынь ибо это же сдохнуть можно. и что мы делаем? пишим мини-ось (дерем исходники миникса , фактически переводящую проц в защищенный режим и дающую плоскую модель памяти. за сим все. ну там еще примитивный загрузчик PE. дальше можно грузить DLL от винды, эмулируя только крошечный набор нативных функций. для снятия протектов подходит ну еще там SEH эмулить, некоторые структуры данных... кстати, тут как раз есть где развернуться писателям осей. создать ось на которой будут запускаться PE файлы - интересная задача. и полезная, > И которым надо объяснить работу процессора. > А если брать по меркам wasm.ru статья просто 7 вода на киселе. А что на васме есть по эмуляции? и что по эмуляции есть вообще? вот сейчас собираюсь писать более полную имплементацию JS/VBS и отчаянно ищу ресурсы по эмуляции. с умными статьями. главное, чтобы статьи были практическими. теоритизировать я и сам умею. а вот как запустить скрипт на выполнение, с учетом того, что он битый/неполный и выжать из него хоть что-то?! сейчас же хакеры занимаются обфускацией во всю. ну ладно там перемешивание переменных. это ерунда. ладно там самомодифицирующиеся скрипты. это тоже ерунда. а вот поиск/замена по регулярным выражениям в скрипте который генерирует другой скрипт это взрыв отчаяния. ну не могу я на полной скорости эмулить регурярные выражения ;(
Rel > да... а не тема ли это для новой статьи?)))) статьи и том как мыщъх пытается написать эмулятор? у каспера он всяко лучше будет. у макафи есть неплохой эмуль, хотя и заточенный совсем под другие нужды. а у меня задача крайне специфическая. реалтаймовая. отсюда и извращения и неизбежные компромиссы. тем для статей намного больше. например, как ломают php скрипты и как над ними надругаться можно. скажем, если у нас есть /blog/ccc/mail.php?id=root, то его ж пропалят ипсы. по сигнатуре. вроде бы логично написать /blog/ccc/../ccc/mail.php?id=root но это точно пропалят. во первых травелсинг, во вторых url все равно проходит нормализацию. а вот /blog/ccc/mail?id=root уже имеет шансы сработать как и /blog/ccc/mail.php?xxx=yyy&id=root или /blog/ccc/mail.php?id====root, хотя опять - кому сие интересно? разве что писателям сигнатур, то есть конкурентам
kaspersky даже если транслировать в машкод (или еще быстрее надо)? кроме того, готовые, достаточно хорошие открытые либы есть так есть же. и вине, и как оно.. забыл. и то, и то открытое. или чтото хитрее надо? а при чем тут эмуляция? просто прокастомить открытый интерпретатор. или даже написать свой с 0. чтоб мог делать что вам надо. надо скорость - жит. снова непонятно про эмуляцию. регекспы - это такой себе специализованный интерпретируемый язык. точнее, обычно интерпретируемый. но я видел и даже подобрал се в архив компиляторы регекспов (довольно урезанной версии) в С. можно компилить и в асм или сразу в машкод. но, учитывая, что у вас интерпретаторов на ускорение набралось, то я б сделал одну жит машину (или использовал готовую) и кучу фронтендов к ней. чето в голове туманится. пойду посплю. все, что написано выше может быть полной ерундой, тк не перечитаю. один глаз уже часа 1.5 как спит.
Вы как хотите, а пошёл учиться! Авось админ Касперский заметит что я стараюсь, да и возьмёт к себе в падованы.
Krait > Вы как хотите, а пошёл учиться! Авось админ Касперский > заметит что я стараюсь, да и возьмёт к себе в падованы. логично. в лк можно многому научиться. там сильные ребята. а потом (ну когда вы у касперского всему научитесь) мы предложим вам в 10х большую зарплату и перетянем в McAfee перетянем-перетянем. "не мытьем так каканьем" (с) у нас народ намного более дружелюбный и отзывчивый. да и надо же расширять российский офисс. а то все в китай да в индию вкладываем бабло ;(