Такая ситуация:
Есть программа(без исходников), она вызывает функцию ReadFile(...), я перехватываю эту функцию отладчиком(Soft-Ice).
Вопрос как можно узнать откуда именно(физически — номер сектора и т.п.) происходит чтение?
Здравствуйте, wint, Вы писали:
W>Доброго всем времени суток.
W>Такая ситуация: W>Есть программа(без исходников), она вызывает функцию ReadFile(...), я перехватываю эту функцию отладчиком(Soft-Ice). W>Вопрос как можно узнать откуда именно(физически — номер сектора и т.п.) происходит чтение?
W>Буду рад любой информции по данному вопросу...
Вам должно помочь defrag API, в особенности FSCTL_QUERY_RETRIEVAL_POINTERS
оно как раз рассказывает о физическом размещении файла на диске.
Жаль, что не все FS это поддерживают (CDFS не умеет).
Здравствуйте, wint, Вы писали:
W>Доброго всем времени суток.
W>Такая ситуация: W>Есть программа(без исходников), она вызывает функцию ReadFile(...), я перехватываю эту функцию отладчиком(Soft-Ice). W>Вопрос как можно узнать откуда именно(физически — номер сектора и т.п.) происходит чтение?
W>Буду рад любой информции по данному вопросу...
Дурацкий вопрос, но зачем это нужно ?
Если речь идет о каком-то конкретном файле, а именно о файле на CD и используется для обхода ... то почему бы не проанализовать позицию с которой производится чтение ( на основании предыдущих вызовов ReadFile + SetFilePointer ) и уже самому с помощью дисковых утилит просмотреть откуда идет чтение ?
Имхо если бы вы обозначили цель, то возможно нашелся бы альтернативный способ её достижения, нежели анализ ReadFile... "Даже если вас съели, у вас все равно есть два выхода" (с) Не мое
Здравствуйте, AlexEagle, Вы писали:
AE>Дурацкий вопрос, но зачем это нужно ?
AE>Если речь идет о каком-то конкретном файле, а именно о файле на CD и используется для обхода ... то почему бы не проанализовать позицию с которой производится чтение ( на основании предыдущих вызовов ReadFile + SetFilePointer ) и уже самому с помощью дисковых утилит просмотреть откуда идет чтение ?
AE>Имхо если бы вы обозначили цель, то возможно нашелся бы альтернативный способ её достижения, нежели анализ ReadFile... "Даже если вас съели, у вас все равно есть два выхода" (с) Не мое
Речь идет о получении информации о том откуда USB-Flash диск берет пароль для сравнения с введенной строкой...
Здравствуйте, Сергей, Вы писали:
С>Здравствуйте, wint, Вы писали:
W>>Речь идет о получении информации о том откуда USB-Flash диск берет пароль для сравнения с введенной строкой...
С>Я бы сделал так: сохранил бы где-нибудь тот блок данных, который читает программа для проверки пароля, а потом поискал бы его на диске.
Про перехват API есть много литературы, помоему это наилудший способ, не требующий огромных временных затрат.
W>Речь идет о получении информации о том откуда USB-Flash диск берет пароль для сравнения с введенной строкой...
с чего вы взяли, что он вообще хранит пароль, а не какой-нибудь хеш пароля?
Re[4]: Как определить откуда читает ReadFile?
От:
Аноним
Дата:
02.04.06 17:05
Оценка:
Здравствуйте, degor, Вы писали:
W>>Речь идет о получении информации о том откуда USB-Flash диск берет пароль для сравнения с введенной строкой...
D>с чего вы взяли, что он вообще хранит пароль, а не какой-нибудь хеш пароля?
Я пробовал искать дамп памяти который используется при "сравненнии" пароля, его нет на диске... На одном из форумов мне сказали что пароли с большой вероятностью хранится не на флешке(т.е. не на микросхеме памяти, за него отвечает дополнительный чип)... Буду рад и признателен если кто-нибудь поделится любыми ссылками по этой теме...
Здравствуйте, wint, Вы писали:
W>Доброго всем времени суток.
W>Такая ситуация: W>Есть программа(без исходников), она вызывает функцию ReadFile(...), я перехватываю эту функцию отладчиком(Soft-Ice). W>Вопрос как можно узнать откуда именно(физически — номер сектора и т.п.) происходит чтение?
W>Буду рад любой информции по данному вопросу...
А зачем всё так усложнять то ????
Не проще зацепить путь\имя файла, а уже потом обратиться в секторам и т.д, поисщу исходники дефрагментации, куда кинуть ???? А лучше посмотри описание исходников на http://www.codeproject.com, там нуууу просто много полезной информации !
Здравствуйте, Alien666000, Вы писали:
A>А зачем всё так усложнять то ???? A>Не проще зацепить путь\имя файла, а уже потом обратиться в секторам и т.д, поисщу исходники дефрагментации, куда кинуть ???? А лучше посмотри описание исходников на http://www.codeproject.com, там нуууу просто много полезной информации !
Здравствуйте, wint, Вы писали:
W>Есть программа(без исходников), она вызывает функцию ReadFile(...), я перехватываю эту функцию отладчиком(Soft-Ice). W>Вопрос как можно узнать откуда именно(физически — номер сектора и т.п.) происходит чтение?
W>Буду рад любой информции по данному вопросу...
А если попробовать так: внутри функции вызвать GetFileInformationByHandle, взять nFileIndexHigh и nFileIndexLow из структуры BY_HANDLE_FILE_INFORMATION, после чего сразу же пройтись по всем файлам на диске, каждый из них открыть и сравнить на совпадение группы [dwVolumeSerialNumber, nFileIndexHigh, nFileIndexLow]. Конечно, очень медленно, но поскольку это надо сделать всего один раз, роли не играет.