技術論文分析分析論文《計算機病毒判定專家系統原理與設計》思考其在游戲中的應用

????????論文原文的引言主要有兩大部分的內容:介紹計算機病毒,明確本文使用的病毒分類方式;分析傳統計算機病毒檢測存在的弊端。對于計算機病毒的定義,文中給出的定義比較嚴謹,我自己查了一下現在百度百科的定義,兩者基本一致,都提到了計算機病毒包含了生物 病毒的特點,即病毒的傳染性、潛伏性、針對性和破壞性;不過現在很多的定義都多強調了是人為編寫的這一屬性。原文之后將計算機病毒按傳染的方式分,分為傳染磁盤引導區(BOOT)的計算機病毒和傳染可執行文件(FILE)的計算機病毒。

  1. 傳染磁盤引導區的計算機病毒:當時的電腦,應該主流是使用BIOS(Basic Input/Output System)進行啟動,對應的分區方式是MBR(Master Boot Record)。計算機會通過BIOS系統訪問到磁盤的首個扇區:MBR,就是原文中所謂的Boot區。MBR的大小一般是512字節,其中前面的446字節存儲著啟動操作系統的代碼,后面存儲著一些標識符和MBR的分區表等這里就不贅述了。而傳染磁盤引導區的計算機病毒同常是通過一種“轉儲與重定向”的技術實現對操作系統的奪取。大概的原理就是病毒程序會找到MBR,然后將MBR中健康的引導代碼(前446字節中存儲的啟動程序)復制到磁盤的一個隱蔽位置,然后重寫字節的引導代碼到MBR的引導代碼部分,這樣在BIOS啟動時,就會執行病毒代碼,致使病毒能夠奪取操作系統的控制權。這種病毒隱蔽性強,而且在操作系統啟動前就可以被啟用,能繞過絕大多數安全防護軟件。常見的病毒有Stoned,Michaelangelo。
  2. 傳染可執行文件的計算機病毒:這種病毒比較常見也比較熟悉。它們主要通過感染可執行文件(當時的.com和.exe)文件,讓系統在執行文件時,先執行病毒文件的程序,后執行健康程序達到感染電腦的目的。在DOS時代,有比較流行的病毒會創建一個與源文件(.exe)同名的.com文件。而因為DOS會先執行.com文件再執行.exe文件從而達到感染電腦的目的。

接著原文指出傳統計算機病毒檢測方法是在程序中尋找已發現病毒的特征串,如找到,則認為該程序染毒,否則,認為該程序是干凈的。這樣的方法有兩大弊端:容易誤檢健康程序、沒有辦法檢測病毒的變種。

  1. 誤檢健康程序:傳統病毒檢測方法的核心在于“病毒特征串”,這些特征串一般是一些特殊指令(如發送郵件、感染文件的機器指令)、特殊文本(嘲諷提示你的電腦已中毒的字符串)、文件結構特征變化等。在發現病毒后,病毒分析師一般會提取病毒文件,在隔離環境中提取“病毒特征串”提取出的特征串將會用于日后這類病毒的查殺。個人認為,可能是因為原文發表的年代提取特征串的技術不夠成熟,現在通過這種方式查殺誤檢率應該是不高的。
  2. 沒有辦法檢測病毒的變種:因為特征串需要在已發現的病毒中提取,新型的病毒就可以有意規避,導致傳統病毒查殺方法有較嚴重的滯后性。

原文的第二部分探討了病毒判定專家系統的基本原理,主要是從理論角度驗證這個專家系統的可行性。有兩個主要理論:病毒的不可判定原理和智能判定原理。

  1. 病毒的不可判定原理:原文其實想要表達兩點:1、馮·諾依曼體系結構讓病毒的存在不可避免,2、不存在可以百分百準確判斷程序是否為病毒的程序。首先馮·諾依曼的計算機體系結構是以存儲器為核心的,所以在這樣的體系結構里指令和數據在物理上的地位其實是相同的,這就導致指令是可以被修改,編寫的,這就給了滋養計算機病毒的土壤。原文對第二點其實沒有太講清楚,我們可以利用反證法證明一下。如果有一個程序A(疑似病毒程序)可以100%正確返回傳入的程序是否為病毒程序,那我們可以利用分支結構寫一個程序:如果程序A認為我是病毒,我就什么都不做;如果程序A認為我不是病毒,我就啟用病毒程序。這樣一個矛盾程序就可以證明程序A不可能存在。而這個反證法能成立也是“得益于”馮·諾伊曼體系結構,這樣這個矛盾程序能夠將自己作為參數傳遞給程序A,因為程序本身也就是一串數據。
  2. 智能判定原理:這一部分原文主要闡述了作者研發的專家系統的主要原理:通過判斷程序是否有傳染性來判斷這個程序是否是病毒。這個專家系統判定病毒有兩個主要過程:先搭建疑似病毒程序的運行環境,讓疑似程序在環境中運行并記錄可疑的運行結果;然后根據之前運行總結出的規則庫進行正向不精確推理機判斷這個程序是否為病毒。其中提到的MYCIN是早期用于醫療領域的專家系統,雖然是以簡單的IF-THEN的形式進行推理,但是引入了置信度系統,機器的回答不再是簡單的“是”或“否”而是可能性,原文作者應該也是引入了類似置信度系統搭建了正向不精確推理機。

原文的第三部分,也是論文的主體,介紹了這個病毒判定專家系統的設計方法。原文以傳染磁盤引導區的計算機病毒為例介紹專家系統的設計方法,先介紹了這種計算機病毒的主要原理,我在前文也大致描述過了,這里就不贅述了。不過其中有提到了游戲有自己的BOOT程序,容易受到攻擊。這類病毒更像是傳染磁盤引導區的計算機病毒和傳染可執行文件的計算機病毒的結合,通過修改游戲的BOOT啟動程序,達到接管游戲系統環境的目的,常見于破解的盜版游戲,盜版游戲Mod中。不過其實這類病毒制作難度較大,破壞范圍容易停留在游戲系統內部,所以并不常見。

來到核心的判斷邏輯上:

  1. 第一層判斷:未知BOOT程序是否為某個版本的DOS引導塊或已知軟件的引導快,若是,顯然就不是病毒。這里涉及到一個已知安全BOOT程序庫的搭建。
  2. 第二層判斷:若不在已知BOOT程序庫中,看這個程序是否為已知病毒BOOT。這里涉及到已知病毒BOOT程序庫的搭建。這兩個判斷看似簡單,其實對比傳統檢測更直接、更快速、更準確,而且為后面的專家系統的判斷減輕了很多負擔。
  3. 第三層判斷:如果兩個庫中都沒有,則需要運行這個BOOT程序,看是否會存在違反規則的情況出現,這里涉及到規則庫的搭建。

在第一層、第二層判斷中,因為各廠商的BOOT區的一些標識符并不相同,磁盤種類也不盡相同,所以這里的判斷不能是1對1的匹配,需要使用類似于模糊匹配的算法進行判斷。而且只匹配BOOT區的代碼部分(前文提到的前446字節的代碼部分)。

模糊匹配算法:

  1. 通過JMP語句找到第一條非JMP語句。這里的JMP語句是匯編語言中無條件跳轉指令,指向下一個需要執行的指令地址,通過代碼中的標簽信息獲取到整體BOOT的代碼長度。
  2. 對比未知BOOT代碼和需要對比的BOOT代碼獲取相同的字節數
  3. 用相同字節數/代碼長度,得出相同率。原文中認為95%以上的相同率就可以認為這個BOOT代碼是安全的,因為5%的代碼量至多十幾字節不足以完成一個病毒功能的編寫。
  4. 如果庫中的BOOT代碼為空則不做判斷,取庫中的下一個BOOT進行比較。

在第三層的判斷,也是整個專家系統最核心的部分中,原文先介紹了規則庫的構建。

原文通過分析大麻病毒(前文提到的Stone病毒)的工作流程提出了4條病毒BOOT程序會違反的原則:

  1. 在DOS自舉中,任何企圖接管敏感性中斷和高端駐留的請求都是不允許的。簡單來說攻擊BOOT的程序主要目的是要接管操作系統,而想要接管操作系統,就需要截獲中斷向量,要想截獲中斷向量,就需要駐留在內存中。因為DOS使用內存中的低端,所以一般BOOT病毒會使用高端駐留的方式,可以以此看BOOT程序是否為病毒。
  2. 磁盤引導扇中絕對不能出現寫盤指令。這一點比較顯而易見,因為正常健康的BOOT程序一般是不會有寫盤指令的。
  3. 中判別時間和產生隨機數進行判斷,都是可疑的。主要是提到病毒需要一個啟動條件,而這個條件往往通過時間的方式觸發。可以根據這個點判斷BOOT程序是否為病毒。
  4. 要密切注意最后控制權的移交。

根據這四條原則最終形成的規則庫能夠還不能比較準確的判斷未知BOOT程序是否為病毒程序,所以原文作者為構建的規則庫中的規則進行了加權。這樣可以構建出類似于MYCIN專家系統中的置信度體系,給出一個可能性,更加利于病毒的判斷。

這篇論文中,主要的思想是將專家系統的思想移植到病毒判斷的算法上,其核心在于模糊的不精確的判斷。而在圖形學領域其實存在非常多需要模糊判斷的問題,比如在角色的動畫與運動控制方面。現在常用IK生成可能的動作,但仍不算特別準確,像一直被困擾的角色上樓梯的問題。我感覺這方面其實也可以利用這篇論文的思想。通過一些角色運動不能違反的原則如:人的膝蓋不能向后彎曲、走路時手臂擺動與腿部運動相反等構建出一套知識庫。并利用生物力學和解刨學的規則完善規則庫,甚至是通過不停的實機測試完善規則庫。通過這個規則庫我們就能比較準確的判斷某個角色動畫是否合理,從而制作出更加合理的角色動畫。

參考文獻

[1]雷軍.計算機病毒判定專家系統原理與設計[J].計算機研究與發展,1992,(08):53-59+66.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/96802.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/96802.shtml
英文地址,請注明出處:http://en.pswp.cn/web/96802.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《Unity項目實戰:動態加載引發的顯存危機全鏈路排查與重構實踐》

從動態光影那流光溢彩、仿佛賦予虛擬世界真實質感的絢麗效果—這得益于Unity引擎強大的HDRP管線對光照路徑的精準模擬,到物理引擎驅動的物體碰撞精準到毫厘的物理反饋—依托Unity Physics模塊對剛體動力學的毫秒級計算,再到能夠依據不同設備性能自動適配的畫質表現—通過Unit…

智慧水庫綜合管理系統平臺御控物聯網解決方案

一、行業背景與痛點分析水庫作為防洪、灌溉、供水、發電及生態保護的核心基礎設施,其管理效率直接關系到區域水資源安全與可持續發展。然而,傳統水庫管理模式存在四大核心痛點:數據孤島嚴重:水位、雨量、水質、設備狀態等數據分散…

使用nvm安裝Node.js18以下報錯解決方案——The system cannot find the file specified.

使用 nvm 安裝 Node.js 18以下 報錯解決方案 在前端開發過程中,常常需要針對不同項目切換 Node.js 版本。nvm(Node Version Manager)是最常用的工具。但最近在嘗試安裝 Node.js 14 版本時,遇到了奇怪的錯誤。 問題描述 使用 nv…

在Excel和WPS表格中快速復制上一行內容

有的時候我們在Excel和WPS表格中想復制上一行對應單元格、連續區域或整行的內容,只需要在當前行拖動鼠標左鍵選中相關區域,然后按CtrlD鍵即可將上一行對應位置的內容復制過來——需要注意的是,如果當前行有數據,這些數據會直接被覆…

408學習之c語言(遞歸與函數)

今天主要學習了遞歸與函數的相關內容,下面將我今天所學知識與所寫代碼分享給大家 遞歸核心要點 遞歸三要素 基準條件(明確終止條件) 遞歸調用(逐步分解問題) 收斂性(確保每次遞歸都向基準條件靠近&#xff…

swVBA自學筆記016、Solidworks API Help 幫助文檔的(三大版塊)

目錄1. Namespace (命名空間) 版塊2. Interface (接口) 版塊3. Members (接口成員) 版塊4、總結關系5、如果你感覺上面說的過于簡單,請往下看!6、示例鏈接→SOLIDWORKS API Help 20197、需要注意的是,帶“I”的對象表示:接口1. Namespace (命…

通俗易懂地講解JAVA的BIO、NIO、AIO

理解Java的I/O模型(BIO、NIO、AIO)對于構建高性能網絡應用至關重要 🧠 通俗理解:快遞站的故事 想象一個快遞站: ? BIO:就像快遞站為每一個包裹都安排一位專員。專員從接到包裹到處理完(簽收、…

LabVIEW 泵輪檢測系統

在汽車行業,泵輪作為液力變矩器關鍵部件,其質量檢測極為重要。傳統手工檢測泵輪效率低且誤差大,為此構建基于 LabVIEW 與西門子硬件結合的泵輪檢測系統。 應用場景 聚焦汽車零部件生產車間,對泵輪總成進行出廠前檢測。在液力變矩…

2025年8月月賽 T2 T3

一. 七天假日 T2原思路:直接計算左右括號的數量,然后直接輸出他們的差改進思路: 用d值記錄截止到當前位置,還需要多少個右括號可以滿足非法要求cur:截止到當前位置,已經有多少個右括號sum是右括號位置的前綴…

數據結構----棧的順序存儲(順序棧)

棧的特點:先進后出棧的操作:用數組進行存儲(1)初始化://棧 typedef struct {int *data;//指針模擬分配數組int top;//棧“頂”指針 }Stack; //初始化 Stack InitStack(){Stack s;//給數組分配空間s.data (int*)malloc…

React Hooks原理深度解析與高級應用模式

React Hooks原理深度解析與高級應用模式 引言 React Hooks自16.8版本引入以來,徹底改變了我們編寫React組件的方式。然而,很多開發者僅僅停留在使用層面,對Hooks的實現原理和高級應用模式了解不深。本文將深入探討Hooks的工作原理、自定義Hoo…

兼職網|基于SpringBoot和Vue的蝸牛兼職網(源碼+數據庫+文檔)

項目介紹 : SpringbootMavenMybatis PlusVue Element UIMysql 開發的前后端分離的蝸牛兼職網,項目分為管理端和用戶端和企業端。 項目演示: 基于SpringBoot和Vue的蝸牛兼職網 運行環境: 最好是java jdk 1.8,我們在這個平臺上運行的。其他版本理論上也可…

TDengine 聚合函數 LEASTSQUARES 用戶手冊

LEASTSQUARES 函數用戶手冊 函數定義 LEASTSQUARES(expr, start_val, step_val)功能說明 LEASTSQUARES() 函數對指定列的數據進行最小二乘法線性擬合,返回擬合直線的斜率(slope)和截距(intercept)。該函數基于線性回…

Redis最佳實踐——安全與穩定性保障之高可用架構詳解

全面詳解 Java 中 Redis 在電商應用的高可用架構設計一、高可用架構核心模型 1. 多層級高可用體系 #mermaid-svg-anJ3iQ0ymhr025Jn {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-anJ3iQ0ymhr025Jn .error-icon{fil…

ABAP 屏幕在自定義容器寫多行文本框

文章目錄變量定義容器等邏輯屏幕效果變量定義 CONSTANTS: GC_TEXT_LINE_LENGTH TYPE I VALUE 72. TYPES: TEXT_TABLE_TYPE(GC_TEXT_LINE_LENGTH) TYPE C OCCURS 0. DATA: GV_SPLITTER TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. DATA: GV_CUSTOM_CONTAINER TYPE REF TO CL_…

昆山精密機械公司8個Solidworks共用一臺服務器

在當今高度信息化的制造業環境中,昆山精密機械公司面臨著如何高效利用SolidWorks這一核心設計工具的現實挑戰。隨著企業規模的擴大和設計團隊的分散,傳統的單機授權模式已無法滿足協同設計需求。通過引入云飛云共享云桌面解決方案,該公司成功…

【WebSocket?】入門之旅(三):WebSocket 的實戰應用

本篇文章將通過構建一個簡單的實時聊天應用,演示如何在前端和后端搭建 WebSocket 系統,完成實時消息傳輸。通過實戰,幫助你更好地理解 WebSocket 在實際項目中的應用。 目錄 搭建 WebSocket 服務器WebSocket 客戶端實現實時聊天應用示例常見…

CentOS 8-BClinux8.2更換為阿里云鏡像源:保姆級教程

還在為 CentOS 8 官方源訪問緩慢或不可用而煩惱嗎?更換為國內鏡像源,如阿里云,可以顯著提升軟件包下載速度和穩定性。本文將帶你一步步完成 CentOS 8 鏡像源的更換,讓你的系統管理更順暢。 準備工作 在進行任何系統配置更改之前…

MySQL中InnoDB索引使用與底層原理

MySQL Server端的緩存(查詢緩存)是MySQL Server層的特性,而InnoDB的緩存(緩沖池)是InnoDB存儲引擎層的特性。兩者是完全獨立的。下面我們來深入探討這兩者以及InnoDB索引的原理。1. MySQL Server層的緩存 - 查詢緩存 (…

Python實戰:實現監測抖音主播是否開播并錄屏

實現這個功能,主要思路是循環檢查主播狀態 → 開播后獲取直播流地址 → 使用FFmpeg錄制。下面是一個基本的步驟表格: 步驟 關鍵行動 常用工具/庫 1 獲取主播直播間ID或唯一標識 瀏覽器開發者工具、抓包工具1 2 循環請求抖音API,查詢主播直播狀態 requests, time 3 解析API響…