Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2020, 17:27   #1
wadic2
Новичок
Джуниор
 
Регистрация: 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-х языках (Си, с++), при условии что к примеру паскаль вызывает Си, а Си у нас уже есть. Ну а как ловить на ассемблере вообще
не приложу ума. Можно моим способом. И раз уж требуется защита и на ассемблере, то имеет смысл писать на ассемблере. Изначально я так и
думал, ведь все языки транслируются на ассемблер. Ну или средствами ОС ловить. В общем напишите что Вы думаете и почему именно так
предлагаете реализовывать. Если кто занимался антивирусниками, то скажите, может моя затея вообще не стоит свеч и главное почему. Моей
задумкой я хочу разом обезопасить пк, так что совет нужен, что я не учел, как еще можно незаконно получить доступ к файлу (интернет сеть
при этом будет). Ну и как Вы заметили, стандартных средств защиты линукс мне мало, так как там по моему нет для владельца возможности
ограничить доступ вообще (и на чтение). Да и хочется продублировать защиту линукс, чтобы быть уверенным что вирус не пройдет.
wadic2 вне форума Ответить с цитированием
Старый 13.10.2020, 09:14   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от wadic2 Посмотреть сообщение
так как там по моему нет для владельца возможности
ограничить доступ вообще (и на чтение).
Вы глубоко заблуждаетесь.
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой тип нужно присвоить 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