Цитата:
Чудес не бывает.
Если считать, что флешки идентичные, то и на все проверки одной и той же программы они должны реагировать одинаково.
Это говорит лишь о том, что причина проблемы кроется где-то еще.
|
Я еще раз более внимательно и вдумчиво :) глянул на код в бинаре где идет проверка 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]...