|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.10.2020, 17:27 | #1 |
Новичок
Джуниор
Регистрация: 12.10.2020
Сообщений: 6
|
Нужно узнавать какой файл открывает программа
Всем привет! Просьба не отвечать тем, кому нечего сказать, тем кто не изучал устройство ОС, ассемблер, Си, с++ и не имеет как минимум 5-ти
лет обширного (с большим кругозором) опыта в программировании. Просто чтобы не засирали тему. Удалю тему, если такое будет. Требуется создать программу. Требования: Кроссплатформенность. Простота (несколько строк низкоуровнего кода). Производительность (программа срабатывает только когда кто-то пытается открыть файл). Не ооп. Быстрая разработка, но на низкоуровневом языке (ассемблер, си), вот как то так. При чем в этих языках познания не сильные (почти только начал, с графикой поработал, правда на с++), ассемблер чуть чуть знаю, ни одной программы не писал. О программе; Нужно узнавать какой файл открывает программа (любая программа, не моя). Я больше всего знаю php. Но писать буду на том, что подойдет для задачи. К примеру есть функция в вирусной программе (код на php буду приводить пока, лишнее уберу, чтобы понятней было, у php похож на с++): fopen("file.txt"); которая вызывает стандартную php-шевскую библиотечную функцию, которая описана к примеру так: fopen(FileName) { // Тут я прямо в библиотечной функции пишу свой код: if (FileName == "file.txt") { // Для начала достаточно вывести сообщение в терминал: "Кто-то пытается получить доступ у файлу file.txt". // После нужно будет реализовать окно с вопросом, что делать, открыть или прервать чтение файла. // После нужно будет реализовать return (в php этого достаточно, чтобы прервать выполнение программы и код ниже не будет выполнен). } // Какой то код библиотечный, который открывает файл, собственно выполняется работа fopen(). } Реализовывать на нескольких языках не хотелось бы. Код php транслируется в ассемблер, вот тут то и хочется поймать имя файла file.txt и решить что с ним делать. Но я смотрел ассемблер, там переменная, содержащая FileName, пишется человеком, поэтому не отследишь. Можно пробовать читать постоянно регистр, куда пишется FileName, но прочитаться может уже после того как вирус отработает, да и затратно. Смотрел Inotify, incron, пока не бурусь, так как чужое по, да и то сложности будут, когда буду разбираться как работает, кроме того не производительно. Еще нужно разъяснение, при чем тут ОС, я изучал устройство ОС линукс (мало), понимаю что запускается процесс и в теле процесса работает fopen(), ассемблер тоже в процессе запускается? Возможно задачу можно решить средствами ОС (системными вызовами), может проще, да и перехватить как можно раньше попытку открытия файла кстати будет. Но пока я не вижу что это проще, проще как я описал на примере вызова fopen(FileName) и работы этой функции в качестве библиотечной. Но тут тоже может быть не меньшая сложность, все это нужно сделать как минимум на 2-х языках (Си, с++), при условии что к примеру паскаль вызывает Си, а Си у нас уже есть. Ну а как ловить на ассемблере вообще не приложу ума. Можно моим способом. И раз уж требуется защита и на ассемблере, то имеет смысл писать на ассемблере. Изначально я так и думал, ведь все языки транслируются на ассемблер. Ну или средствами ОС ловить. В общем напишите что Вы думаете и почему именно так предлагаете реализовывать. Если кто занимался антивирусниками, то скажите, может моя затея вообще не стоит свеч и главное почему. Моей задумкой я хочу разом обезопасить пк, так что совет нужен, что я не учел, как еще можно незаконно получить доступ к файлу (интернет сеть при этом будет). Ну и как Вы заметили, стандартных средств защиты линукс мне мало, так как там по моему нет для владельца возможности ограничить доступ вообще (и на чтение). Да и хочется продублировать защиту линукс, чтобы быть уверенным что вирус не пройдет. |
13.10.2020, 09:14 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,343
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Какой тип нужно присвоить a,u,s,m,p, чтобы при их вводе в файл, выводилось число? | Настя1303 | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 04.10.2018 11:20 |
Какой язык программирования мне выбрать, если нужно чтобы программа смогла запустить .bat файлы? | ArindiL | Помощь студентам | 8 | 24.03.2013 16:48 |
ChromeFrame не открывает файл | demiancz | Общие вопросы Delphi | 2 | 09.01.2012 01:30 |
Программа не открывает файл функцией 3dh. | Maxim5579 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 5 | 18.03.2011 09:16 |
Excel открывает файл при запуске | Д'якон | Microsoft Office Excel | 5 | 05.05.2009 21:36 |