Re: Реально ли? (про реверсинг)
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 16.01.25 15:46
Оценка: 38 (1) +1 -1 :)
Здравствуйте, Философ, Вы писали:

Ф>Эти задачи возможно возложить на плечи ИИ? Он в таких делах сможет помочь?


В одном местном чатике коллега нарвался на то, что у него почему-то попортилась кодировка в файлах и вместо кириллицы сплошные '�'. Он решил скормить код такому ИИ и посмотреть, восстановит ли тот логику. Просто комментарии, по сишному (а не ассемблерному) — то есть задача на порядки проще.

Вот что ему копилот с чатгопотой восстановили: начало:
#define U_16      1     // U_16 == 1 это значение для 16-битного регистра !!!
#define U_detali  0     // Детали (+) это значение для подстройки 1V==217.81F === 12.0В=2614 Ом === 23.07.2018
#define U1_detali 0     // Детали (+) это значение для подстройки 1V==217.81F === 12.0В=2614 Ом === 23.07.2018
#define TimRA   0x01      // Пример настройки OCRx для таймера -- значение 1


А вот что было в оригинале:

#define U_16      1     // U_16 == 1 это Вариант для 16 симвю ЖКИ !!!

#define U_detali  0       // поправка (+) для АЦП из-за разброса деталей делителя 1V==217.81F === 12.0в=2614 АЦП === 23.07.2018
#define U1_detali 0       // поправка (+) для АЦП из-за разброса деталей делителя 1V==217.81F === 12.0в=2614 АЦП === 23.07.2018
#define TimRA   0x01      // Нижний предел величины OCRx таймера ШИМ -- для 1мкФ


Я боюсь себе представить, что эти цифровые духи нафантазируют на ассемблере без подсказок... им даже на несоответствие количества букв было плевать.
The God is real, unless declared integer.
Re[2]: Реально ли? (про реверсинг)
От: BSOD  
Дата: 21.02.25 18:03
Оценка: -2 :)
Здравствуйте, netch80, Вы писали:

N>В одном местном чатике коллега нарвался на то, что у него почему-то попортилась кодировка в файлах и вместо кириллицы сплошные '�'. Он решил скормить код такому ИИ и посмотреть, восстановит ли тот логику. Просто комментарии, по сишному (а не ассемблерному) — то есть задача на порядки проще.


Коллега сам дурак, верящий в чудеса. Вместо использования ИИ надо искать уцелевшие исходники и/или восстанавливать вручную.
Чтобы восстанавливать испоррченную кодировку нужны модели специально на это обученные, а также понимающие языки программирования и предметную область.
А иначе получится то что и получилось.

К теме декомпиляции твой пост имеет косвенное отношение.
Sine vilitate, sine malitiosa mente
Re: LLM4Decompile
От: BlackEric http://black-eric.lj.ru
Дата: 12.02.25 14:06
Оценка: 4 (1) +1
Здравствуйте, Философ, Вы писали:

LLM4Decompile

LLM4Decompile is the pioneering open-source large language model dedicated to decompilation. Its current version supports decompiling Linux x86_64 binaries, ranging from GCC's O0 to O3 optimization levels, into human-readable C source code. Our team is committed to expanding this tool's capabilities, with ongoing efforts to incorporate a broader range of architectures and configurations.
LLM4Decompile-End focuses on decompiling the binary directly. LLM4Decompile-Ref refines the pseudo-code decompiled by Ghidra.



LLM4Decompile – это открытая большая языковая модель, предназначенная для декомпиляции бинарного кода в удобочитаемый исходный код.
В текущей версии она способна преобразовывать двоичные файлы Linux x86_64, скомпилированные с уровнями оптимизации GCC от O0 до O3, обратно в человеко-читаемый код на языке C.


Сам не пробовал....
https://github.com/BlackEric001
Re: Реально ли? (про реверсинг)
От: Vzhyk2  
Дата: 27.12.24 12:24
Оценка: :)
Здравствуйте, Философ, Вы писали:

Ф>1) Одной из самых трудных задач при реверсинге — понять, что делает функция и соответственно её назвать.

Ф>2) Кроме того, бывают заинлайненные функции, где вместо call'ов используются безусловные переходы. Вот было бы круто их тоже выделять в виде функций.
Ф>3) Часто заинлайнейнная компилятором функция, прям без переходов, in place. Было бы круто найти в гигатоннах ассемблера похожий код и выделить его в функцию с директивой inline.

Ф>Эти задачи возможно возложить на плечи ИИ? Он в таких делах сможет помочь?

Можно. Собери датасет, а после обучи на нем разные сетки.
Какой-то результат получишь. После нам расскажешь о результатах.
И да, модели в стиле LLM лучше тренировать (один из примеров Llama)
Реально ли? (про реверсинг)
От: Философ Ад http://vk.com/id10256428
Дата: 27.12.24 07:10
Оценка:
1) Одной из самых трудных задач при реверсинге — понять, что делает функция и соответственно её назвать.
2) Кроме того, бывают заинлайненные функции, где вместо call'ов используются безусловные переходы. Вот было бы круто их тоже выделять в виде функций.
3) Часто заинлайнейнная компилятором функция, прям без переходов, in place. Было бы круто найти в гигатоннах ассемблера похожий код и выделить его в функцию с директивой inline.

Эти задачи возможно возложить на плечи ИИ? Он в таких делах сможет помочь?

----------
Я не профессиональный реверсер, если что. Мне за это деньги не платят. Так — балуюсь.
Всё сказанное выше — личное мнение, если не указано обратное.
Отредактировано 27.12.2024 7:12 Философ . Предыдущая версия . Еще …
Отредактировано 27.12.2024 7:12 Философ . Предыдущая версия .
Re: Реально ли? (про реверсинг)
От: Великий Реверс google
Дата: 27.12.24 07:14
Оценка:
https://rsdn.org/forum/ai/8509519
Автор: BSOD
Дата: 20.04.23
Re: Реально ли? (про реверсинг)
От: pva  
Дата: 05.01.25 12:38
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>1) Одной из самых трудных задач при реверсинге — понять, что делает функция и соответственно её назвать.

Думаю что сделают когда-нибудь, но нужен полноценный контекст, а не отдельные функции. Имя функции часто зависит от предметной области.

Ф>2) Кроме того, бывают заинлайненные функции, где вместо call'ов используются безусловные переходы. Вот было бы круто их тоже выделять в виде функций.

Ф>3) Часто заинлайнейнная компилятором функция, прям без переходов, in place. Было бы круто найти в гигатоннах ассемблера похожий код и выделить его в функцию с директивой inline.
п3 = п2. Это возможно только частично. Заинлайненные функции при оптимизации могут компилироваться в изоморфы, сохраняя семантику операции. Сюда же и всякие разворачивания циклов относятся и т.п.
Зачатки подобного функционала есть в IDA. Она умеет/-ла некоторые линейные блоки определять как memset/memcpy, как минимум. Но там это реализовано без всяких ИИ.

Ф>Эти задачи возможно возложить на плечи ИИ? Он в таких делах сможет помочь?

На текущий момент — только п1, вероятно, реализуем напрямую.
newbie
Re: Реально ли? (про реверсинг)
От: opfor  
Дата: 16.01.25 00:23
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>1) Одной из самых трудных задач при реверсинге — понять, что делает функция и соответственно её назвать.

Ф>2) Кроме того, бывают заинлайненные функции, где вместо call'ов используются безусловные переходы. Вот было бы круто их тоже выделять в виде функций.
Ф>3) Часто заинлайнейнная компилятором функция, прям без переходов, in place. Было бы круто найти в гигатоннах ассемблера похожий код и выделить его в функцию с директивой inline.

Ф>Эти задачи возможно возложить на плечи ИИ? Он в таких делах сможет помочь?


Ф>----------

Ф>Я не профессиональный реверсер, если что. Мне за это деньги не платят. Так — балуюсь.

я думаю появится достаточно скоро (если еще не). В GPT можно скормить код и спросить что он делает. Можно попросить придумать название для функции. Осталось сделать полноценную тулзу, дополнительно потренировав на автоматически сгенерированном датасете из исходного кода + соответствующиего ему дизассемблированного бинарника.
Re: Реально ли? (про реверсинг)
От: A13x США  
Дата: 13.02.25 22:29
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>...

Ф>Я не профессиональный реверсер, если что. Мне за это деньги не платят. Так — балуюсь.

Я для интереса пробовал на нескольких примерах и меня результат весьма впечатлил, вот для примера: https://chatgpt.com/share/67ae719a-6380-8012-ab16-0cbaf58053b2

Еще пробовал на примере, где была С-подобная функция со сложной математикой и без комментариев — и разбор функции с уточняющими вопросами весьма удивил.
Если давать достаточно обособленные примеры, результат может быть неплох.
Re: Реально ли? (про реверсинг)
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.02.25 12:01
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>Эти задачи возможно возложить на плечи ИИ? Он в таких делах сможет помочь?


Думаю, в этом они будут великолепны, так как могут анализировать горы данных за раз. Но придется специально натренировать сетку на примерах ассемблера и из чего он получался. А для этого нужно:
1. 100500 примеров.
2. Огромные вычислительные сетки для тренировки.

Так же разумно патинировать работу ИИ путём сращивания ИИ и готового софта для декомпиляции и человеком.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Реально ли? (про реверсинг)
От: BSOD  
Дата: 21.02.25 17:41
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>1) Одной из самых трудных задач при реверсинге — понять, что делает функция и соответственно её назвать.

...
Ф>Эти задачи возможно возложить на плечи ИИ? Он в таких делах сможет помочь?

Я о чем-то подобном писал полтора года назад
https://rsdn.org/forum/ai/8509519.flat
Автор: BSOD
Дата: 20.04.23

Причем больше развил тему.

Тогда идея не вызвала фурора, наверно опередила время.
Sine vilitate, sine malitiosa mente
Re[3]: Реально ли? (про реверсинг)
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 17.03.25 12:24
Оценка:
Здравствуйте, BSOD, Вы писали:

N>>В одном местном чатике коллега нарвался на то, что у него почему-то попортилась кодировка в файлах и вместо кириллицы сплошные '�'. Он решил скормить код такому ИИ и посмотреть, восстановит ли тот логику. Просто комментарии, по сишному (а не ассемблерному) — то есть задача на порядки проще.


BSO>Коллега сам дурак, верящий в чудеса. Вместо использования ИИ надо искать уцелевшие исходники и/или восстанавливать вручную.


"Был бы я таким умным, как моя жена завтра" (ц)

Он потом нашёл бэкап исходников, я как раз привёл его кусок как вторую цитату (ты мог бы это заметить, если бы внимательнее прочитал). Но на это по разным причинам ушла пара дней, а до того он думал, что потерял.

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

BSO>А иначе получится то что и получилось.
BSO>К теме декомпиляции твой пост имеет косвенное отношение.

Самое прямое. Декомпиляция, что человеком, что моделью, это определение логики и перевод её на другой язык. Есть код, надо понять его логику и описать так, чтобы это стало понятно человеку. Чем более высокоуровневый язык у конкретного кода, тем легче всем, и человеку, и модели, понимать логику происходящего. Точно так же и предметная область. Не зная, что делает вызов функции foo или запись в регистр по имени buka, нельзя понять, что происходит при выполнении.
Накачать конкретными данными конкретную модель — может, года через три и можно будет делать это достаточно дёшево, чтобы применять, как ТС. Но не сейчас.
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.