中山大學 West BBS-西子灣站

『主選單』
分類佈告
分類精華
休閒聊天
個人郵件
個人設定
重新登入
『應數系組合語言(楊昌彪老師)』一般區佈告
←回列表  ↑上一篇  ↓下一篇        張貼  回應       
發信人: HSBoy (偷偷親妳一下)    看板:math-asm
日期: Fri Jul  4 02:53:00 1997
標題: 組語期末報告
來源: 中山大學 Formosa BBS Client



            組語期末報告 --
                        字串搜尋器

                                       學號: 8424047
                                       姓名: 林晉源
    [感想]

     本來想寫一個 AV 的, 結果, 因為時間的缺乏跟自己本身
  實力不夠, 只寫出了這個很普通的程式! 唉... 原本 AV 是想
  要寫成跟 vt, sscan 類似的界面跟功能. 就是可以在 DOS 底
  下, 以傳參數的方法, 不但要能掃檔案型病毒, 還要可以掃
  Boot 跟 Partion 底下的病毒! 此外, 我還希望可以加上一些
  附加的必備功能! 如: 備份 Boot sector 跟 Partion , 如果
  時間允許的話, 我還想加入一些其他 AV 沒有的防護措施, 後
  面我會提到! 可惜, 只做出來了皮毛, 勉勉強強只能算是 "字
  串搜尋工具" 罷了!!

    [解題遇到的困難]

     Q.首先, 先討論如何處理 "掃毒功能" ?
     A. 在這方面, 我有相當足夠的資料, 只是在病毒碼的方
       面, 市面上大多的防毒程式其內的病毒碼, 多為二進位
       檔! 照理說, 二進位檔不但比較好處理(fetch to memo
       -ry), 且容易尋得! 但卻選擇了 Zlock freeware 版的
       AV(對了, AV 就是防毒軟體 Anti-Virus 的意思) 的病
       毒碼. 它是採用 ASCII 的方式存病毒碼, why??  我本
       來試想寫個適合 "初學者" 的 AV, 如此以來, 使用者
       較容易自己新增病毒碼! 我想: 初學者的第一堂客應該
       是 PE2 吧~~ ^_^

      Q.有了病毒碼, 如何掃毒呢??
      A.病毒碼為病毒之 binary code, 一般有 4 bytes 到
        10 bytes 不等. 首先我們先 memory 裡設兩個長度一
        樣的 buffer(長度為病毒碼之大小), 一個 buffer 存
        病毒碼, 另一個 buffer 依序將欲檢測的檔案,  分段
        讀到 memory 中, 再行比較! 這段程式, 應該沒有問
        題吧?

      Q.OK! 現在, 你應該會檢查一個檔案是否有中毒了吧?
        那, 如何檢測整個目錄下的所有檔案??
      A.在搜尋目錄之前, 我們必須先定 DTA(Data Transfer
        Area) 的位址, 讓 DOS 在找出指令目錄下所有檔案時
        , 有個暫存區!

      Q.Well, 怎麼定 DTA ??
      A.用 int 21h, 第 1AH 呼叫!

      Q.怎麼找出目錄下所有檔案??
      A.先用 int21h 第 4EH 號呼叫, 找出目錄下第一個檔案
        再用 int 21h 第 1FH 號呼叫, 找出下一個檔案, 直
        到整個目錄下所有檔案, 都被我們 "請" 出來!!

      大致上是這樣子, 說到這裡, 寫個簡單的 "字串搜尋工
      具" 應該沒有什麼問題了! Oh, 我知道你想為我為什麼
      不加入解毒, 跟掃未知讀的功能! ㄟ... 很抱歉! 我不
      會寫病毒, 心有餘, 力未足! 或許, 你可以試試看喔..
      ...

     [參考書目]

      1. 80X86 組合語言教學手冊       略
      2. 技術手冊(三)系統呼叫篇       略
      3. DEBUG/SYMDEB 詳解           黃連進    倚天資訊





--

         我最喜歡白雪公主小美人魚了
              真的好喜歡唷~~~~ *^_^*




←回列表  ↑上一篇  ↓下一篇        張貼  回應