Я не эксперт в ИИ. И декомпилировал немного: одну небольшую dll-ку по работе и пару древних игрушек для души.
Подумалось: декомпиляция — хорошее приложение для нейросетей.
Перевести машинный код во что-то структурное и компилябельное это задача относительно простая. Вся сложность в том, чтобы назвать переменные и функции своими именами.
Смотишь на код, находишь знакомые алгоритмы, паттерны — переименовываешь соответствующие переменные и функции и так пока код не станет идеальным
Поиск знакомых кусков кода можно доверить железу. Вопрос — как его обучить...
Чат гопоты ChatGPT справится с такой задачей или нужно что-то специализированное? (Кто-то писал, что ему скормили весь гитхаб).
Я думаю, что ChatGPT умеет делать то, на чём обучался. Что-то мне подсказывает, что в его примерах было не так уж много статей по декомпиляции, чтобы стать в этом мастером.
Но в целом идея, наверное, рабочая. Только нужно тренировать какую-то специализированную сеть. К примеру компилируя всевозможные фрагменты кода с гитхаба, и скармливая выхлоп сети. Впрочем я в этом всём не спец, может и чушь несу.
Здравствуйте, BSOD, Вы писали:
BSO>Поиск знакомых кусков кода можно доверить железу. Вопрос — как его обучить...
С одной стороны, решение очевидно — взять исходный код, на котором обучали до этого, скомпилировать и обучить на паре код-инструкции. Но с другой стороны — если рассматривать различные архитектуры (даже в пределах amd64, ARM я даже не беру), то количество вариантов взрывается экспоненциально. Кроме того, современный машинный код после оптимизаторов можно рассматривать как процесс сжатия информации, и вариантов разжатия может быть больше одного.
Здравствуйте, cppguard, Вы писали: C>Но с другой стороны — если рассматривать различные архитектуры (даже в пределах amd64, ARM я даже не беру), то количество вариантов взрывается экспоненциально.
Так и обучать можно не одну сеть, а на каждую архитектуру свою. C>Кроме того, современный машинный код после оптимизаторов можно рассматривать как процесс сжатия информации, и вариантов разжатия может быть больше одного.
А какая разница, сколько там вариантов может быть? Главное же логику понять. Я уже приводил этот пример, что может делать с кодом ChatGPT:
Здравствуйте, cppguard, Вы писали:
C>С одной стороны, решение очевидно — взять исходный код, на котором обучали до этого, скомпилировать и обучить на паре код-инструкции. Но с другой стороны — если рассматривать различные архитектуры (даже в пределах amd64, ARM я даже не беру), то количество вариантов взрывается экспоненциально. Кроме того, современный машинный код после оптимизаторов можно рассматривать как процесс сжатия информации, и вариантов разжатия может быть больше одного.
Я, собственно, о другом. Не о преобразовании машинного кода в сишный. А о преобразовании сишного кода в конфетку. То есть на входе допустим
В примере я идентификаторы специально сделал максимально многословными. Хорошо, чтобы многословность реального продукта могла бы настраиваться и зависела бы от сложности.
С преобразованием машинного кода в сишный обычные, не слишком интеллектуальные проги худо-бедно справляются (HexRays и др.). Я вообще про обычный, промышленный код без особых хакерских трюков.
Но вообще говоря ты прав. Оптимизаторы могут искажают код, и задача "деоптимизации" тоже не будет лишней
Здравствуйте, BSOD, Вы писали:
BSO>Привет.
BSO>Я не эксперт в ИИ.
по моему ни на что больше это ..
впрочем я не оспариваю, что ИИ довольно удачно сработает в сатистическом анализе, но "вкуривать" оно никак
Здравствуйте, vsb, Вы писали:
vsb>Я думаю, что ChatGPT умеет делать то, на чём обучался. Что-то мне подсказывает, что в его примерах было не так уж много статей по декомпиляции, чтобы стать в этом мастером.
Мастером или нет, но довольно сносно декомпилирует х86 и арм. А ещё умеет писать код для Frida (фреймворк для хуков с API на JS). Конечно, не без косяков (как и в других сферах). В общем, эдакий продвинутый джун, за которым нужно вдумчиво проверять.
Здравствуйте, vsb, Вы писали:
vsb>Что-то мне подсказывает, что в его примерах было не так уж много статей по декомпиляции, чтобы стать в этом мастером.
ChatGPT работает не так. Есть эпичная свежая статья Стивена нашего Вольфрама, рекомендую ознакомиться. Этот Т9-переросток просто подставляет слова в соответствии с вероятностями, и иногда игнорирует веса, чтобы получалось более естественно. "Обучение" на статьях по декомпиляции сводится к созданию базы весов, руководствуясь которой ChatGPT может подбирать слова таким образом, чтобы получались предложения, похожие на написанные авторами статей по декомпиляции. Всё! Каким ещё "стать мастером"? Наше обучение на статьях и это т.н. "обучение" моделей — две большие разницы.
Здравствуйте, Alekzander, Вы писали:
vsb>>Что-то мне подсказывает, что в его примерах было не так уж много статей по декомпиляции, чтобы стать в этом мастером.
A>ChatGPT работает не так. Есть эпичная свежая статья Стивена нашего Вольфрама, рекомендую ознакомиться. Этот Т9-переросток просто подставляет слова в соответствии с вероятностями, и иногда игнорирует веса, чтобы получалось более естественно. "Обучение" на статьях по декомпиляции сводится к созданию базы весов, руководствуясь которой ChatGPT может подбирать слова таким образом, чтобы получались предложения, похожие на написанные авторами статей по декомпиляции. Всё! Каким ещё "стать мастером"? Наше обучение на статьях и это т.н. "обучение" моделей — две большие разницы.
А с чего ты взял, что человек работает не по этой же схеме?
Здравствуйте, vsb, Вы писали:
vsb>>>Что-то мне подсказывает, что в его примерах было не так уж много статей по декомпиляции, чтобы стать в этом мастером.
A>>ChatGPT работает не так. Есть эпичная свежая статья Стивена нашего Вольфрама, рекомендую ознакомиться. Этот Т9-переросток просто подставляет слова в соответствии с вероятностями, и иногда игнорирует веса, чтобы получалось более естественно. "Обучение" на статьях по декомпиляции сводится к созданию базы весов, руководствуясь которой ChatGPT может подбирать слова таким образом, чтобы получались предложения, похожие на написанные авторами статей по декомпиляции. Всё! Каким ещё "стать мастером"? Наше обучение на статьях и это т.н. "обучение" моделей — две большие разницы.
vsb>А с чего ты взял, что человек работает не по этой же схеме?
Перечитай написанное. Человек учится на текстах по декомпиляции заниматься декомпиляцией, а ChatGPT "учится" на текстах по декомпиляции генерировать тексты по декомпиляции. Вы нахватетесь верхушек и хайпуете потом, ИИ-ШМИИ, хоть бы обзорную статью посмотрели, что это и как оно устроено.
Здравствуйте, Alekzander, Вы писали:
A>Перечитай написанное. Человек учится на текстах по декомпиляции заниматься декомпиляцией, а ChatGPT "учится" на текстах по декомпиляции генерировать тексты по декомпиляции. Вы нахватетесь верхушек и хайпуете потом, ИИ-ШМИИ, хоть бы обзорную статью посмотрели, что это и как оно устроено.
Я эту статью читал, как работают эти модели, я знаю, и вопрос остаётся. С чего ты взял, что ты не так думаешь и что твой процесс обучения это не выставление весов в твоих нейронах, чтобы генерировать похожие тексты?
Здравствуйте, vsb, Вы писали:
A>>Перечитай написанное. Человек учится на текстах по декомпиляции заниматься декомпиляцией, а ChatGPT "учится" на текстах по декомпиляции генерировать тексты по декомпиляции. Вы нахватетесь верхушек и хайпуете потом, ИИ-ШМИИ, хоть бы обзорную статью посмотрели, что это и как оно устроено.
vsb>Я эту статью читал, как работают эти модели, я знаю, и вопрос остаётся. С чего ты взял, что ты не так думаешь и что твой процесс обучения это не выставление весов в твоих нейронах, чтобы генерировать похожие тексты?
Может ли в основе процесса декомпиляции лежать генерация текстов по образцу? Если бы это было осмысленное предположение, ты бы вывел теорию, и объяснил, как так получается. Но ты просто тычешь пальцем в небо и других путаешь: "Но в целом идея, наверное, рабочая". Если рабочая, объясни, как она работает. Если, конечно, ты не генератор рандомных текстов по хайповому образцу.