Разработка и ромхакинг > Ромхакинг
Нейросети в помощь ромхакерам - возможно ли такое?
(1/1)
Томахомэ:
В последнее время я с большим воодушевлением слежу за успехами в развитии нейросетевых технологий, и с выходом ChatGPT-4 задался вопросом - а доросли ли уже нейросети до того, чтобы им поручать такую сложную и трудоёмкую вещь, как реверс-энжинеринг ромов различных игр: вникание в смысл дизассемблированного кода, анализ принципов хранения игровых данных и их структуры, а также поиск способов преобразования их в удоборедактируемые форматы и обратно?
Dyons:
--- Цитата ---а доросли ли уже нейросети до того, чтобы им поручать такую сложную и трудоёмкую вещь
--- Конец цитаты ---
нет, не доросли, еще долго будешь ждать пока дорастут
paul_met:
--- Цитата: Томахомэ от 31 Марта 2023, 16:41:29 ---В последнее время я с большим воодушевлением слежу за успехами в развитии нейросетевых технологий, и с выходом ChatGPT-4 задался вопросом - а доросли ли уже нейросети до того, чтобы им поручать такую сложную и трудоёмкую вещь, как реверс-энжинеринг ромов различных игр: вникание в смысл дизассемблированного кода, анализ принципов хранения игровых данных и их структуры, а также поиск способов преобразования их в удоборедактируемые форматы и обратно?
--- Конец цитаты ---
Зачем самое интересное спихивать на нейросети? Пусть лучше продолжают заниматься качественным масштабированием и реконструкцией изображений в низком разрешении.
Rumata:
--- Цитата: Томахомэ от 31 Марта 2023, 16:41:29 ---вникание в смысл
--- Конец цитаты ---
o_0 И давно нейросети научились вникать в смысл?
MaxWooD:
--- Цитата: Томахомэ от 31 Марта 2023, 16:41:29 ---ромов различных игр: вникание в смысл дизассемблированного кода, анализ принципов хранения игровых данных и их структуры, а также поиск способов преобразования их в удоборедактируемые форматы и обратно
--- Конец цитаты ---
Для этого, нужно обучить нейросеть + долгая отладка. Кто этим будет заниматься? Добавить еще, что все игры разные, и универсального алгоритма нет...утопия.
Это только вершина айсберга.
Тем более, нейросети все, прикрыли их, сильные мира сего, есть офф инфа. Доказательство этому платная Миджурней, и ограничения ГПТ.
Беларус:
Уже пробуют:
github.com/JusticeRage/Gepetto
Томахомэ:
--- Цитата: perfect_genius от 01 Апреля 2023, 13:48:18 ---Уже пробуют:
github.com/JusticeRage/Gepetto
--- Конец цитаты ---
А вот тут уже и в самом деле интересно. Но это C - а как он справляется с кодом на ассемблере, и справляется ли вообще?
P. S.:Уууупс, сорри за тупой вопрос - надо было сразу глянуть в описание проекта на Гитхабе.
TiberiyLTim:
Наивные такие, я не могу...
Беларус:
--- Цитата: Томахомэ от 01 Апреля 2023, 15:15:55 ---а как он справляется с кодом на ассемблере, и справляется ли вообще?
--- Конец цитаты ---
В данный момент на Хабре балуются нейросетями, которые можно запустить у себя на ПК:
--- Цитата ---Я:
Что делает этот код. Какие входные параметры? Как работает код?
Для чего используется рекурсия? Проиграй этот код для входных значений: EAX = 321, ECX = 16, EDI = 1000h
num2str:
cmp eax,ecx
jb .less_than_radix
xor edx,edx
div ecx
push edx
call num2str
pop eax
.less_than_radix:
cmp al, 10
sbb al, 69h
das
stosb
ret
OpenChat:
Этот код преобразует десятичное число, заданное в регистрах EAX в строковое представление в регистре EDI. Рекурсия используется для преобразования числа в строку до тех пор, пока число не станет меньше радикса (в данном случае 16).
Входные параметры:
EAX - десятичное число, которое нужно преобразовать в строку.
ECX - радикс (количество символов в числе).
EDI - адрес начала строкового буфера, в который будет записано строковое представление числа.
Код работает следующим образом:
Сравнивается значение EAX с ECX. Если EAX меньше ECX, выполняется переход к метке .less_than_radix.
Если EAX больше или равно ECX, выполняется деление EAX на ECX с помощью инструкции DIV и результат деления записывается в регистр EDX.
Затем EDX push-ается на стек, и вызывается сама функция num2str с переходом к метке .less_than_radix.
После вызова функции num2str, выполняется pop эксклюзивного адреса EAX, чтобы вернуть значение EDX с стека.
Метка .less_than_radix выполняет следующие действия:
a. Сравнивается значение AL (нижший байт EAX) с 10. Если AL меньше 10, выполняется сдвиг вправо AL на 1 и записывается результат в AL.
b. Затем выполняется сравнение AL и 69h (105 в десятичной системе счисления). Если AL больше 105, выполняется сдвиг влево AL на 1 и записывается результат в AL.
c. Записывается в строковый буфер EDI значение AL.
d. Увеличивается адрес EDI на 1.
Функция num2str заканчивает свою работу, когда EAX станет меньше ECX.
Выполнение кода для входных значений EAX = 321, ECX = 16, EDI = 1000h:
Сравнение EAX и ECX дает false, поэтому переход к метке .less_than_radix.
Сравнение AL и 10 дает false, поэтому переход к метке .less_than_radix.
Запись в строковый буфер EDI значения AL (32) и увеличение адреса EDI на 1.
Сравнение AL и 10 дает false, поэтому переход к метке .less_than_radix.
Запись в строковый буфер EDI значения AL (2) и увеличение адреса EDI на 1.
Сравнение AL и 10 дает false, поэтому переход к метке .less_than_radix.
Запись в строковый буфер EDI значения AL (1) и увеличение адреса EDI на 1.
Теперь EAX стало меньше ECX, поэтому функция num2str заканчивает свою работу.
После выполнения кода в строковом буфере EDI будет записано "321".
--- Конец цитаты ---
habr.com/ru/articles/776314/#comment_26211568
Беларус:
Вот снова пробуют, уже на более серьёзных нейросетях:
--- Цитата ---We are a team of researchers from different universities (Arizona State University, EURECOM and University of Padua) who would like to set up a user study to measure the impact of Large Language Models (e.g. ChatGPT, LLAMA 2) during the Software Reverse Engineering (SRE) process.
--- Конец цитаты ---
docs.google.com/forms/d/e/1FAIpQLSd4n6x7hpCmBWQXX75H7nWeMABSjM9p6P58YChqOTiXG_F9xA/viewform
Томахомэ:
Сорри, кстати, за небольшой оффтопик - встречал я за последние несколько лет разные примеры нейросетевой генерации анимэ-картинок, и некоторые из них довольно точно имитируют конкретные авторские стили вроде миядзакиевского. Однако как у них обстоят дела с менее известными стилями - вроде рисовки как в ТВ-сериале 1995 г. "Таинственная игра"? И что, если тебе нужны не одиночные статичные картинки, а полноценный видеоряд, воссоздаваемый "на" лету на основе, например, real-time 3D-рендера внутри какой-нибудь игры, или ещё какого иного потока видеоданных?
Yoti:
--- Цитата: Томахомэ от 25 Апреля 2024, 09:27:23 ---Однако как у них обстоят дела с менее известными стилями
--- Конец цитаты ---
На чём обучишь, то и будет рисовать.
Revers:
--- Цитата: paul_met от 31 Марта 2023, 21:43:31 ---Зачем самое интересное спихивать на нейросети? Пусть лучше продолжают заниматься качественным масштабированием и реконструкцией изображений в низком разрешении.
--- Конец цитаты ---
А ты видел шрифт перевода игр на PS2? , зачем играть во что попало , если можно сделать читабельность текста лучше , чем у оригинала
supremacy:
Проблема с нейросетями генерирующими код в том, что запрос должен быть составлен человеком который может написать этот код сам, но после генерации кода его ещё нужно проверить на ошибки и удостоверится что он всё делает правильно (можно что-нибудь не учесть при составлении задания). А программисты не любят две вещи: писать ТЗ и разбираться в чужом коде. В общем, на текущем уровне развития нейросетей эта идея не жизнеспособна. А когда нейросети достигнут уровня постановки задачи и верификации результата, то и текущие задачи решаемые написанием кода будут решаться другим способом, т.е. написание кода на языках высокого уровня станет не нужным.
Беларус:
Revers, так он про это же и говорит. Пусть нейросеть улучшает картинку, а не забирает у нас сборку пазла.
supremacy, тема ведь про понимание уже существующего кода. При создании программы с помощью нейросети мы можем удостовериться в правильности работы этой программы только разобравшись в написанном или написав самому свою версию такой же программы и сравнить результаты их работы. А если код уже есть, то остаётся только тэстировать понимание нейросетью кода:
--- Цитата ---Как работает код?
Для чего используется рекурсия? Проиграй этот код для входных значений: EAX = 321, ECX = 16, EDI = 1000h
--- Конец цитаты ---
--- Цитата ---Этот код преобразует десятичное число, заданное в регистрах EAX в строковое представление в регистре EDI. Рекурсия используется для преобразования числа в строку до тех пор, пока число не станет меньше радикса (в данном случае 16).
--- Конец цитаты ---
--- Цитата ---После выполнения кода в строковом буфере EDI будет записано "321".
--- Конец цитаты ---
Если результат не совпадает с результатом работы программы, тогда и можно начать не доверять нейросети.
supremacy:
--- Цитата: perfect_genius от 03 Мая 2024, 01:27:27 ---тема ведь про понимание уже существующего кода
--- Конец цитаты ---
Если для понимания кода нужна нейросеть, то, боюсь, у меня для вас плохие новости. Это как с разговорником иностранного языка, с помощью него можно задать вопрос, вот только он не поможет понять ответ.
Беларус:
Про понимание существующего кода нейросетями. Если иностранец выполнил именно то, что было нужно, то неважно как ему перевёл разговорник. Если бинарник делает именно то, что описала нейросеть, изучавшая его, то всё норм. Если нет, то придётся уже лезть разбираться самому.
Навигация
Перейти к полной версии