
Комментарии 4
а почему не
if (a == 2 && b == 5 && c == 0)
return 0;
тот же 1 бит, но более логично.
На уровне C — да, так понятнее. Но в статье приведён восстановленный псевдокод. В машинном коде обе ветки — для России и Ирана — сходятся к одной общей инструкции R0 = 1 по адресу 0xDC98384C. Отдельного return 1 для российского MCC там нет.
Замена общего возврата на ноль отключила бы обе проверки. Мы хотели изменить только российскую, поэтому поменяли регистр в одном сравнении. После распаковки проверили, что изменилась только эта инструкция, а поведение функции отличается только для MCC 250.
Мы хотели изменить только российскую, поэтому поменяли регистр в одном сравнении.
Интересна мотивация: нам за это не платили, заблокировали - значит было за что, мы не хотим попасть под санкции, хотя и используем санкционное оборудование...
Я просто решал конкретную техническую задачу. Не надо тутт политоту притягивать. Это решение мы сделали для одного конкретного клиентского устройства. И я описываю принцип, а не выкладываю прошивки. Можете воспользоваться принципом и сделать как вам надо. Можете найти другое решение. Было за что не было за что санкиции - это не военная техника а обычный робот для работы на выставках
Новый робот — та же блокировка: как мы разлочили Quectel RG255C-GL