![]() |
eXeL@B —› Программирование —› Не работает inject dll (исходник прилагается) |
<< . 1 . 2 . |
Посл.ответ | Сообщение |
|
Создано: 19 ноября 2012 18:11 · Личное сообщение · #1 |
|
Создано: 28 ноября 2012 22:18 · Личное сообщение · #2 CodeMaster пишет: Я не могу понять,как сделать чтобы хэндл перехватываемого файла получить. Выполнить пост обработку результата вызова оригинального CreateFile, передав ей в точности все то что пришло в твой хук. CodeMaster пишет: Иными словами,представьте что Блокнот открывает зашифрованный файл и расшифровывает его в памяти,а мы его оттуда хотим утащить. И как первое связано со вторым? Ты теоретически перехватил открытие файла, и что с того? Кроме лога обращений к файлам это тебе нифига не даст, файл как был зашифрованный так и останется. Вот у тебя есть целевая программа, за поведением которой ты хочешь прошпионить. Как она работает с твоим чудесным фаелом? Открывает его, читает в свой буферок, делает с ним грязные штуки и че дальше? ![]() |
|
Создано: 28 ноября 2012 22:26 · Личное сообщение · #3 Alchemistry пишет: Выполнить пост обработку результата вызова оригинального CreateFile, передав ей в точности все то что пришло в твой хук. Не понимаю,объясните для блондинок. Внутри хука ещё один хук что-ли поставить и сделать рекурсию? Alchemistry пишет: Ты теоретически перехватил открытие файла, и что с того? Кроме лога обращений к файлам это тебе нифига не даст, файл как был зашифрованный так и останется. Не совсем так,у меня возможно файл расшифровывается уже перед вызовом CreateFile ![]() |
|
Создано: 28 ноября 2012 22:43 · Личное сообщение · #4 Модераторы простите меня великодушно. CodeMaster у меня возможно файл расшифровывается уже перед вызовом CreateFile Это напалм. ![]() Магия вуду или нам нужно угадать как? Отвечает Александр Друзь. ![]() Внутри хука ещё один хук что-ли поставить Почему бы и нет, что тут такого? ![]() |
|
Создано: 28 ноября 2012 23:04 · Личное сообщение · #5 Мне походу дела надо вот что сделать: выполнить функцию NtQuerySystemInformation c параметром SystemHandleInformation , я получу список всех открытых хэндлов процесса. Среди них будет нужный файл, и его хэндл просто подставить в функцию hFile1:=TrueCreateFileW(ukradhand,.... Размер файла только не получится определить через GetFileSize,там придется какие-то извращения придумывать с буфером (читать до тех пор,пока данные не закончатся) Вроде всё понятно,но как реализовать чтоб работало - хз ![]() |
|
Создано: 28 ноября 2012 23:46 · Личное сообщение · #6 CodeMaster Ох и бред же вы пишете. Особенно своей бредовостью меня поразил последний пост. Какой NtQuerySystemInformation? И куда вы будете подставлять найденный хэндл - в CreateFile? А вас не смущает, что она в качестве входных параметров хэндл не принимает? Потом что там за бред про рекурсию? Никакой рекурсии. Перехваты делятся на два вида (грубо) - перехват выполняет предварительную фильтрацию входных параметров, т.е. не открывает некоторые файлы с определённой подстрокой в имени, например. Либо второй вид - перехват выполняется для фильтрации результатов выполненной функции - например, вы вызвали CreateFile, а потом вместо хэндла, который она вернула, подсунули хэндл вашего ранее открытого файла (х.з., зачем это нужно, просто пример привожу). Т.е. вариант 1: Вызов перехвата сводится либо к вызову оригинальной функции, либо к возврату из перехвата без вызова оригинала. Вариант 2: Вызов перехвата сводится к обязательному вызову оригинала, а вот фитрация либо что-то делает, либо возвращает результат неизменным. А теперь вы по пунктам попытайтесь объяснить, что вам нужно сделать. Не надо делать догадок, как, вы напишите, что, а как - подскажут. ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 29 ноября 2012 14:12 · Личное сообщение · #7 ARCHANGEL Хэндл можно подставить с NtCreateFile ,если переделать библиотеку под её перехват. Насколько это глупо - я не знаю,но мысли такие есть. Что я хочу: есть зашифрованный файл,есть его расшифрованная копия (размеры полностью совпадают), есть процесс который открывает файл и дешифрует его в памяти. Моя задача - получить на диске файл,полностью такой же как эталон. Что у меня сейчас есть: исходники для перехвата CreateFileW и копирования файла, всё замечательно работает если бы не одна пакость: при открытии защищенного файла получаем на диске test.pak правильного размера,весь забитый нулями. Почему так - хз,по идее должен был просто скопироваться зашифрованный файл. ![]() |
|
Создано: 29 ноября 2012 14:43 · Личное сообщение · #8 |
|
Создано: 29 ноября 2012 19:21 · Личное сообщение · #9 Вот накатал рабочий перехватчик для NtCreateFile: Code:
Как мне теперь узнать адрес буфера,куда расшифровывается файл в памяти после перехвата NtCreateFile? Или достаточно будет его прочитать и записать? ![]() |
|
Создано: 29 ноября 2012 19:35 · Личное сообщение · #10 ![]() CodeMaster пишет: Как мне теперь узнать адрес буфера,куда расшифровывается файл в памяти после перехвата NtCreateFile? Спроси у Ванги. Заодно поинтересуйся у нее зачем ты перехватил NtCreateFile. Чтение из файла идет не через CreateFile, а через ReadFile, а может вообще быть через мапинг и буфер может быть выделен динамически, а может быть определен статически массивом определенной длины. Где это в программе и как это связано с твоим гавнокодом неизвестно никому. В общем, лучшим решением твоей проблемы будет это http://exelab.ru/f/action=vthread&forum=1&topic=17633 Кто хочет почитать предыдущие похождения ТС, см. http://www.cyberforum.ru/delphi-winapi/thread698419.html, ищите темы пользователя, все в том же ключе что и тут. ![]() |
|
Создано: 29 ноября 2012 19:43 · Личное сообщение · #11 Почему-то копироваться не хочет через NtCreateFile: Code:
![]() |
|
Создано: 29 ноября 2012 20:41 · Личное сообщение · #12 CodeMaster Код: no comments Code:
![]() |
|
Создано: 29 ноября 2012 20:44 · Поправил: CodeMaster · Личное сообщение · #13 |
|
Создано: 29 ноября 2012 20:57 · Личное сообщение · #14 |
|
Создано: 29 ноября 2012 21:20 · Личное сообщение · #15 Ещё у меня такой вопрос: когда мы перехватили NtCreateFile, у нас есть FileHandle Я пытаюсь получить имя файла по его хэндлу,для этого: Code:
Сама функция: Code:
Не работает. Я сделал преобразование PHandle --->HWND ,или вообще не в ту сторону копаю? Мне надо чтобы в test.pak копировался перехватываемый файл ![]() |
|
Создано: 29 ноября 2012 21:28 · Личное сообщение · #16 CodeMaster Ты или тролль или упоротый. HWND это окно. Верни свой гавнокод предыдущий с CreateFile и сделай в хуке этом своем однопоточном CopyFile (http://msdn.microsoft.com/ru-ru/library/windows/desktop/aa363851(v=vs.85).aspx) - победа. ![]() |
|
Создано: 29 ноября 2012 21:31 · Личное сообщение · #17 |
|
Создано: 29 ноября 2012 21:43 · Личное сообщение · #18 Alchemistry Вот здесь пишут что можно так преобразовывать PHandle в HWND. Это одно и тоже ведь,просто Борланд их разделили в описании. ![]() |
|
Создано: 29 ноября 2012 22:10 · Личное сообщение · #19 |
|
Создано: 29 ноября 2012 22:20 · Личное сообщение · #20 Alchemistry пишет: сделай в хуке этом своем однопоточном CopyFile Да вот надо попробовать.Я на самом деле не пойму почему у меня ничего не копируется в CreateFile. Расшифровка виртуальной файловой системы производится драйвером,абсолютно прозрачно для целевого приложения.Оно просто напросто знать не знает,какой ему файл подсунули - зашифрованный или расшифрованный. ![]() |
|
Создано: 29 ноября 2012 22:29 · Поправил: Модератор · Личное сообщение · #21 |
|
Создано: 29 ноября 2012 22:51 · Личное сообщение · #22 |
|
Создано: 29 ноября 2012 23:20 · Личное сообщение · #23 Автор регулярно становится ржакой для всего форума, получает пинка, но быстро бежит обратно. Но ничего, клоуны иногда тоже нужны. Собственно, очередной пинок, с нетерпением запасаемся поп-корном и ждём лулзов от другого ника, как он будет снова городить свой велосипед с квадратными колёсами, не имея знаний ни про одну из его деталей. ![]() |
<< . 1 . 2 . |
![]() |
eXeL@B —› Программирование —› Не работает inject dll (исходник прилагается) |
Эта тема закрыта. Ответы больше не принимаются. |