Я пытаюсь понять этот ассемблерный код и создать скрипт на Python, чтобы изменить его, но у меня есть несколько вопросов по этому поводу ...
После попытки понять код в IDA, Код ассемблера
Я думаю, что происходит следующее:
Изображение слева - предыдущая часть перед входом в функциюсправа.Я отметил интересующую часть в RED.
Сначала он загружает адрес важной части DLL-файла (который шифруется, ida не распознает) в R4, затем перемещает R4 в R0.И входит в функцию, которая мне интересна (прямо на картинке).
Я думаю, что эта часть делает некоторую расшифровку кода.
Исправьте меня, если я ошибаюсь, но я думаю, что естьцикл for в этой функции, где R1 - это управление.
R3 - адрес памяти + R1 (смещение?)
R2 - код, который необходимо расшифровать, он сдвигается влево по битам набайт, то R2 добавляется R3.(эта часть меня смущает.) Данные сопровождаются адресом в одном регистре?Это правильно?
, а затем R1 устанавливается на минус 1. Это для цикла останавливается, когда R1 <0.Таким образом, он выполняется 4 раза. </p>
Кажется, что он расшифровывает код 4 байта за раз.
Я хотел бы построить функцию Python, куда я отправляю данные, и он возвращает расшифрованный код.
Пример скремблирования: 0xFF2B0092, 0x700055, 0x610064, 0x650074FB, 0xFF065300
Спасибо.