Приветствую! Пытаюсь отреверсить либу на golang. Застрял на одном месте. Имеется вот какой код. Тут вызывается функция func NewCFBEncrypter(block Block, iv []byte) Stream Из модуля crypto.cipher По моим исследованиям cs:off1EEBF40 указывает это второй аргумент функции iv []byte. Мне нужно найти место где инициализируется эта переменная чтобы понять понять, что там написано. Я думаю что cs:off1EEBF40 является глобально инициализированной переменной в модуле вне функций. Если пойти по этому адресу то попадаем сюда off_1EEBF40 инициализирована другим адресом который находится в секции .noptrdata Думаю адрес unk_1E14750 видимо является типом, так как длина массива iv должна быть 32, а тут их всего 13. То есть данные ниже qword_1EEBF.. не инициализированы. Искал ссылки на эти адреса но нигде, кроме этого места где они напрямую используется, никаких других ссылок не нашел. Функция init модуля отсутствует. Помогите пожалуйста найти место где хранятся реальные данные и для чего нужна секция .noptrdata
Длина IV соответствует размеру блока в блочных шифрах, чаще всего = 16, на картинке именно столько и есть.
На картинке приведены 16 байт и референс есть только на первом. Если сделать скриншот побольше, то может и наскребется сколько надо.
https://qzaidi.github.io/2017/03/05/elf-go-ident/ го-шечка... уже лет 10 а никак не прорвется в топ 5 https://www.tiobe.com/tiobe-index/go/
Подошло. Я подумал что длина iv должна совпадать с ключём шифра. Оказалось с длина блока и длина ключа разные вещи. Спасибо!