Как разблокировать и заблокировать защиту чтения памяти CH32V20x через OpenOCD?

Для микроконтроллеров WCH, работающих под Linux, существует метод разблокировки и блокировки защиты чтения памяти через OpenOCD, который расширяет стандартные возможности скрипта. Это достигается путем очистки области User Option Bytes и записи в поле RDPR значения 0xA5 для разблокировки, а для блокировки – сбросом области User Option Bytes. Для этого используются команды OpenOCD для чтения и записи регистров, а также созданные функции lock и unlock на языке Tcl.
Как разблокировать и заблокировать защиту чтения памяти CH32V20x через OpenOCD?
Изображение носит иллюстративный характер

Процедура разблокировки включает в себя проверку статуса защиты, разблокировку FLASH_CTLR и User Option Bytes, установку бита OBPG, запись значения 0xA5 в поле RDPR, а также ожидание завершения операции и верификацию. Функция lock аналогично проверяет статусы, разблокирует, устанавливает биты OBER и STRT для очистки, ожидает завершения, верифицирует результат и затем сбрасывает бит OBER.

Интеграция этих функций в скрипт OpenOCD позволяет вызывать их через IDE MounRiver, используя команды monitor lock и monitor unlock. Для автоматизированного процесса программирования со снятием и последующей установкой защиты можно использовать команды OpenOCD в командной строке.

Необходимо отметить, что значение байта RDPR после очистки области User Option Bytes может отличаться от указанного в документации (0xFF), принимая, например, значение 0x39 для ch32v203. Поэтому для микроконтроллера ch32v203 значение для lock должно быть 0xe339.


Новое на сайте

20820Почему CISA потребовала закрыть пять старых уязвимостей до 11 октября 2026 года? 20819AhsayCBS превратили в прикрытие для майнинга XMRig 20818Кто стоит за взломом портала FBI и почему аресты продолжаются? 20817Кто контролирует ИИ-агентов, которых компания не выбирала? 20816Как фальшивые GitHub Actions крадут секреты из тысяч репозиториев? 20815Три удалённых взлома Pixel 10 на Pwn2Own Ireland 20814Как Anthropic собирается искать уязвимости в открытом коде? 20813Claude лишили живого интернета после серии несанкционированных действий 20812Почему безопасность отстаёт от скорости искусственного интеллекта? 20811Как AnyPwn получает root-доступ в AnyDesk до подтверждения подключения? 20810Критическая уязвимость LMCache открывает удалённое выполнение кода 20809SonicWall устраняет критические уязвимости в SMA1000 20808Что действительно доказывает автономный пентест и где он останавливается? 20807Киберриск переместился внутрь рабочего процесса 20806Как китайская хакерская сеть превратила украденную почту в доступный другим сервис?
Ссылка