![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Fishtel |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 27.5.2010 Репутация: нет Всего: нет |
Здравствуйте, помогите решить задачу. Пишу программку для скрытия файлов(папок) для Windows 7
Внедрение dll через удаленный поток, метод перехвата : используя таблицу импорта Сложности : 1 Проводник не перехватывает FindNextFileW(Windows Explorer) 2 Не получается скрыть файлы используя myFindNextFileW (как пример в WinRAR) хотя видно что библиотека загружена и вызывается двойник myFindNextFileW Уже работает код внедрения библиотеки:
MAIN библиотеки:
функция подмены адресов:
сам двойник :
Спасибо. Надеюсь на помощь. Это сообщение отредактировал(а) Fishtel - 6.6.2010, 14:08 |
||||||||
|
|||||||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
На первый взгляд - функция двойник myFindNextFileW написана неверно - она не всегда возвращает результат и не всегда заполняет сруктуру lpFindFileData
И вообще она крайне подозрительна - параметр lpFindFileData у FindNextFileW - это out параметр (т.е. ваша функция должна его заполнять), а вы из него зачем то читатете |
|||
|
||||
| 12usver12 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 5.1.2007 Репутация: 1 Всего: 1 |
попробуй таким способом
а вообще читай внимательно мсдн,описание функций и возвращаемые значения Это сообщение отредактировал(а) 12usver12 - 30.5.2010, 11:23 |
|||
|
||||
| Fishtel |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 27.5.2010 Репутация: нет Всего: нет |
12usver12 и xvr, спасибо.
12usver12 работает код:
xvr прочитав, ваше сообщение только понял)))) мне почему раньше казалось, что lpFindFileData уже приходит заполненная, а я ведь перехватываю вызов и она еще не успела заполниться, точно.... =) протестировал в Total, WinRAR, все ок а вот проводник вылетает при замене адресов (((( Это сообщение отредактировал(а) Fishtel - 30.5.2010, 11:58 |
|||
|
||||
| bra1ny |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
перехватите NtQueryDirectoryFile.
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
| 12usver12 |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 5.1.2007 Репутация: 1 Всего: 1 |
вообще жестокий способ, может быть из-за него вылеты а что мой первоначальный код не работает ? в случае с explorer можно попробовать чота типа такого
|
||||||
|
|||||||
| xvr |
|
||||||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Угу
Здесь нужно в цикле вызывать realAdrFindNextFileW пока она не вернет FALSE или пока возвращенное имя не будет отличаться от "имя.файла" Как то так
PS. А FindFirstFileW нормально перехвачен? Это сообщение отредактировал(а) xvr - 30.5.2010, 13:37 |
||||||||||||
|
|||||||||||||
| 12usver12 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 5.1.2007 Репутация: 1 Всего: 1 |
впринципе да - но просто в случае с эксплорером, стоит попробовать возможно он ориентируется по коду ошибки ERROR_NO_MORE_FILES впринципе можно быстро решить проблему в обработчике lstrcpyW(lpFindFileData->cFileName, L"111.txt"); но это будет некрасиво и неуниверсально, но все-таки решение |
|||
|
||||
| Fishtel |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 27.5.2010 Репутация: нет Всего: нет |
с Explorer проблема в том, что он вылетает в функции myChangeAdress
на строчках :
я пока так и тестирую ))) в дальнейшем в if() будет функция которая читает список запрещенных файлов и если найдет нужный возвратит false
да, там пока ток вызов оригинальной функции, но я этот перехватчик планирую использовать только, чтобы получить полный путь к файлу... Это сообщение отредактировал(а) Fishtel - 30.5.2010, 14:51 |
||||||
|
|||||||
| 12usver12 |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 5.1.2007 Репутация: 1 Всего: 1 |
to Fishtel не забывай в конце return retVal; а то опять будет что-то вылетать...
тут еще зависит от конкретной программы...возможно перечисление файлов выполняется таким образом в простых прогах
или что-то наподобие такого
поэтому универсальный способ скорее стоит искать через NtQueryDirectoryFile... хотя вот этот должен сработать универсально
Это сообщение отредактировал(а) 12usver12 - 30.5.2010, 15:19 |
||||||
|
|||||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
||||
|
||||
| Fishtel |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 27.5.2010 Репутация: нет Всего: нет |
вот такой код вызываю, ничего не меняется ((( |
||||
|
|||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
1) Проверьте, что возвращает VirtualProtect
2) WriteProcessMemory здесь излишен - вы пишите из своего собственного процесса. Вместо
|
||||
|
|||||
| Fishtel |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 27.5.2010 Репутация: нет Всего: нет |
возвращает не 0 в обоих случаях... и тут же вылетает ... Это сообщение отредактировал(а) Fishtel - 30.5.2010, 19:42 |
||||||
|
|||||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
А указатель по ppfn случайно не пересекает границу страницы?
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |