Название: WinAPI запуск файла с памяти и перехват API Отправлено: bixbit от Апрель 12, 2012, 21:20 Есть файл
нужно открыть файл ы изменить в нем даные (например сделать xor для файла) ы не сохраняя даные в входящий файл, а в идеале не сохрання на диск запустить на исполнение ассоциированой прогарммой пробовал експерементировать с времеными файлами ы проекцией файла в память, но не добился результата (не смог запустить файл имея только хендл) Название: Re: WinAPI запуск файла с памяти Отправлено: V1KT0P от Апрель 12, 2012, 21:25 Есть файл RAM disk спасет тебя =).нужно открыть файл ы изменить в нем даные (например сделать xor для файла) ы не сохраняя даные в входящий файл, а в идеале не сохрання на диск запустить на исполнение ассоциированой прогарммой пробовал експерементировать с времеными файлами ы проекцией файла в память, но не добился результата (не смог запустить файл имея только хендл) Название: Re: WinAPI запуск файла с памяти Отправлено: bixbit от Апрель 12, 2012, 21:55 RAM disk спасет тебя =). так он смонтирует раздел, но проблема останетсяили я не так понял? Название: Re: WinAPI запуск файла с памяти Отправлено: Alex Custov от Апрель 13, 2012, 11:11 записывай временный файл
Название: Re: WinAPI запуск файла с памяти Отправлено: bixbit от Апрель 13, 2012, 16:12 записывай временный файл я уже делал так, но как мне его запустить на выполнение имея HANDLE?тоесть мне нужно, чтоб файл нельзя был открыть в другой программе пока моя программа запущена, но можно было б передать на исполнение конткретной программе только для чтения Название: Re: WinAPI запуск файла с памяти Отправлено: Igors от Апрель 13, 2012, 16:25 записывай временный файл я уже делал так, но как мне его запустить на выполнение имея HANDLE?тоесть мне нужно, чтоб файл нельзя был открыть в другой программе пока моя программа запущена Если уж все равно придется копаться в WinAPI, то есть смысл посмотреть: LoadModule/LoadLibrary имеет возможность (одну из опций) грузить но не выполнять. Может там удастся проскочить (хотя шансов мало) Название: Re: WinAPI запуск файла с памяти Отправлено: V1KT0P от Апрель 13, 2012, 17:34 записывай временный файл я уже делал так, но как мне его запустить на выполнение имея HANDLE?тоесть мне нужно, чтоб файл нельзя был открыть в другой программе пока моя программа запущена, но можно было б передать на исполнение конткретной программе только для чтения Чем тебе не нравится писать в RAM диск с одним и тем-же именем? Если ты хочешь реверснуть программа или протокол то лучше используй IDA, OllyDbg и т.д. А то впечатление складывается что ты хочешь "удалить зуб через жопу". Название: Re: WinAPI запуск файла с памяти Отправлено: bixbit от Апрель 13, 2012, 17:52 Ну извращаться с правами доступа, запускать все равно через имя файла. да я уже понял что через хендл не получится(Если уж все равно придется копаться в WinAPI, то есть смысл посмотреть: LoadModule/LoadLibrary имеет возможность (одну из опций) грузить но не выполнять. Может там удастся проскочить (хотя шансов мало) LoadModule/LoadLibrary не подошли The parameter is incorrect/The process cannot access the file because it is being used by another processможет в сторону хуков надо смотреть? Как уже тебе сказали ты можешь через права ограничить доступ к файлу. Другое дело что той программе которой подсунешь может отказаться его принимать если захочет с доступом на чтение. Ты просто хочешь чего-то странного. как именно организовать ограничение прав?Чем тебе не нравится писать в RAM диск с одним и тем-же именем? Если ты хочешь реверснуть программа или протокол то лучше используй IDA, OllyDbg и т.д. А то впечатление складывается что ты хочешь "удалить зуб через жопу". я не совсем поимаю роботу с рам диском так ничего станного я не хочу надо открыть файл разшыфровать его и не сохрання в первичный запустить асоциированой програмой Название: Re: WinAPI запуск файла с памяти Отправлено: Igors от Апрель 13, 2012, 18:13 LoadModule/LoadLibrary не подошли The parameter is incorrect/The process cannot access the file because it is being used by another process Что-то слишком быстро они "не подошли". Удастся запустить или нет - но как минимум загрузка должна пройти без ошибки. Откуда взялся тот "another process"? Что-то не такНазвание: Re: WinAPI запуск файла с памяти Отправлено: V1KT0P от Апрель 13, 2012, 18:16 Ну извращаться с правами доступа, запускать все равно через имя файла. да я уже понял что через хендл не получится(Если уж все равно придется копаться в WinAPI, то есть смысл посмотреть: LoadModule/LoadLibrary имеет возможность (одну из опций) грузить но не выполнять. Может там удастся проскочить (хотя шансов мало) LoadModule/LoadLibrary не подошли The parameter is incorrect/The process cannot access the file because it is being used by another processможет в сторону хуков надо смотреть? Как уже тебе сказали ты можешь через права ограничить доступ к файлу. Другое дело что той программе которой подсунешь может отказаться его принимать если захочет с доступом на чтение. Ты просто хочешь чего-то странного. как именно организовать ограничение прав?Чем тебе не нравится писать в RAM диск с одним и тем-же именем? Если ты хочешь реверснуть программа или протокол то лучше используй IDA, OllyDbg и т.д. А то впечатление складывается что ты хочешь "удалить зуб через жопу". я не совсем поимаю роботу с рам диском так ничего станного я не хочу надо открыть файл разшыфровать его и не сохрання в первичный запустить асоциированой програмой На WinApi могу посоветовать перехватывать функции работы с файлами и директориями. И через перехват эмулировать наличие файла, но давать доступ только тому приложению которому разрешено. Но сразу скажу средний специалист легко перехватит расшифрованный файл. А достаточно опытные еще и разберут алгоритм расшифровки. Тут нет 100% способов защиты. Ты можешь два месяца вешать разной степени сложности защиты, а программа будет взломана за пару дней. Хорошим примером служат игры, какие защиты не вешают все взламывается. Название: Re: WinAPI запуск файла с памяти Отправлено: Igors от Апрель 13, 2012, 20:00 разшыфровать его и не сохрання в первичный запустить асоциированой програмой А какой смысл расшифровки данных для ассоциированого приложения? Ну напр "секретная картинка" (крутые писи-сиси) открывается для вьюера который имеет выбор сохранить ее в неск форматах. И чего добились шифрованием исходного файла? :)Название: Re: WinAPI запуск файла с памяти Отправлено: bixbit от Апрель 13, 2012, 20:34 Что-то слишком быстро они "не подошли". Удастся запустить или нет - но как минимум загрузка должна пройти без ошибки. Откуда взялся тот "another process"? Что-то не так Да я пробовал запустить файл, уже открытый через хендл :)В других случаях я б использовал ShellExecute разшыфровать его и не сохрання в первичный запустить асоциированой програмой А какой смысл расшифровки данных для ассоциированого приложения? Ну напр "секретная картинка" (крутые писи-сиси) открывается для вьюера который имеет выбор сохранить ее в неск форматах. И чего добились шифрованием исходного файла? :)А ну теперь хоть стала ясна задача, так бы сразу и написал что хочешь обеспечить защиту шифрованных файлов. Да я знаю, что идеальной защиты нет. Задание больше в целях ознакомления с системами защиты средствами API, чем в целях безопасности.На WinApi могу посоветовать перехватывать функции работы с файлами и директориями. И через перехват эмулировать наличие файла, но давать доступ только тому приложению которому разрешено. Но сразу скажу средний специалист легко перехватит расшифрованный файл. А достаточно опытные еще и разберут алгоритм расшифровки. Тут нет 100% способов защиты. Ты можешь два месяца вешать разной степени сложности защиты, а программа будет взломана за пару дней. Хорошим примером служат игры, какие защиты не вешают все взламывается. А почему просто не перехвытовать открытие, перемищение и копирование? Читаю тут в Рихтера про хуки, но почему-то пример LastMsgBoxInfo приведеный в книжке не работает :-[ Название: Re: WinAPI запуск файла с памяти Отправлено: Igors от Апрель 13, 2012, 20:51 Хмм.. ну критиковать легко, спрашивать "а как же звучит задание" и.т.п. - долгие разборки но (как правило) без всякого полезного результата.
Хорошо, а если зайти с др стороны - повесить "фильтр/хук" просто на чтение файла? Мои познания в WinAPI давно устарели, но, по идее, это "должно быть". Вызывающий наш - делаем напр хоr (получаем хорошие данные) иначе нет. Название: Re: WinAPI запуск файла с памяти Отправлено: bixbit от Апрель 13, 2012, 21:31 Хмм.. ну критиковать легко, спрашивать "а как же звучит задание" и.т.п. - долгие разборки но (как правило) без всякого полезного результата. В общих чертах задание звучит: "На любую манипуляцию файла спросить пароль. При открытии из-под другой ОС "каша" а не файл."Хорошо, а если зайти с др стороны - повесить "фильтр/хук" просто на чтение файла? Мои познания в WinAPI давно устарели, но, по идее, это "должно быть". Вызывающий наш - делаем напр хоr (получаем хорошие данные) иначе нет. Такой вопрос какой самый простой вариант внедрения хука? Название: Re: WinAPI запуск файла с памяти Отправлено: V1KT0P от Апрель 13, 2012, 21:58 Хмм.. ну критиковать легко, спрашивать "а как же звучит задание" и.т.п. - долгие разборки но (как правило) без всякого полезного результата. В общих чертах задание звучит: "На любую манипуляцию файла спросить пароль. При открытии из-под другой ОС "каша" а не файл."Хорошо, а если зайти с др стороны - повесить "фильтр/хук" просто на чтение файла? Мои познания в WinAPI давно устарели, но, по идее, это "должно быть". Вызывающий наш - делаем напр хоr (получаем хорошие данные) иначе нет. Такой вопрос какой самый простой вариант внедрения хука? Название: Re: WinAPI запуск файла с памяти Отправлено: bixbit от Апрель 18, 2012, 19:42 Хмм.. ну критиковать легко, спрашивать "а как же звучит задание" и.т.п. - долгие разборки но (как правило) без всякого полезного результата. В общих чертах задание звучит: "На любую манипуляцию файла спросить пароль. При открытии из-под другой ОС "каша" а не файл."Хорошо, а если зайти с др стороны - повесить "фильтр/хук" просто на чтение файла? Мои познания в WinAPI давно устарели, но, по идее, это "должно быть". Вызывающий наш - делаем напр хоr (получаем хорошие данные) иначе нет. Такой вопрос какой самый простой вариант внедрения хука? еще пригодилась http://www.rsdn.ru/article/baseserv/apicallsintercepting.xml Возник такой вопрос Какие функции нужно перехватывать для работы с файлом (запуск, копирование, переименование, перемещение) А то я пробовал перхватывать для проверки CreateDirectory. Для примера созданого мной перехват проходит, а для екслорера нет Название: Re: WinAPI запуск файла с памяти Отправлено: V1KT0P от Апрель 18, 2012, 20:27 Хмм.. ну критиковать легко, спрашивать "а как же звучит задание" и.т.п. - долгие разборки но (как правило) без всякого полезного результата. В общих чертах задание звучит: "На любую манипуляцию файла спросить пароль. При открытии из-под другой ОС "каша" а не файл."Хорошо, а если зайти с др стороны - повесить "фильтр/хук" просто на чтение файла? Мои познания в WinAPI давно устарели, но, по идее, это "должно быть". Вызывающий наш - делаем напр хоr (получаем хорошие данные) иначе нет. Такой вопрос какой самый простой вариант внедрения хука? еще пригодилась http://www.rsdn.ru/article/baseserv/apicallsintercepting.xml Возник такой вопрос Какие функции нужно перехватывать для работы с файлом (запуск, копирование, переименование, перемещение) А то я пробовал перхватывать для проверки CreateDirectory. Для примера созданого мной перехват проходит, а для екслорера нет Вот например функции для работы с директориями: http://msdn.microsoft.com/en-us/library/windows/desktop/aa363950%28v=vs.85%29.aspx (http://msdn.microsoft.com/en-us/library/windows/desktop/aa363950%28v=vs.85%29.aspx) А вот для файлов: http://msdn.microsoft.com/en-us/library/windows/desktop/aa364232%28v=vs.85%29.aspx (http://msdn.microsoft.com/en-us/library/windows/desktop/aa364232%28v=vs.85%29.aspx) Название: Re: WinAPI запуск файла с памяти Отправлено: bixbit от Апрель 21, 2012, 01:19 Хмм.. ну критиковать легко, спрашивать "а как же звучит задание" и.т.п. - долгие разборки но (как правило) без всякого полезного результата. В общих чертах задание звучит: "На любую манипуляцию файла спросить пароль. При открытии из-под другой ОС "каша" а не файл."Хорошо, а если зайти с др стороны - повесить "фильтр/хук" просто на чтение файла? Мои познания в WinAPI давно устарели, но, по идее, это "должно быть". Вызывающий наш - делаем напр хоr (получаем хорошие данные) иначе нет. Такой вопрос какой самый простой вариант внедрения хука? еще пригодилась http://www.rsdn.ru/article/baseserv/apicallsintercepting.xml Возник такой вопрос Какие функции нужно перехватывать для работы с файлом (запуск, копирование, переименование, перемещение) А то я пробовал перхватывать для проверки CreateDirectory. Для примера созданого мной перехват проходит, а для екслорера нет Вот например функции для работы с директориями: http://msdn.microsoft.com/en-us/library/windows/desktop/aa363950%28v=vs.85%29.aspx (http://msdn.microsoft.com/en-us/library/windows/desktop/aa363950%28v=vs.85%29.aspx) А вот для файлов: http://msdn.microsoft.com/en-us/library/windows/desktop/aa364232%28v=vs.85%29.aspx (http://msdn.microsoft.com/en-us/library/windows/desktop/aa364232%28v=vs.85%29.aspx) В чём проблема? И еще для какой функции нужно делать перехват при запуску асоциированой программой? Название: Re: WinAPI запуск файла с памяти Отправлено: V1KT0P от Апрель 21, 2012, 13:10 Перехватил все функии для копирования файлов, но експлорер не реагирует на перехват (в far перехватывает CopyFileA) Если точно уверен что перехватываешь все, то смотри в сторону недокументированных функций. Там много интересного, и возможно експлорер через них и получает информацию.В чём проблема? И еще для какой функции нужно делать перехват при запуску асоциированой программой? Название: Re: WinAPI запуск файла с памяти Отправлено: bixbit от Апрель 21, 2012, 14:05 Перехватил все функии для копирования файлов, но експлорер не реагирует на перехват (в far перехватывает CopyFileA) Если точно уверен что перехватываешь все, то смотри в сторону недокументированных функций. Там много интересного, и возможно експлорер через них и получает информацию.В чём проблема? И еще для какой функции нужно делать перехват при запуску асоциированой программой? Теперь я не могу понять как експолрер такое проворачивает? Копирование файла readme.txt (http://s019.radikal.ru/i631/1204/ba/5da6b53afcbd.jpg) Название: Re: WinAPI запуск файла с памяти Отправлено: V1KT0P от Апрель 21, 2012, 21:41 Перехватил все функии для копирования файлов, но експлорер не реагирует на перехват (в far перехватывает CopyFileA) Если точно уверен что перехватываешь все, то смотри в сторону недокументированных функций. Там много интересного, и возможно експлорер через них и получает информацию.В чём проблема? И еще для какой функции нужно делать перехват при запуску асоциированой программой? Теперь я не могу понять как експолрер такое проворачивает? Копирование файла readme.txt (http://s019.radikal.ru/i631/1204/ba/5da6b53afcbd.jpg) Я не пойму в чем у тебя проблема. Сделай фейковый файл и возвращай размер который необходим. А затем если его считывает программа которой не разрешен доступ отдавай нули или вообще не давай читать. А если та которой разрешили то отдавай настоящие данные. В итоге реальные данные находятся только в оперативке а на диске пустой файл. Название: Re: WinAPI запуск файла с памяти Отправлено: bixbit от Апрель 21, 2012, 23:00 Вроде как есплорер тупо прочитал данные, а затем записал в новый файл. Если я все правильно понял. Тут другая проблема появилась.Я не пойму в чем у тебя проблема. Сделай фейковый файл и возвращай размер который необходим. А затем если его считывает программа которой не разрешен доступ отдавай нули или вообще не давай читать. А если та которой разрешили то отдавай настоящие данные. В итоге реальные данные находятся только в оперативке а на диске пустой файл. Такой код вылетает. Именно через if насколько я понимаю. Но в чём причина? Код: HANDLE Название: Re: WinAPI запуск файла с памяти Отправлено: V1KT0P от Апрель 21, 2012, 23:08 Тут другая проблема появилась. И как ты себе такой хук представляешь? Как только ОС или программа начинает читать по идее начнут бешено появляться сообщения и тем самым подвесят. Лучше в файл записывай. Вообще хуки принято делать так, чтоб они выполнялись максимально быстро а не подвешивали все подряд.Такой код вылетает. Именно через if насколько я понимаю. Но в чём причина? Код: HANDLE Название: Re: WinAPI запуск файла с памяти Отправлено: bixbit от Апрель 21, 2012, 23:16 Тут другая проблема появилась. И как ты себе такой хук представляешь? Как только ОС или программа начинает читать по идее начнут бешено появляться сообщения и тем самым подвесят. Лучше в файл записывай. Вообще хуки принято делать так, чтоб они выполнялись максимально быстро а не подвешивали все подряд.Такой код вылетает. Именно через if насколько я понимаю. Но в чём причина? Код: HANDLE В глобалном здесь вместо Код: if(dwDesiredAccess==FILE_SHARE_READ) Код: if(lpFileName==L"C:\\Users\\User\\Desktop\\readme.txt") Название: Re: WinAPI запуск файла с памяти Отправлено: V1KT0P от Апрель 21, 2012, 23:23 Так дело в том что при первом что при втором программа вылетает Если MessageBox заменить на запись в другой файл то тоже вылетает?Название: Re: WinAPI запуск файла с памяти Отправлено: bixbit от Апрель 21, 2012, 23:28 Так дело в том что при первом что при втором программа вылетает Если MessageBox заменить на запись в другой файл то тоже вылетает?Код: if(lpFileName==L"C:\\Users\\User\\Desktop\\readme.txt") Название: Re: WinAPI запуск файла с памяти Отправлено: bixbit от Апрель 22, 2012, 23:00 Так дело в том что при первом что при втором программа вылетает Если MessageBox заменить на запись в другой файл то тоже вылетает?Код: if(lpFileName==L"C:\\Users\\User\\Desktop\\readme.txt") Пересобрал проект с нуля и все работает :) Заметил одну особенность Код: LPCSTR rez="C:\\Users\\User\\Desktop\\readme.txt"; Название: Re: WinAPI запуск файла с памяти Отправлено: Igors от Апрель 23, 2012, 10:24 почему проверка через memcmp проходит, а через == нет? Потому что == сравнивает адреса, а memcmp содержимое. |