Идея: ИИ для декомпиляции
От: BSOD  
Дата: 20.04.23 12:09
Оценка: +2 :))
Привет.

Я не эксперт в ИИ. И декомпилировал немного: одну небольшую dll-ку по работе и пару древних игрушек для души.

Подумалось: декомпиляция — хорошее приложение для нейросетей.
Перевести машинный код во что-то структурное и компилябельное это задача относительно простая. Вся сложность в том, чтобы назвать переменные и функции своими именами.

Смотишь на код, находишь знакомые алгоритмы, паттерны — переименовываешь соответствующие переменные и функции и так пока код не станет идеальным

Поиск знакомых кусков кода можно доверить железу. Вопрос — как его обучить...

Чат гопоты ChatGPT справится с такой задачей или нужно что-то специализированное? (Кто-то писал, что ему скормили весь гитхаб).

Обсудите
Sine vilitate, sine malitiosa mente
Re: Идея: ИИ для декомпиляции
От: vsb Казахстан  
Дата: 20.04.23 12:18
Оценка:
Я думаю, что ChatGPT умеет делать то, на чём обучался. Что-то мне подсказывает, что в его примерах было не так уж много статей по декомпиляции, чтобы стать в этом мастером.

Но в целом идея, наверное, рабочая. Только нужно тренировать какую-то специализированную сеть. К примеру компилируя всевозможные фрагменты кода с гитхаба, и скармливая выхлоп сети. Впрочем я в этом всём не спец, может и чушь несу.
Re: Идея: ИИ для декомпиляции
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 20.04.23 13:40
Оценка: 9 (1)
Здравствуйте, BSOD, Вы писали:

BSO>Обсудите


Уверен, что антивирусные и около того конторы таким занимаются уже очень давно. Positive technologies, например
Re: Идея: ИИ для декомпиляции
От: kov_serg Россия  
Дата: 20.04.23 17:06
Оценка: +1
Здравствуйте, BSOD, Вы писали:

...
BSO>Обсудите

Re[2]: Идея: ИИ для декомпиляции
От: BSOD  
Дата: 20.04.23 17:08
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Image: a06376f4b5c17034366bc16e2eee617c.jpg

Метафора не понятна
Sine vilitate, sine malitiosa mente
Re: Идея: ИИ для декомпиляции
От: cppguard  
Дата: 20.04.23 20:40
Оценка:
Здравствуйте, BSOD, Вы писали:

BSO>Поиск знакомых кусков кода можно доверить железу. Вопрос — как его обучить...

С одной стороны, решение очевидно — взять исходный код, на котором обучали до этого, скомпилировать и обучить на паре код-инструкции. Но с другой стороны — если рассматривать различные архитектуры (даже в пределах amd64, ARM я даже не беру), то количество вариантов взрывается экспоненциально. Кроме того, современный машинный код после оптимизаторов можно рассматривать как процесс сжатия информации, и вариантов разжатия может быть больше одного.
Re[2]: Идея: ИИ для декомпиляции
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 20.04.23 21:33
Оценка: 2 (1)
Здравствуйте, cppguard, Вы писали:

C>Но с другой стороны — если рассматривать различные архитектуры (даже в пределах amd64, ARM я даже не беру), то количество вариантов взрывается экспоненциально.


Так и обучать можно не одну сеть, а на каждую архитектуру свою.

C>Кроме того, современный машинный код после оптимизаторов можно рассматривать как процесс сжатия информации, и вариантов разжатия может быть больше одного.


А какая разница, сколько там вариантов может быть? Главное же логику понять. Я уже приводил этот пример, что может делать с кодом ChatGPT:
  картинка
Re[2]: Идея: ИИ для декомпиляции
От: BSOD  
Дата: 20.04.23 21:54
Оценка:
Здравствуйте, cppguard, Вы писали:

C>С одной стороны, решение очевидно — взять исходный код, на котором обучали до этого, скомпилировать и обучить на паре код-инструкции. Но с другой стороны — если рассматривать различные архитектуры (даже в пределах amd64, ARM я даже не беру), то количество вариантов взрывается экспоненциально. Кроме того, современный машинный код после оптимизаторов можно рассматривать как процесс сжатия информации, и вариантов разжатия может быть больше одного.


Я, собственно, о другом. Не о преобразовании машинного кода в сишный. А о преобразовании сишного кода в конфетку. То есть на входе допустим
int func0042(char *arg1, int arg2)
{
    char local0001[16];
    char *local0002;

    itoa(arg2, local0001, 10);
    local0002 = strstr(arg1, local0001);
    if(!local0002)
        return -1;
    return local0002-arg1;
}


а на выходе — что-то вроде
int FindIndexOfDecimalValueInTheString(const char *source_string, int value_to_find)
{
    char buffer_for_value_converted_to_string[TYPICAL_BUFFER_SIZE_FOR_ITOA];
    char *pointer_to_first_position_of_value;

    itoa(value_to_find, buffer_for_value_converted_to_string, 10);
    pointer_to_first_position_of_value = strstr(source_string, buffer_for_value_converted_to_string);
    if(!pointer_to_first_position_of_value)
        return NOT_FOUND_MAGIC;
    return pointer_to_first_position_of_value-source_string;
}

В примере я идентификаторы специально сделал максимально многословными. Хорошо, чтобы многословность реального продукта могла бы настраиваться и зависела бы от сложности.

С преобразованием машинного кода в сишный обычные, не слишком интеллектуальные проги худо-бедно справляются (HexRays и др.). Я вообще про обычный, промышленный код без особых хакерских трюков.

Но вообще говоря ты прав. Оптимизаторы могут искажают код, и задача "деоптимизации" тоже не будет лишней
Sine vilitate, sine malitiosa mente
Отредактировано 20.04.2023 21:55 BSOD . Предыдущая версия .
Re: Идея: ИИ для декомпиляции
От: токсичный ботан(ыч)? Интернет https://youtu.be/I3lhN5CUP2M
Дата: 12.05.23 15:27
Оценка:
Здравствуйте, BSOD, Вы писали:

BSO>Привет.


BSO>Я не эксперт в ИИ.

по моему ни на что больше это ..
впрочем я не оспариваю, что ИИ довольно удачно сработает в сатистическом анализе, но "вкуривать" оно никак
Re: Идея: ИИ для декомпиляции
От: reversecode google
Дата: 12.05.23 15:30
Оценка: -1
мониторьте нужные ресурсы
уже выкладывали где то на гитхабе

я не проверял
но в целом такая идея УГ
Re[2]: Идея: ИИ для декомпиляции
От: BSOD  
Дата: 12.05.23 17:11
Оценка: +1
Здравствуйте, reversecode, Вы писали:

R>я не проверял

R>но в целом такая идея УГ
А обосновать?
Обзываться я тоже могу...
Sine vilitate, sine malitiosa mente
Re[2]: Идея: ИИ для декомпиляции
От: flаt  
Дата: 13.05.23 07:06
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Я думаю, что ChatGPT умеет делать то, на чём обучался. Что-то мне подсказывает, что в его примерах было не так уж много статей по декомпиляции, чтобы стать в этом мастером.


Мастером или нет, но довольно сносно декомпилирует х86 и арм. А ещё умеет писать код для Frida (фреймворк для хуков с API на JS). Конечно, не без косяков (как и в других сферах). В общем, эдакий продвинутый джун, за которым нужно вдумчиво проверять.
Re[3]: Идея: ИИ для декомпиляции
От: reversecode google
Дата: 13.05.23 09:24
Оценка: :)
после более 20 лет в реверс инжинирнге мне обоснования не нужны
но вы можете их продолжать искать
Re[2]: Идея: ИИ для декомпиляции
От: sergey2b ЮАР  
Дата: 16.05.23 01:59
Оценка:
Ms даже исходники и модели выкладывала
Re[2]: Идея: ИИ для декомпиляции
От: Alekzander Россия  
Дата: 06.06.23 01:52
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Что-то мне подсказывает, что в его примерах было не так уж много статей по декомпиляции, чтобы стать в этом мастером.


ChatGPT работает не так. Есть эпичная свежая статья Стивена нашего Вольфрама, рекомендую ознакомиться. Этот Т9-переросток просто подставляет слова в соответствии с вероятностями, и иногда игнорирует веса, чтобы получалось более естественно. "Обучение" на статьях по декомпиляции сводится к созданию базы весов, руководствуясь которой ChatGPT может подбирать слова таким образом, чтобы получались предложения, похожие на написанные авторами статей по декомпиляции. Всё! Каким ещё "стать мастером"? Наше обучение на статьях и это т.н. "обучение" моделей — две большие разницы.

P.S. Статья: https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-doing-and-why-does-it-work/
Отредактировано 06.06.2023 1:58 Alekzander . Предыдущая версия .
Re[3]: Идея: ИИ для декомпиляции
От: vsb Казахстан  
Дата: 06.06.23 06:30
Оценка:
Здравствуйте, Alekzander, Вы писали:

vsb>>Что-то мне подсказывает, что в его примерах было не так уж много статей по декомпиляции, чтобы стать в этом мастером.


A>ChatGPT работает не так. Есть эпичная свежая статья Стивена нашего Вольфрама, рекомендую ознакомиться. Этот Т9-переросток просто подставляет слова в соответствии с вероятностями, и иногда игнорирует веса, чтобы получалось более естественно. "Обучение" на статьях по декомпиляции сводится к созданию базы весов, руководствуясь которой ChatGPT может подбирать слова таким образом, чтобы получались предложения, похожие на написанные авторами статей по декомпиляции. Всё! Каким ещё "стать мастером"? Наше обучение на статьях и это т.н. "обучение" моделей — две большие разницы.


А с чего ты взял, что человек работает не по этой же схеме?
Re[4]: Идея: ИИ для декомпиляции
От: Alekzander Россия  
Дата: 06.06.23 14:32
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>>>Что-то мне подсказывает, что в его примерах было не так уж много статей по декомпиляции, чтобы стать в этом мастером.


A>>ChatGPT работает не так. Есть эпичная свежая статья Стивена нашего Вольфрама, рекомендую ознакомиться. Этот Т9-переросток просто подставляет слова в соответствии с вероятностями, и иногда игнорирует веса, чтобы получалось более естественно. "Обучение" на статьях по декомпиляции сводится к созданию базы весов, руководствуясь которой ChatGPT может подбирать слова таким образом, чтобы получались предложения, похожие на написанные авторами статей по декомпиляции. Всё! Каким ещё "стать мастером"? Наше обучение на статьях и это т.н. "обучение" моделей — две большие разницы.


vsb>А с чего ты взял, что человек работает не по этой же схеме?


Перечитай написанное. Человек учится на текстах по декомпиляции заниматься декомпиляцией, а ChatGPT "учится" на текстах по декомпиляции генерировать тексты по декомпиляции. Вы нахватетесь верхушек и хайпуете потом, ИИ-ШМИИ, хоть бы обзорную статью посмотрели, что это и как оно устроено.
Re[5]: Идея: ИИ для декомпиляции
От: vsb Казахстан  
Дата: 07.06.23 07:00
Оценка:
Здравствуйте, Alekzander, Вы писали:

A>Перечитай написанное. Человек учится на текстах по декомпиляции заниматься декомпиляцией, а ChatGPT "учится" на текстах по декомпиляции генерировать тексты по декомпиляции. Вы нахватетесь верхушек и хайпуете потом, ИИ-ШМИИ, хоть бы обзорную статью посмотрели, что это и как оно устроено.


Я эту статью читал, как работают эти модели, я знаю, и вопрос остаётся. С чего ты взял, что ты не так думаешь и что твой процесс обучения это не выставление весов в твоих нейронах, чтобы генерировать похожие тексты?
Re[6]: Идея: ИИ для декомпиляции
От: Alekzander Россия  
Дата: 09.06.23 22:07
Оценка:
Здравствуйте, vsb, Вы писали:

A>>Перечитай написанное. Человек учится на текстах по декомпиляции заниматься декомпиляцией, а ChatGPT "учится" на текстах по декомпиляции генерировать тексты по декомпиляции. Вы нахватетесь верхушек и хайпуете потом, ИИ-ШМИИ, хоть бы обзорную статью посмотрели, что это и как оно устроено.


vsb>Я эту статью читал, как работают эти модели, я знаю, и вопрос остаётся. С чего ты взял, что ты не так думаешь и что твой процесс обучения это не выставление весов в твоих нейронах, чтобы генерировать похожие тексты?


Может ли в основе процесса декомпиляции лежать генерация текстов по образцу? Если бы это было осмысленное предположение, ты бы вывел теорию, и объяснил, как так получается. Но ты просто тычешь пальцем в небо и других путаешь: "Но в целом идея, наверное, рабочая". Если рабочая, объясни, как она работает. Если, конечно, ты не генератор рандомных текстов по хайповому образцу.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.