Pull to refresh
272
0.1
Send message

Ну он S3 не тестил, только C3/C6, но я посмотрел бутромы - есть те же фрагменты кода, где можно создать успешный глитч и прыгнуть в контроллируемый участок (в теории, офк).

Да, я пролистал слайды, интересно. Я прикидывал тот же глитч использовать как и Courk для c3/c6, но будем посмотреть после того, как найду время отладить систему)

А, ну прикольно тогда. Я больше на S3 смотрю в качестве цели.

Ну у первоисточника всё чётко разложено, разве что интересно про оптимизации почитать.

С увеличенной частотой ацп получилось уменьшить число сэмплов? А то вымораживает ждать несколько часов пока 500-600к насобираю, чтоб обнаружить что получил ерунду)

Тоже собрал такую плату (как есть, без модификаций железа - благо гербер и бом есть, только gateware подправил), но увы руки у меня кривые и пока получилось только спалить ADC. Надо как-то вернуться к проекту раз есть ещё удачные примеры взлома.

https://github.com/jtang613/GhidrAssist - такой агент немного помогает. Но как обычно, чудес ждать не стоит и нужно знать какие вопросы задавать)

Тогда в статье есть неоднозначность:
"Согласно спецификации, все USB HID устройства по-умолчанию активируют «Report Protocol». "

Я не помню была ли у меня проблема с какими-то устройствами без принудительной установки протокола, но думаю что код у меня не возник из ниоткуда, и всё же что-то там глючило.

Норм талмуд. Почти нет фактических ошибок, так по мелочи. В своё время тоже занимался такой ерундой)

Могу разве что добавить, что автор хоть и упомнял смену протокола для HID устройств, но почему-то в коде этого не сделал. Желательно принудительно отправить SetProtocol, чтоб устройство точно работало в Boot Protocol режиме.

  req = (USB_Request_Header) {
    .bmRequestType = (REQ_DIR_HOSTTODEVICE | REQ_TYPE_CLASS | REQ_REC_INTERFACE),
    .bRequest      = REQ_SetProtocol,
    .wValue        = 0,
    .wIndex        = 0,
    .wLength       = 0,
  };    

Ну и на практике у меня некоторые клавиатуры не заводились (не отправляли данных "Interrupt IN") пока я не дергал GetDescriptor(HID_Report)

  uint8_t data[0x100];
  req = (USB_Request_Header) {
      .bmRequestType = (REQ_DIR_DEVICETOHOST | REQ_TYPE_STANDARD | REQ_REC_INTERFACE),
      .bRequest      = REQ_GetDescriptor,
      .wValue        = (HID_Report << 8),
      .wIndex        = 0,
      .wLength       = sizeof(data),
  };

  // requesting descriptors for HID reports to let device know that we are ready to interact with it   



Не, в данном случае это не peephole оптимизация, а всё круче)

LLVM не знает этого. Но в нём есть блок "Scalar evolutions" (https://www.npopov.com/2023/10/03/LLVM-Scalar-evolution.html), который определяет некоторые характеристика цикла, в том числе и способен представить значение result в виде рекуррентной формулы.

В мире эксплоитов это действительно средний уровень. Бесхитростный heap grooming и парочка race condition'ов. Не самый простой механизм эксплуатации, но есть уязвимости, которые требуют куда больших усилий.

У Кена не только серия твитов есть про этот баг, но и полноценная статья - https://www.righto.com/2024/12/this-die-photo-of-pentium-shows.html

Универсальной платы ft232h хватает чтоб через JTAG программировать stm32.

На армах еще pointer authentication полезно использовать.

open source - берешь да паяешь)

Вот такой вариант из самоделок рассматривал - https://www.crowdsupply.com/centylab/pocketpd

Мой SBC на i8080 показывал 112 dhrystones ;)

Возможно там есть привязка к сканерам (сверху есть плашка с упоминанием этой технологии).

1
23 ...

Information

Rating
3,199-th
Location
Красноярск, Красноярский край, Россия
Registered
Activity