Показать сообщение отдельно
Старый 19.07.2019, 18:13   #6999 (permalink)
Завсегдатай
 
Регистрация: 11.07.2019
Сообщений: 335
Вы сказали Спасибо: 87
Поблагодарили 86 раз(а) в 48 сообщениях
Сказал(а) Фууу!: 3
Сказали Фууу! 0 раз(а) в 0 сообщениях
Откуда: Планета Земля
По умолчанию

Цитата:
Чудес не бывает.
Если считать, что флешки идентичные, то и на все проверки одной и той же программы они должны реагировать одинаково.
Это говорит лишь о том, что причина проблемы кроется где-то еще.
Я еще раз более внимательно и вдумчиво :) глянул на код в бинаре где идет проверка ID флешки. Я вижу там такой алгоритм:
В r8 - ManufacturerID (1 - AMD, 4-Fujitsu, X-остальные)
r9 - DeviceID (22D8 - микросхемы с BE в конце)
[r0] - Адрес куда нужно вернуть ManufacturerID
[r0+0C] - Адрес куда нужно вернуть DeviceID
r4 - тип обнаруженного чипа (1 - AMD, 0 - Fujitsu и прочие)

Логика там такая:
1. Если ManufacturerID=1 и DeviceID=22D8 то [r0]=ManufacturerID, [r0+0C]=DeviceID, r4=1, возврат из функции.
Если проверки п.1 не сработали, то:
2. Если ManufacturerID=4 и DeviceID=22D8 то [r0]=ManufacturerID, [r0+0C]=DeviceID, r4=0, возврат из функции.
3. Если проверки из п.2 не сработали, то:
[r0]=0, [r0+0C]=0, r4=0, возврат из функции.

Ты пропатчил бинарь, чтоб r4 при возврате из функции во всех случаях был 1.

Но меня смущает что в случае 3 - из функции вместо правильных DeviceID и ManufacturerID возвращаются 0.

Если у Николая третий случай, то возможно надо патчить так, чтоб вернулись ManufacturerID и DeviceID=AMD или Fujitsu? Может сделать так, чтоб всегда возвращались [r0]=1 и [r0+0C]=22D8?

Как-то нули не по феншую получаются :)

Есть предположение что при возврате из функции смотрится не только r4 но и ManufacturerID в [r0]...

Последний раз редактировалось lprot; 19.07.2019 в 18:19..
lprot вне форума   Ответить с цитированием