![]() |
eXeL@B —› Вопросы новичков —› Реверс-инжиниринг. Помогите советом. |
Посл.ответ | Сообщение |
|
Создано: 25 января 2010 15:21 · Личное сообщение · #1 Есть внешний винчестер Transcend с кнопкой быстрого резервного копирования. Кнопку опрашивает утилитка под виндой через DeviceIoControl. Хочу узнать протокол, что бы написать драйвер под Linux для получения состояния этой кнопки. Для этого пытаюсь набрать различных вариантов вызовов функции DeviceIoControl. Беру OllyDbg(1.10), ставлю брякпоинт с логированием, и получаю половину того, чего хочу - параметры функции. Но ещё хочу залогировать и содержимое буфера, на который указывает один из параметров. Нарыл вроде то что надо - плагин CLBPlus, но он почему-то не работает. Вписываю в логируемый брейкпоинт на импорт MessageBoxA такую строку: CLBP DUMP [ESP+4] 30 (тестирую на каком-то crackme) В логах появляется: 7E4507EA COND: [esp+4] = 00E10D4C 7E4507EA CALL to MessageBoxA from CRACKME.00401378 hOwner = 00E10D4C ('CrackMe v1.0',class='No need to disasm the code!') Text = "No luck there, mate!" Title = "No luck!" Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL 7E4507EA Breakpoint at USER32.MessageBoxA Буфера нет. ![]() Что посоветуете? Чем ещё можно наделать дампов параметров, чтоб потом в спокойной обстановке проанализировать их? Ну или может я вообще не верно взялся за задачу? Может надо как-то по другому? ![]() |
|
Создано: 25 января 2010 15:30 · Личное сообщение · #2 |
|
Создано: 25 января 2010 15:34 · Личное сообщение · #3 |
|
Создано: 25 января 2010 15:40 · Личное сообщение · #4 |
|
Создано: 25 января 2010 15:51 · Личное сообщение · #5 tempread пишет: Программы не могут напрямую общаться с железом, только через драйвера. Это понятно. Просто IOCTL_SCSI_PASS_THROUGH_DIRECT означает, что драйвер с данными ничего не делает, просто передаёт их устройству. Поэтому драйвер меня не интересует, то же самое я смогу сделать в линуксе, вызвав ioctl(fd,SCSI_IOCTL_SEND_COMMAND, &scsi_cmd) Нужно только правильно заполнить scsi_cmd. ![]() |
|
Создано: 25 января 2010 16:51 · Поправил: Coderess · Личное сообщение · #6 |
|
Создано: 25 января 2010 16:54 · Поправил: Coderess · Личное сообщение · #7 |
|
Создано: 25 января 2010 17:19 · Личное сообщение · #8 Проблема в том, что эта scsi команда vendor specific. Т.е. документации на неё нет, и я хотел собрать побольше данных, что передаётся девайсу и что возвращается. Ну а потом проанализировать эти данные и написать свою реализацию. Непосредственно сама проблема в том, что не хочется на на каждый вызов DeviceIoControl лазить по дампу памяти и собирать информацию о буферах команды, sense буфере, выходном буфере. OllyDbg почти решает эту проблему, логируя параметры, но нужно ещё залогировать и буфера. В общем-то я уже почти решил плюнуть на много запросов, и проанализировать всего один... А потом может ещё взять IDA и попробовать разобраться по коду, что оно там передаёт и с какими вариациями. ![]() |
|
Создано: 25 января 2010 18:35 · Поправил: tempread · Личное сообщение · #9 |
|
Создано: 25 января 2010 18:59 · Личное сообщение · #10 |
|
Создано: 26 января 2010 19:20 · Личное сообщение · #11 |
|
Создано: 27 января 2010 10:40 · Личное сообщение · #12 |
![]() |
eXeL@B —› Вопросы новичков —› Реверс-инжиниринг. Помогите советом. |