PDA

Показать полную графическую версию : Помощь в программе


O L E G
24-05-2012, 10:32
Нужен совет человека, который раpбирается хорошо в C++ или просто уже разбирается.
1.Хочу начать делать программу, которая будет защитать мною указанные файлы от изменения и удаления, будет только чтение на них
2.Программа не имеет интерфейса и всегда сидит скрыто в процессах, придумать защиту от выгрузки программы
3.Такая же защита на реестр, только чтение ветвей мною указанных
4.Ну и придумать сервис который будет саму программу запускать или просто в автозагрузку добавить
5.Думал над тем,может сделать не большой интерфейс, который будет в треи, Вкл и Откл защиты.

С чего можете посоветовать начать мне и сложно ли будет сделать такой проект?!
Все программы есть Visual 2010 Ultimat! Начал не давно, только учиться писать, читаю ((Хортон_Visual C++_2010)), достаточно ли мне будет этого или где то еще надо будет искать помощи людей или посоветуйте книги какие ни будь еще?
Спасибо за уделенное время)

softter
24-05-2012, 22:53
Самый простой путь без написания драйверов и перехвата API Windows - в памяти висят сразу 2 процесса и каждый проверяет наличие своего дублера. Если дублер убит сразу же запускается копия. Убить одновременно 2 процесса не просто, и пока будет убиваться один, стартует дубль.
Так же можно опрашивать значение файлов - ветвей реестра и при их изменении, менять значение назад.

ferget
24-05-2012, 22:59
Так же можно опрашивать значение файлов - ветвей реестра и при их изменении, менять значение назад. »
проще ставить им владельца system, а остальным разрешение только чтение

Iska
25-05-2012, 07:46
Убить одновременно 2 процесса не просто »
Элементарно. Нужно «заморозить» исполнение одного процесса, снять второй, затем снять первый.

P.S. Такую технологию (несколько следящих друг за другом процессов/служб) используют некоторые виды вирусов.

O L E G
25-05-2012, 09:11
проще ставить им владельца system, а остальным разрешение только чтение »
Устанавливал Владеьца System на ветвь Winlogon, а остальным чтение! ну конечно,кроме самой System полный доступ,так после этого система не запускается, не на всех ветвях это работает

Что то вроде такого на Vbs

wsh.Run("""subinacl"" /keyreg ""HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"" /grant=%username%=r /grant=system=f /setowner=system"), 0 ,True

Видел не которые Программы, устанавливают защиту на ветви и дают им доступ Только чтение, после выгрузки программы их можно изменить.
Вот что мне интересно!

На файлах я делал так: Iska, спасибо за разъеснение! опять же на vbs, хотелось бы это реализовать на C++ и такие же действия с реестром

Option Explicit

Const ReadOnly = &H01
Const ForReading = 1, ForWriting = 2, ForAppending = 8

Dim strFile
Dim fso, a, b, c, d, e, f, w

With wscript.CreateObject("Scripting.FileSystemObject")
Set fso = CreateObject("Scripting.FileSystemObject")
For Each strFile In Array("c:\boot.ini", "c:\ntldr", "c:\windows\explorer.exe", "c:\windows\system32\userinit.exe", "c:\windows\system32\drivers\etc\hosts", "c:\NTDETECT.COM", "c:\WINDOWS\win.ini")
If .FileExists(strFile) Then
With .GetFile(strFile)
.Attributes = .Attributes And Not ReadOnly
End With
End If
Next
End With

Set a = fso.OpenTextFile("C:\windows\system32\drivers\etc\hosts", ForAppending, True)
Set b = fso.OpenTextFile("C:\ntldr", ForAppending, True)
Set c = fso.OpenTextFile("C:\boot.ini", ForAppending, True)
Set d = fso.OpenTextFile("C:\windows\explorer.exe", ForReading, True)
Set e = fso.OpenTextFile("C:\Windows\system32\userinit.exe", ForAppending, True)
Set f = fso.OpenTextFile("c:\NTDETECT.COM", ForAppending, True)
Set w = fso.OpenTextFile("c:\windows\win.ini", ForAppending, True)

Do
With wscript.CreateObject("Scripting.FileSystemObject")
For Each strFile In Array("C:\boot.ini", "c:\ntldr", "c:\windows\explorer.exe", "c:\windows\system32\userinit.exe", "c:\windows\system32\drivers\etc\hosts", "c:\NTDETECT.COM", "c:\WINDOWS\win.ini")
If .FileExists(strFile) Then
With .GetFile(strFile)
.Attributes = .Attributes Or ReadOnly
End With
End If
Next
End With

wscript.Sleep 1
Loop

softter
25-05-2012, 13:53
Цитата softter:
Убить одновременно 2 процесса не просто »
Элементарно. Нужно «заморозить» исполнение одного процесса, снять второй, затем снять первый.
P.S. Такую технологию (несколько следящих друг за другом процессов/служб) используют некоторые виды вирусов. »

Интересно каким образом домохозяйка или бухгалтер в офисе это сделает, если запись в файле Hosts (127.0.0.1 vk.com) для них сродни катастрофе.
Системщик же покопавшись снимет любые ограничения.

P.S. Такую технологию (несколько следящих друг за другом процессов/служб) используют некоторые виды вирусов.
Вы правы, имел дело с Авторан вирусом, который таким образом зашищал свой процесс.

Iska
25-05-2012, 16:04
Интересно каким образом домохозяйка или бухгалтер в офисе это сделает, если запись в файле Hosts (127.0.0.1 vk.com) для них сродни катастрофе.»
Я обычно пользовался Process Explorer'ом; в нём есть подобный функционал.

имел дело с Авторан вирусом, который таким образом зашищал свой процесс. »
Аналогично, коллега. Была служба и два процесса.




© OSzone.net 2001-2012