麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Delphi > 正文

用Delphi5.0實現注冊表監視

2019-11-18 18:42:43
字體:
來源:轉載
供稿:網友

用Delphi5.0實現注冊表監視


中南大學湘雅二醫院信息中心 朱洪濤

 

隨著Internet的不斷普及,網絡安全越來越受到人們的重視。除了計算機病毒以外,網上不斷出現的的各類黑客軟件、遠程控制軟件等,更讓人們對自己的機器越來越不放心。而這類軟件的多樣性及不斷更新等,使得單靠一些防病毒軟件已不能完全保護自己的機器。

有沒有什么好的方法防止來歷不明的軟件安裝在自己的機器上呢?答案就是密切注意系統關鍵文件的變化。大家都知道,一個程序如果要在Windows啟動時自動運行,一般有三種方法:
1.在開始菜單的[啟動]組中加入快捷方式
2.在Win.ini中加入相關項目
3.在注冊表的 HKEY_Local_Machine/SoftWare/Microsoft/Windows/CurrentVersion/Run主鍵下加入指向自己的鍵值。
而第一種方法太明顯,很容易發現。所以一般的黑客程序使用后兩種方法啟動自己。筆者在此介紹一個自己編寫的簡單的注冊表監視器,用于實時監視注冊表中鍵值的變化,以發現不明來歷的程序。讀者有興趣的可以在此基礎上進一步完善。
程序設計思路
本程序用Delphi5.0開發。Delphi是Borland公司出品的快速可視化Windows程序開發工具,功能強大,易于使用。程序中通過一個定時器來實現每隔一定時間對注冊表比較一次。程序在啟動時保留一份原始的注冊表相關鍵值的數據備份,然后定時和當前的鍵值進行比較,如果發現變化,則提示用戶查看。
程序實現
1、在Delphi中建立一個新的PRoject,將Form1改名為FormMain
2、在FormMain上放置一個定時器控件TTimer,將Project保存為PiRegWatch.Dpr
3、修改PiRegWatch.Dpr中的代碼:
 application.Initialize;
Application.CreateForm(TFormMain, FormMain);
//使主窗口啟動時不顯示
Application.ShowMainForm:=False;
Application.Run;
在FormMain中增加幾個對象。
對象類型說明
RegTregistry用于注冊表的訪問
IniFileTiniFile用于保存原始注冊表數據
LogTstringList用于記錄變化的日志
RegKeysTstringList用于存放Run分支下的主鍵名
4、在FormMain:OnCreate事件中保留原始注冊表數據,主要代碼如下:
……
self.Reg:=TRegistry.Create;
with self.Reg do
begin
RootKey:=HKEY_Local_Machine;
If OpenKey('Software/Microsoft/Windows/CurrentVersion/Run',false)
then
begin
RegKeys:=TStringList.Create;
GetValueNames(RegKeys); //取得Run下面的所有主鍵名
if not self.IniFile.SectionExists('RunList') then //如果沒有保存過數據
begin
for i:=0 to Regkeys.Count-1 do //保存原始數據
if (self.Reg.GetDataType(RegKeys.Strings[i])=rdString)
or(self.Reg.GetDataType(RegKeys.Strings[i])=rdExpandString)
then begin
value:=self.Reg.ReadString(RegKeys.Strings[i]);
self.IniFile.WriteString('RunList',RegKeys.Strings[i],value);
end;
end;
end;
end;
……
5、在TTimer1.OnTmer事件中加入比較注冊表的代碼。主要代碼如下:
procedure TFormMain.Timer1Timer(Sender: TObject);
var i:integer;
RegVal,IniVal:string;
begin
self.Timer1.Enabled:=False;
self.Reg.GetValueNames(RegKeys);
for i:=0 to RegKeys.Count-1 do //檢查新加的和已修改了的鍵值
if (self.Reg.GetDataType(RegKeys.Strings[i])=rdString)
or (self.Reg.GetDataType(RegKeys.Strings[i])=rdExpandString)
then begin
RegVal:=self.Reg.ReadString(RegKeys.Strings[i]);
IniVal:=self.IniFile.ReadString('RunList',RegKeys.Strings[i],'');
if RegVal<>IniVal then
begin
self.LogMsg('Item Add:'+RegKeys.Strings[i]+'='+RegVal);
self.IniFile.WriteString('RunList',RegKeys.Strings[i],RegVal);
try
//提示用戶
SendMsg('ABC','','注冊表被改變:新增項目'+RegKeys.Strings[i]+'='+RegVal);
finally
end;
end;
end;
self.IniFile.ReadSection('RunList',RegKeys);
for i:=0 to RegKeys.Count-1 do //檢查已被刪除的鍵值
begin
IniVal:=self.IniFile.ReadString('RunList',RegKeys.Strings[i],'');
if self.Reg.ValueExists(RegKeys.Strings[i]) and
((self.Reg.GetDataType(RegKeys.Strings[i])=rdString)
or (self.Reg.GetDataType(RegKeys.Strings[i])=rdExpandString) )
then
RegVal:=self.Reg.ReadString(RegKeys.Strings[i])
else
RegVal:='';
if (IniVal<>'') and (RegVal='') then
begin
self.LogMsg('Item Del:'+RegKeys.Strings[i]+'='+IniVal);
self.IniFile.DeleteKey('RunList',RegKeys.Strings[i]);
try
SendMsg('ABC','','注冊表被改變:項目刪除'+RegKeys.Strings[i]+'='+IniVal);
finally
end;
end;
end;
self.IniFile.UpdateFile;
self.Timer1.Enabled:=True;
end;
6、在FormMain:OnClose事件中進行對象釋放及必要的清理工作
procedure TFormMain.FormClose(Sender: TObject; var Action:TCloseAction);
begin
if Assigned(self.Reg) then self.Reg.Free;
if Assigned(self.IniFile) then self.IniFile.Free;
if Assigned(self.LogFile) then self.LogFile.Free;
if Assigned(self.RegKeys) then self.RegKeys.Free;
end;
經過實際運行,該程序在發現來歷不明的程序方面確實能起到一定的作用。當然,它的功能也很單一,如果要進一步完善,增加監視系統其他關鍵文件的變化,則效果會更好。希望能與有興趣的讀者交流。

上一篇:《delphi高手突破》節選一

下一篇:delphi函數參考手冊

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 国产视频在线观看一区二区三区 | 亚洲欧美一区二区三区在线观看 | 国内精品伊人久久 | 视频一区二区中文字幕 | 国产午夜精品一区二区三区嫩草 | 欧美性猛交一区二区三区精品 | 久久久久在线观看 | av在线免费网| 91午夜在线观看 | 羞羞网站视频 | 天海翼无删减av三级在线观看 | 日韩精品网站在线观看 | 天天色综合6 | 男女羞羞的视频 | 久久区二区 | 依依成人综合 | 国产免费一区二区三区网站免费 | 日韩做爰视频免费 | 亚洲成人精品久久 | 日本a∨精品中文字幕在线 被啪羞羞视频在线观看 | 国产正在播放 | 欧美一级aa免费毛片 | 欧美一级精品片在线看 | 亚洲欧美日韩久久精品第一区 | 国产午夜精品一区二区三区在线观看 | 欧美不卡 | 99极品视频| 一级毛片免费高清视频 | 久久亚洲精品视频 | 麻豆视频在线观看 | 91快色视频| 国产人妖一区二区 | 色综合久久99 | 国产精选电影免费在线观看网站 | 国产欧美日韩视频在线观看 | 国产精品久久久久久久久久了 | 成人毛片网站 | 在线2区 | 国产一区二区三区高清 | 成人午夜在线免费视频 | 一本色道久久综合亚洲精品图片 |