eXecutables TaipanByte
@bebrovsk123Изначально файл reverrse.tb накрыт пакером UPX. Узнать это можно если посмотреть hex этого файла и увидеть в нем UPX информацию.
Чтобы распаковать его, просто качаем upx с гитхаба
upx -d reverrse.tb
Готово
Закидываем его в иду и переходим в main main (папка main)
Листаем псевдокод и видим строчку, закодированную в bs64, что сразу говорит проверить ее

При декодировании её получаем некоторое значение

Уже хоть что-то, но все равно не тот флаг который нам нужен (Нет формата TB{})

Далее идет цикл while ( v40 < 16 ), который проходит по строке config123Valid
Код проверяет наличие заглавных букв (v43 - 65 <= 0x19) и цифр (v43 - 48 <= 9). Это пустышка, которая всегда проходит успешно для данной строки, создавая видимость сложной проверки целостности конфигурации
После декодирования Base64 и прохождения проверок вызывается функция:
v71 = main_________________(v133, v131, v66, 1, 1, v67, v68, v69, v70, v99, v107);
Затем программа выполняет следующие действия
Использует strings_genSplit, чтобы найти содержимое между фигурными скобками { и }
Собирает строку заново с помощью runtime_concatstring4
Далее смотрим функцию main_________________
Первое декодирование
v11 = encoding_base64__ptr_Encoding_DecodeString(..., a1, a2, ...)
Функция берет входные данные (которые пришли из main______________________) и первый раз декодирует их из Base64

Этот цикл проходит по декодированным байтам и записывает их в новый массив в обратном порядке
Ключ v61 = "TB{R3v3rs3" (длина 10 байт), цикл for ( j = 0LL; v30 > j; ++j ), операция *(_BYTE *)(a5 + j) = v26 ^ v34, индекс ключа: v33 = j % 10
Каждый байт развернутой строки XOR-ится с соответствующим байтом ключа TB{R3v3rs3

Результат XOR-а снова воспринимается как Base64-строка и декодируется еще раз
Флаг восстанавливается путем двойного декодирования Base64 и промежуточного XOR-преобразования с использованием статического ключа TB{R3v3rs3, что исправляет намеренно внесенную в декой-строку ошибку в префиксе
TB{R3v3rs3_flll@gg}