Сейчас на форуме: (+5 невидимых) |
eXeL@B —› Программирование —› Свёртка. |
<< . 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 02 мая 2019 17:22 · Личное сообщение · #1 Тут исходный материал Я взял EP модуля, обработанного вмп и вручную почистил мусор. Это мелкая тех задача, я её решу на днях(те проблема с кседом и нужно продумать алгоритмы по графам). Суть не в этом. Исходный код: Code:
После удаления мусора(если контекст сбрасывается, то предыдущая цепочка cfg мусорная, те clc/cmp -> clc мусор, так как EF.CF функция утеряна). Code:
Этого примера более чем достаточно что бы понять всю обработку, которую необходимо выполнить. В этом примере два блока с bswap. Это некоторая последовательность простых операций, которая известна и её нужно свернуть, те упростить. Vamit сделал это через хардкод всех таких конструкций. Это чистая математика, как сворачивать такие выражения, учитывая что там не просто функции, а булевый ксор и тп ? Помогут в этом ли солверы, я их не использовал никогда ? В простейшем случае такие блоки можно выполнить с нулевым аргументом, это без учёта условий. ----- vx |
|
Создано: 03 мая 2019 17:50 · Личное сообщение · #2 Vamit > Да пошел ты в жопу, у меня всё решено и работает в автомате Судя по всему это станет не актуальным. Колхозить десять лет какие то макросы вм, утверждать что решение не возможно, не смотря на то что операции с константами - это просто ппц. Я услышал достаточно, не обижайтесь. В любом случае спасибо вам за попытку помощи. Я жду ответа людей, которые могут реально дать оценку по задаче. ----- vx |
|
Создано: 03 мая 2019 17:51 · Личное сообщение · #3 |
|
Создано: 03 мая 2019 17:54 · Личное сообщение · #4 |
|
Создано: 03 мая 2019 18:53 · Личное сообщение · #5 Бгг, конец темы немного предсказуем. Вы удивляете, серьезно, столько лет наступать на одни и теже грабли. Запомните раз и навсегда - любая тема этого пациента предназначена для самоутверждения, а уж вступать с ним в дискас в "его" теме это вообще за гранью, все кончится всегда тем что вы будете идиотами, аверами, жидами итд в зависимости от его тренда |
|
Создано: 03 мая 2019 20:40 · Личное сообщение · #6 difexacaw пишет: Общее решение будет возможно если найти решение этой задачи. И это только начало поиска. Не работал я ранее с гибридными уравнениями. Предлагаю составить список нерешеных задач тысячелетия для difexacaw и периодически задавать ему вопросы связаные с их решением: 1. Готов ли ваш микроскоп. 2. Видно ли через него ваше решение гибридных уравнений. Вопросы будут добавляться по мере поступления новых нерешенных difexacaw-задач тысячелетия. |
|
Создано: 03 мая 2019 20:42 · Поправил: mak · Личное сообщение · #7 difexacaw Вамит старше тебя) прояви сдержанность! Vamit пишет: Да пошел ты в жопу, у меня всё решено и работает в автомате Никто ведь и не сомневается! У тебя отличный проект! Просто есть два пути решения, первый реверсивный(Как у тебя), второй я не знаю как назвать, я назвал его Chaos Deobfuscating хотя смысл простой "грубая трансформация", а далее .. Первый вариант -упрощённая лента трансформации: BinCode - PseudoCode - VMhaendlers - Polymorph - Metamorph - Antidebug - Obfuscation Reverse engineering - обратная задача ... Reversing - Obfuscation - Antidebug - Metaporph - Polymorph - VMHaendlers - PseudoCode - BinCode Второй вариант, требует очень продвинутого оптимизатора, очень означает, что он умеет делать с кодом чудеса, перебирать код на части, даже если он накрыт криптованными участками (Это не миф, такой есть) Chaos Deobfuscating "грубая трансформация" - Code Unrolling - Code Expand - AntidebugFix - Optimizer - Analysis - Optimizer - Binary Code Всё это сводится к теме - Структурное программирование Теорема Бёма — Якопини Великая игра в трансформацию как говорят криптографы Vamit пишет: Обыкновенный ВМ-ый полиморф Да как угодно назови, только суть от этого не меняется, причем у каждого типа вм он свой, независимо от того цикловая вм или безцикловая. У некоторых вм его формула постоянна, а у других вариативна. Полиморф это и означает, для меня это ясность .. а ясность для проектменеджмента решающий фактор успеха, да и можно применить технику для полиморфного кода) как ты применил эмулятор а у других вариативна Это ложная вариативность она базируется на вложенных трансформациях. Я не просто привёл пример с графом в пдф, так как через такой метод формула становится статичной, а все операции можно разделить на простые превращения. Я говорю без наезда, что это возможно и реально .. но к твоей технике не имеет отношения) у меня всё решено Это не аргумент когда хочется разобрать логику ... т.к. difexacaw задался вопросом, возможно ли построить абстрактный уровень декомпиляции, при этом я считаю, что он в точку определил основную суть атаки на NAND логику. Оптимизация логических гейтов классическая задача инженерного искусства, общим решением для любой вм будет "грубая трансформация" через оптимизатор, в который встроены две компоненты - это Code Unrolling + Code Expand и Универсальный решатель НАНД логики, в таком случае это даже упрощает задачу, т.к. грубый перебор оптимизации превращается в элегантный набор инструментов. Вот банальный пример из книги Nabila Abdessaied, Rolf Drechsler (auth.) - Reversible and Quantum Circuits_ Optimization and Complexity Analysis-Springer International Publishing (2016), там не всё полезно, но суть понятна .. Логика решателя должна быть такой - 1. разбиение на простые логические операции 2. Построение графа операций 3. Оптимизация - Применение правил симплификации (Упрощение) 4. Проверка на конечную законченную оптимизацию и финализация ... Сам граф будет выглядеть примерно так (взято из книги Martin Kumm (auth.) - Multiple Constant Multiplication Optimizations for Field Programmable Gate Arrays-Springer Vieweg (2016)) В итоге операции типа Code:
Сворачиваются в Code:
как это сделано у китайских друзей ... потом применяется оптимизатор и всё ВМка в ж...пе Поэтому друзья, пожалуйста не ругайтесь, конкретика + попытка понять оппонента сделает форум читабильным, никто не требует решений без ошибок или идеальных размышлений. Всем мир! Писс ... ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube | Сообщение посчитали полезным: dma, lx60, difexacaw, DenCoder, Orlyonok, Williams |
|
Создано: 04 мая 2019 17:30 · Поправил: difexacaw · Личное сообщение · #8 mak > Вамит старше тебя) прояви сдержанность! Верно, просто он столь уверен в своём инструменте, что ничего не хочет слушать и всё считает невозможным. А это не так. Я пытался найти два дока на которые вы ссылаетесь, но во первых они не доступны(один есть у гугла), а во вторых это инфа вроде бы как по железу(логические матрицы ?). Важно что хоть кто то не считает решение невозможным Я тут подумал над алгоритмами. Получается вот что. Изначально мне было не ясно как саму чистку реализовать, те я думал как связать cfg и dfg. Это было ошибкой. Некоторая функция зависит от предыдущей, те связать обратными ссылками нельзя. Инструкция может быть процедурой(те частью её). Механизм получается прост. Для текущей инструкции определяется изменяемый контекст. Далее парсим cfg от текущего места и определяем что все части контекста не использованы и при этом небыло завершения процедур. Если это так, то инструкцию удаляем и перезапускаем скан. Так будет удалён весь не связанный мусор. Далее функции. Всякая функция константы является константой. Тогда определяем что инструкция использует константу, выполняем функцию(операцию) и заменяем ей(новой константой) текущую операцию, после чего перезапускаем скан. После множества итераций код будет свёрнут. При этом придётся использовать наследование в памяти. Эту часть есчо нужно проработать. ----- vx | Сообщение посчитали полезным: mak |
|
Создано: 05 мая 2019 09:27 · Личное сообщение · #9 difexacaw пишет: Всякая функция константы является константой. мысли сходятся... Добавлено спустя 24 минуты Кстати, ещё в 2004 я над этим работал... В электричках записывал мысли в блокнотик ) И если б не безденежье, если б не бабы, то уже сейчас было бы об этом смешно говорить. Извините сразу - похоже на самохвальство, но сказанное мной - правда. А так великие помехи этому - 2005, 2006 - 2015, Заказы в 2016, 2017-2018, периодически "ненормальные" друзья... В конце концов главная помеха, что я это ещё не сделал 15 лет назад - я сам!!! Не надо было менять приоритеты... ----- IZ.RU |
|
Создано: 05 мая 2019 11:24 · Поправил: mak · Личное сообщение · #10 difexacaw пишет: это инфа вроде бы как по железу(логические матрицы ?) Да! difexacaw пишет: Я пытался найти два дока на которые вы ссылаетесь, но во первых они не доступны(один есть у гугла) Вот линк на коллекцию книг 265.2 MB - Мне нужен был быстрый пример, я взял что было под рукой, эти техники применяют чаще в железе .. В папке Logic Gates - лежат обе книги. Вдобавок - Switching Theory: Insight through Predicate Logic Randy H. Katz, Gaetano Borriello - Contemporary Logic Design-Prentice Hall (2004) difexacaw пишет: Механизм получается прост. Для текущей инструкции определяется изменяемый контекст. Далее парсим cfg от текущего места и определяем что все части контекста не использованы и при этом небыло завершения процедур. Если это так, то инструкцию удаляем и перезапускаем скан. Так будет удалён весь не связанный мусор. Да. difexacaw пишет: Далее функции. Всякая функция константы является константой. Тогда определяем что инструкция использует константу, выполняем функцию(операцию) и заменяем ей(новой константой) текущую операцию, после чего перезапускаем скан. В точку DenCoder пишет: Кстати, ещё в 2004 я над этим работал... В электричках записывал мысли в блокнотик ) И если б не безденежье, если б не бабы, то уже сейчас было бы об этом смешно говорить. Извините сразу - похоже на самохвальство, но сказанное мной - правда. А так великие помехи этому - 2005, 2006 - 2015, Заказы в 2016, 2017-2018, периодически "ненормальные" друзья... В конце концов главная помеха, что я это ещё не сделал 15 лет назад - я сам!!! Не надо было менять приоритеты... Двойной инсайт ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube |
|
Создано: 05 мая 2019 13:18 · Личное сообщение · #11 difexacaw пишет: Механизм получается прост Что правда? Помнится в action=vthread&forum=13&topic=24981 я озвучила это самое решение Помнится ты еще раздавал мне там глупые советы, видимо практика от теории далека А насчет вамита тебе лучше ему не хамить, потому что этот чел писал декомпиль си, не только вм И в отличии от тебя если он что-то говорит, значит это уже реализовано и работает ----- В облачке многоточия | Сообщение посчитали полезным: DenCoder |
|
Создано: 05 мая 2019 13:56 · Поправил: difexacaw · Личное сообщение · #12 Boostyq Это очевидный механизм, использовался есчо задолго до тебя для свёртки обработчиков исключений. Та твоя тема хз о чём, тоесть не определена задача и ты сама не знаешь что решаешь. Теже флаги например - ксед всю эту инфу возвращает как и регистры, зачем велосипед изобретать. e9a3_05.05.2019_EXELAB.rU.tgz - 29.png ----- vx |
|
Создано: 05 мая 2019 14:05 · Личное сообщение · #13 |
|
Создано: 05 мая 2019 14:09 · Личное сообщение · #14 |
|
Создано: 05 мая 2019 14:14 · Личное сообщение · #15 |
|
Создано: 05 мая 2019 14:19 · Личное сообщение · #16 f13nd Понятия не имею. Дело не в конкретной функции, это первая взятая выборочно. Нужно как то решать произвольные функции, если свернуть можно, то значит свёртывается, иначе остаётся как есть. Как это сделать пока никто не сказал. То что можно свернуть и ксор в данном случае, так это потому что функция от константы. ----- vx |
|
Создано: 05 мая 2019 14:25 · Личное сообщение · #17 |
|
Создано: 05 мая 2019 14:31 · Личное сообщение · #18 |
|
Создано: 05 мая 2019 14:35 · Поправил: difexacaw · Личное сообщение · #19 |
|
Создано: 05 мая 2019 15:10 · Личное сообщение · #20 |
|
Создано: 05 мая 2019 15:13 · Личное сообщение · #21 |
|
Создано: 05 мая 2019 16:01 · Личное сообщение · #22 Индий я смотрю на вас напали овощи довайте я вам помогу просто скомпелируйте очередной мотор и объявите что вмпрот повержен вы же так победили уже все протекторы | Сообщение посчитали полезным: dma |
|
Создано: 05 мая 2019 16:06 · Поправил: difexacaw · Личное сообщение · #23 SegFault > вы же так победили уже все протекторы Я решил общим способом задачу определения EP. Никто из вас это сделать не смог(и Vamit тоже кстате со своим рабочим инструментом только для вмп). > просто скомпелируйте очередной мотор и объявите что вмпрот повержен Разберусь и с этим, всему своё время. И на вмп свет клином не сошёлся как бы. ----- vx |
|
Создано: 05 мая 2019 16:06 · Личное сообщение · #24 |
|
Создано: 05 мая 2019 16:09 · Личное сообщение · #25 |
|
Создано: 05 мая 2019 16:17 · Личное сообщение · #26 |
|
Создано: 05 мая 2019 16:19 · Личное сообщение · #27 |
|
Создано: 05 мая 2019 16:20 · Поправил: difexacaw · Личное сообщение · #28 |
|
Создано: 05 мая 2019 16:24 · Личное сообщение · #29 |
|
Создано: 05 мая 2019 16:43 · Личное сообщение · #30 |
|
Создано: 05 мая 2019 16:50 · Личное сообщение · #31 |
<< . 1 . 2 . 3 . >> |
eXeL@B —› Программирование —› Свёртка. |
Эта тема закрыта. Ответы больше не принимаются. |