Сейчас на форуме: jinoweb (+5 невидимых) |
eXeL@B —› Программирование —› Visor2. |
<< . 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 15 июля 2018 02:22 · Личное сообщение · #1 Увидел свет в теме Задача решена, осталось просто брать и кодить. Опишу механизм. Оригинальный код не изменяется. Это исключает необходимость подмены данных(трек R-df). В RWX массив накапливаются блоки кода, это части, в которых все инструкции линейные и оканчиваются ветвлением(call/ret/jcc). При записи в этот буфер линейный блок копируется и в конце дописывается jmp near rel на стаб, который выполняет эмуляцию оригинального ветвления. Для быстрого приведения(отображения) оригинального адреса на буфер используем AVL. Дерево содержит описатели блоков, каждый из них содержит: - Оригинальный адрес блока. - Адрес блока в буфере RWX. - Тип ветвления. - Битовую карту переменного размера. - Ссылку(2) на следующий описатель. AVL позволяет выполнить быструю трансляцию адреса на буфер. Сам визор цикл следующий. Блок декодируется и копируется в буфер. Ветвление эмулируется на основе описателя, выбирается ссылка на следующий блок и на него отдаётся управление. После исполнения блока управление получает стаб, выбирает/строит следующий блок и цикл повторяется. Тоесть выполняется блок в буфере - jmp stub - эмуляция ветвления - jmp to next block. Трансляция(поиск описателя блока) происходит на этапе построения новых блоков и при возврате по ret/imp_call_indir. Для рет используем кэширование - сохраняем описатель адреса возврата. Конкретно по реализации. Системные AVL. Добавляем описатель в дерево RtlInsertElementGenericTableAvl(). Получаем описатель по оригинальному адресу RtlLookupElementGenericTableAvl(). Сравнивающий колбек должен определить принадлежность указателя диапазону блока и вернуть ближайший следующий, это происходит на последнем вызове CompareRoutine. Тогда процедура вставки блока будет следующая. 1. Если указатель в блок, то проверяем смещение указателя от начала исходного в битовой карте. В ней помечены начала всех инструкций в блоке. Если маркер установлен, то блок сходится на инструкции и можно выполнить прямое ветвление. 2. Если маркер сброшен, то происходит наложение инструкций(ветвление не на начало). Раскодируем длину и класс инструкции и повторяем цикл, пока не произойдёт схождение. Если произойдёт выход за пределы блока, то строим новый и добавляем описатель в дерево. 3. Если описателя нет, поиск вернёт ближайший следующий. Выполняем п2. После исполнения блока управление получает стаб. Он выгружает контекст, выбирает тип ветвления из описателя и его эмулирует, получая указатель на адрес ветвления. Если блок с ветвью уже описан, ссылка на него получается из ссылки на следующий блок из описателя. Иначе блок строится в конец буфера. Дерево в таком виде служит для быстрой трансляции адреса на буфер, связывания блоков и хранит инфу про ветвление. В отличие от визора первого типа(dye, где блоки копировались каждый раз в буфер), в данном случае профайл должен быть высоким, хотя его может просадить авл трансляция. Как это будет в работе предсказать нельзя, покажут тесты. ----- vx | Сообщение посчитали полезным: 8-9-13-80 |
|
Создано: 22 июля 2018 22:31 · Поправил: difexacaw · Личное сообщение · #2 |
|
Создано: 22 июля 2018 22:34 · Личное сообщение · #3 |
|
Создано: 22 июля 2018 22:36 · Личное сообщение · #4 |
|
Создано: 22 июля 2018 22:39 · Личное сообщение · #5 |
|
Создано: 22 июля 2018 22:42 · Поправил: shellstorm · Личное сообщение · #6 difexacaw пишет: там сразу как помню всё обосрали, так как оно на асме написано во первых ты выкатил на паблик ворох каких-то сомнительных исходников с предложением остальное писать самим, во вторых, не сделал удобных интерфейсов, отсутствовали примеры реального юзкейса. адекватные люди никогда не будут вкладывать свое время в такие сомнительные инструменты, допустим автор забил на баги и развитие проекта, кто будет поддерживать эту кучу, эм, ассемблерных исходников? зачем брать движок с интерфейсами разбор и допил которых требует времени соизмеримое, если не больше, написанию своего движка? поэтому да, твой проект мертв еще на уровне идеи, поскольку у него есть шанс взлететь только в качестве бинда к скриптам, поскольку для остального давно используют аппаратные решения, а там не любят кровотечения из глаз, и даже если напишешь, а результат будет супер быстрым, им все равно не будут пользоваться, важен баланс между скоростью и удобством для конечного пользователя, а вовсе не автора. напиши реализацию на си, для начала хотя бы просто трейсер x86\x64 и получишь живой фидбэк, причем от практиков, кто использует инструменты по назначению и уже по фидбэкам выстроится архитектура, после можно уже выдавливать скорость, допустим в версии "мотор 2.0", только делать уже будешь отталкиваясь от реального использования и требований общественности. иначе очередной проект в стол и после говорить, что кругом педерасты, а ты непонятый гений. это так не работает. | Сообщение посчитали полезным: Gideon Vi |
|
Создано: 22 июля 2018 22:42 · Личное сообщение · #7 |
|
Создано: 22 июля 2018 22:52 · Личное сообщение · #8 |
|
Создано: 22 июля 2018 22:59 · Личное сообщение · #9 |
|
Создано: 22 июля 2018 23:08 · Личное сообщение · #10 shellstorm > напиши реализацию на си, для начала хотя бы просто трейсер x86\x64 Меня не привлекает мягко говоря сишка, так как её выхлоп не контролируется. Особенно где обработка на уровне инструкций и всё такое. Можно сделать интерфейсы на си, а сам мотор отдельно 86-64, иначе не получится. Добавлено спустя 2 минуты Bronco > сиськи на полном контроле, хелпер нужен. Гипер в приложение не прицепишь что бы что то обработать. Про остальное я не понял. ----- vx |
|
Создано: 22 июля 2018 23:10 · Личное сообщение · #11 |
|
Создано: 22 июля 2018 23:11 · Личное сообщение · #12 |
|
Создано: 22 июля 2018 23:14 · Личное сообщение · #13 |
|
Создано: 22 июля 2018 23:15 · Личное сообщение · #14 |
|
Создано: 22 июля 2018 23:18 · Личное сообщение · #15 |
|
Создано: 22 июля 2018 23:18 · Личное сообщение · #16 |
|
Создано: 22 июля 2018 23:19 · Поправил: shellstorm · Личное сообщение · #17 difexacaw пишет: Можно сделать интерфейсы на си, а сам мотор отдельно 86-64, иначе не получится. и зачем кому то нужен мотор на ассемблере? если мне нужно что-то добавить, зачем мне дергать автора, если он вообще не забил, я просто возьму и добавлю сам необходимый функционал, тем более он может быть специфическим и нужен только мне, но ассемблерные исходники никто в здравом уме не будет дописывать, тем более когда есть реализации на c\c++. все просто, ты пишешь на си или любом другом адекватном языке или пишешь для себя, в последнем случае нет смысла искать фидбэк на форумах и тем более форсить мотор. элементарный пример, есть отладчик x64 на ассемблере и есть x64 отладчик на c\c++, первый появился намного раньше, но кому он нужен, им наверное даже автор не пользуется, второй кто только не допиливает, он понятен и читаем, даже если автор завтра умрет, проект продолжит развиваться и можно допиливать самостоятельно. цена времени. используется и многими, просто зачем об этом кричать, какой то инструментальный эксгибиоционизм.) |
|
Создано: 22 июля 2018 23:19 · Личное сообщение · #18 |
|
Создано: 22 июля 2018 23:41 · Личное сообщение · #19 |
|
Создано: 23 июля 2018 07:48 · Личное сообщение · #20 |
|
Создано: 23 июля 2018 08:20 · Личное сообщение · #21 |
|
Создано: 23 июля 2018 11:40 · Поправил: f13nd · Личное сообщение · #22 shellstorm пишет: во первых ты выкатил на паблик ворох каких-то сомнительных исходников с предложением остальное писать самим У меня сложилось впечатление, что в человеке происходит борьба рационального (пора взрослеть наверное и заниматься чем-то что материальную выгоду приносит, так что вот вам идея, а я умываю руки) и иррационального (доказать что все вокруг неправы, поэтому еще пару лет надо потратить на монстра франкенштейна, который в итоге будучи перегруженный логикой окажется как минимум не лучше эмуляции) и он между этими двумя крайностями мечется и никак не может решиться. Насчет исходников на си я несогласен, это же преподносится как довольно простая штука, а проблемы багов и какой-то там поддержки быть не должно. Просто когда и если это не так, уже теряется смысл всего предприятия. ----- 2 оттенка серого |
|
Создано: 23 июля 2018 11:49 · Личное сообщение · #23 Archer пишет: Гипервизор прекрасно работает например в распаковке Полностью согласен, как и с тем, что его можно много для чего использовать. Главное чтоб инструмент существовал "физически". В любом случае на данный момент все задачи (распаковка, анализ, взлом) решены. Какие-то с бОльшим уровнем автоматизма, какие-то с меньшим. Следовательно, если пилить какой-то инструмент, то он должен упрощать решение задачи. А тут мы видим, что человек пытается в одиночку, да еще "в гамаке и стоя" (асм) реализовать очень сложную тулзу. Смысл этих действий мне не понятен. Возможно для него это just for fun, но тогда зачем критиковать то, что делают другие? К примеру тот же XVolkolak. Причем он сам же говорит о том, что не знает как решить некоторые проблемы. В связи с этим, его визор на данный момент выглядит как философский камень, который он пытается получить и убеждает других, что это правильный путь. А может не правильный? В теории то всё красиво и интересно. Я уже говорил, что если он реализует свои задумки, то ему можно будет памятник поставить. Причем я очень хочу, чтоб у него всё получилось. Только пока это всё реально выглядит как страдания средневековых алхимиков. |
|
Создано: 23 июля 2018 14:34 · Личное сообщение · #24 f13nd пишет: У меня сложилось впечатление, что в человеке происходит борьба рационального (пора взрослеть наверное и заниматься чем-то что материальную выгоду приносит, так что вот вам идея, а я умываю руки) и иррационального (доказать что все вокруг неправы, поэтому еще пару лет надо потратить на монстра франкенштейна, который в итоге будучи перегруженный логикой окажется как минимум не лучше эмуляции) и он между этими двумя крайностями мечется и никак не может решиться. не совсем так в какие-то года на васме, он генерил всякий разный интересный контент и его слушали и учились тоже но IT стремительно развивается, а индий застыл на месте, хотя тоже немного развивается ( ибо раньше слова типа dbi вызывали у него лютый батхерт ) просто у него закостенелое мышление и неспособность использовать и абсорбировать новые знания а новые знания в такой быстро развивающейся области как IT плодятся с невообразимой скоростью поэтому индий и не может вырваться из while (1) цикла, где на pentium 4 индевском процессоре гонятся в бесконечном цикле его ЧСВ (вы все овощи и школота, а я елита ), желание быть умнее всех зная только асм и прочий устаревший шлак и современные задачи которые он не может осилить ( поиск уязвимостей ) И эта неспособность осилить задачи + ЧСВ ( я то могу, это вы все говно и нубы ) + устаревшие технологии которыми он владеет ( gpe визоры и прочее асм говно ) + вкусные норкотеки просто вырубает встроенный нейроиндепроцессор в triple fault. Отсюда и ответы типа я все придумал, но реализовать пока не могу(много других дел и вкусного пива) - приходите позже. |
|
Создано: 23 июля 2018 14:51 · Поправил: f13nd · Личное сообщение · #25 SegFault пишет: я то могу, это вы все говно и нубы difexacaw пишет: Я забыл когда последний раз открывал отладчик - вы не сможете на должном уровне листаль код как я, на это нужны десятилетия. Ну есть мальца Но мне показалось, что он пытается ну хоть кого-нибудь заинтересовать этим, навязать, чтоб сделали за него. Не забывая конечно лицом поторговать при этом Так что: IEatDead пишет: Делай что делаешь, никого не слушай. Видно, что реальных умений больше чем у большинства балаболов. ----- 2 оттенка серого |
|
Создано: 23 июля 2018 16:34 · Личное сообщение · #26 f13nd вся беда в том что от индея раньше проскакивали идейки интересные( часто скарженные у ионеску/zomбы или pg или свои ), но сейчас эта каша из собственных выдуманных терминов и неспособности дать конечный продукт коммунити приводит к тому, что автор балабол как раз. И самое страшное, что вот дби он запилит. Но что выберет конечный пользователь, его не обкатанное анстаб нечто, или интеловский пин/DynamoRIO скажем? Помоему выбор очевиден. |
|
Создано: 23 июля 2018 16:45 · Личное сообщение · #27 SegFault пишет: только асм и прочий устаревший шлак С каких пор асм приписали к устаревшему шлаку? SegFault пишет: прочее асм говно Если для вас асм сложен, это не значит, что он говно. P.S. Обосрать можно все. Было бы желание | Сообщение посчитали полезным: hypn0 |
|
Создано: 23 июля 2018 16:50 · Личное сообщение · #28 |
|
Создано: 23 июля 2018 16:56 · Личное сообщение · #29 |
|
Создано: 23 июля 2018 17:07 · Личное сообщение · #30 BlackCode пишет: SegFault пишет: только асм и прочий устаревший шлак С каких пор асм приписали к устаревшему шлаку? SegFault пишет: прочее асм говно Если для вас асм сложен, это не значит, что он говно. P.S. Обосрать можно все. Было бы желание ты не понял, знать его надо, использовать и совать везде и всюду как это делает индей не надо. у него асм религия, а для большинства это даже не средство |
|
Создано: 23 июля 2018 17:16 · Личное сообщение · #31 SegFault пишет: а для большинства это даже не средство Профессиональный инструмент в любой области обычно используется немногими, но от этого он не становится "шлаком". В принципе понятно почему большинство предпочитают не ссать против ветра и выбирают известно_что вместо асма, но выражаясь словами Кирпича "когда я бросаю собаке кость, мне не интересно нравится ли она собаке". Когда и если этот самый визор окажется неповторимым шедевром, вопрос о языке будет второстепенным. ----- 2 оттенка серого |
<< . 1 . 2 . 3 . >> |
eXeL@B —› Программирование —› Visor2. |
Эта тема закрыта. Ответы больше не принимаются. |