Как определить откуда читает ReadFile?
От: wint  
Дата: 30.03.06 21:35
Оценка:
Доброго всем времени суток.

Такая ситуация:
Есть программа(без исходников), она вызывает функцию ReadFile(...), я перехватываю эту функцию отладчиком(Soft-Ice).
Вопрос как можно узнать откуда именно(физически — номер сектора и т.п.) происходит чтение?

Буду рад любой информции по данному вопросу...
loading.............. 87%
Re: Как определить откуда читает ReadFile?
От: Alter_ Украина http://alter.org.ua
Дата: 30.03.06 22:17
Оценка:
Здравствуйте, wint, Вы писали:

W>Доброго всем времени суток.


W>Такая ситуация:

W>Есть программа(без исходников), она вызывает функцию ReadFile(...), я перехватываю эту функцию отладчиком(Soft-Ice).
W>Вопрос как можно узнать откуда именно(физически — номер сектора и т.п.) происходит чтение?

W>Буду рад любой информции по данному вопросу...


Вам должно помочь defrag API, в особенности
FSCTL_QUERY_RETRIEVAL_POINTERS
оно как раз рассказывает о физическом размещении файла на диске.
Жаль, что не все FS это поддерживают (CDFS не умеет).
--
Alter, http://alter.org.ua
Re: Как определить откуда читает ReadFile?
От: AlexEagle Украина http://www.vik.oil
Дата: 30.03.06 22:55
Оценка:
Здравствуйте, wint, Вы писали:

W>Доброго всем времени суток.


W>Такая ситуация:

W>Есть программа(без исходников), она вызывает функцию ReadFile(...), я перехватываю эту функцию отладчиком(Soft-Ice).
W>Вопрос как можно узнать откуда именно(физически — номер сектора и т.п.) происходит чтение?

W>Буду рад любой информции по данному вопросу...


Дурацкий вопрос, но зачем это нужно ?

Если речь идет о каком-то конкретном файле, а именно о файле на CD и используется для обхода ... то почему бы не проанализовать позицию с которой производится чтение ( на основании предыдущих вызовов ReadFile + SetFilePointer ) и уже самому с помощью дисковых утилит просмотреть откуда идет чтение ?

Имхо если бы вы обозначили цель, то возможно нашелся бы альтернативный способ её достижения, нежели анализ ReadFile... "Даже если вас съели, у вас все равно есть два выхода" (с) Не мое
Re[2]: Как определить откуда читает ReadFile?
От: wint  
Дата: 31.03.06 20:14
Оценка:
Здравствуйте, AlexEagle, Вы писали:

AE>Дурацкий вопрос, но зачем это нужно ?


AE>Если речь идет о каком-то конкретном файле, а именно о файле на CD и используется для обхода ... то почему бы не проанализовать позицию с которой производится чтение ( на основании предыдущих вызовов ReadFile + SetFilePointer ) и уже самому с помощью дисковых утилит просмотреть откуда идет чтение ?


AE>Имхо если бы вы обозначили цель, то возможно нашелся бы альтернативный способ её достижения, нежели анализ ReadFile... "Даже если вас съели, у вас все равно есть два выхода" (с) Не мое


Речь идет о получении информации о том откуда USB-Flash диск берет пароль для сравнения с введенной строкой...
loading.............. 87%
Re[3]: Как определить откуда читает ReadFile?
От: Сергей  
Дата: 31.03.06 20:36
Оценка: 6 (1)
Здравствуйте, wint, Вы писали:

W>Речь идет о получении информации о том откуда USB-Flash диск берет пароль для сравнения с введенной строкой...


Я бы сделал так: сохранил бы где-нибудь тот блок данных, который читает программа для проверки пароля, а потом поискал бы его на диске.
Re[4]: Как определить откуда читает ReadFile?
От: FoBE  
Дата: 01.04.06 18:27
Оценка:
Здравствуйте, Сергей, Вы писали:

С>Здравствуйте, wint, Вы писали:


W>>Речь идет о получении информации о том откуда USB-Flash диск берет пароль для сравнения с введенной строкой...


С>Я бы сделал так: сохранил бы где-нибудь тот блок данных, который читает программа для проверки пароля, а потом поискал бы его на диске.


Про перехват API есть много литературы, помоему это наилудший способ, не требующий огромных временных затрат.
Re[3]: Как определить откуда читает ReadFile?
От: degor Россия  
Дата: 02.04.06 10:16
Оценка:
W>Речь идет о получении информации о том откуда USB-Flash диск берет пароль для сравнения с введенной строкой...

с чего вы взяли, что он вообще хранит пароль, а не какой-нибудь хеш пароля?
Re[4]: Как определить откуда читает ReadFile?
От: Аноним  
Дата: 02.04.06 17:05
Оценка:
Здравствуйте, degor, Вы писали:

W>>Речь идет о получении информации о том откуда USB-Flash диск берет пароль для сравнения с введенной строкой...


D>с чего вы взяли, что он вообще хранит пароль, а не какой-нибудь хеш пароля?


Я пробовал искать дамп памяти который используется при "сравненнии" пароля, его нет на диске... На одном из форумов мне сказали что пароли с большой вероятностью хранится не на флешке(т.е. не на микросхеме памяти, за него отвечает дополнительный чип)... Буду рад и признателен если кто-нибудь поделится любыми ссылками по этой теме...
Re: Как определить откуда читает ReadFile?
От: Alien666000  
Дата: 05.04.06 00:42
Оценка:
Здравствуйте, wint, Вы писали:

W>Доброго всем времени суток.


W>Такая ситуация:

W>Есть программа(без исходников), она вызывает функцию ReadFile(...), я перехватываю эту функцию отладчиком(Soft-Ice).
W>Вопрос как можно узнать откуда именно(физически — номер сектора и т.п.) происходит чтение?

W>Буду рад любой информции по данному вопросу...



А зачем всё так усложнять то ????
Не проще зацепить путь\имя файла, а уже потом обратиться в секторам и т.д, поисщу исходники дефрагментации, куда кинуть ???? А лучше посмотри описание исходников на http://www.codeproject.com, там нуууу просто много полезной информации !
Re[2]: Как определить откуда читает ReadFile?
От: wint  
Дата: 06.04.06 20:49
Оценка:
Здравствуйте, Alien666000, Вы писали:

A>А зачем всё так усложнять то ????

A>Не проще зацепить путь\имя файла, а уже потом обратиться в секторам и т.д, поисщу исходники дефрагментации, куда кинуть ???? А лучше посмотри описание исходников на http://www.codeproject.com, там нуууу просто много полезной информации !

Кидайте сюда: wint@email.ru.... Спасибо...
loading.............. 87%
Re: Как определить откуда читает ReadFile?
От: Vadim B  
Дата: 06.04.06 21:47
Оценка:
Здравствуйте, wint, Вы писали:

W>Есть программа(без исходников), она вызывает функцию ReadFile(...), я перехватываю эту функцию отладчиком(Soft-Ice).

W>Вопрос как можно узнать откуда именно(физически — номер сектора и т.п.) происходит чтение?

W>Буду рад любой информции по данному вопросу...


А если попробовать так: внутри функции вызвать GetFileInformationByHandle, взять nFileIndexHigh и nFileIndexLow из структуры BY_HANDLE_FILE_INFORMATION, после чего сразу же пройтись по всем файлам на диске, каждый из них открыть и сравнить на совпадение группы [dwVolumeSerialNumber, nFileIndexHigh, nFileIndexLow]. Конечно, очень медленно, но поскольку это надо сделать всего один раз, роли не играет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.