1.做標記和記錄信息的區別
做標記:它是爲了其它病毒識別自己,而在固定或符合一定規則的位置上記錄的符號信息。
記錄信息:它是爲了病毒本身正確運行,而存儲的某些信息,甚至是部分代碼,比如解密程序的隨機密匙、所感染宿主文件的某些信息
2.那些地方可以做標記和記錄信息
(1)可標記的位置
1/程序的入口區域和尾部區域;並非一定是開頭和結尾,比如
VirusStart:
...
jmp $+3 ;這裏是示例代碼,實際編寫時,有時不可以用$+xx的方法,需要重定位的方法
WORD VirusSymbol 'VS' ;用WinHex查出這裏的位置,以後這個位置做檢查就可以了
...
2/覆蓋或改寫PE結構上不使用或很少使用的位置:
這類方法很多,例如:(1)DOS stub的”This program must run in win32“字符串
(2)PE結構上某些保留位置
(3)PE結構上某些可以修改但不影響程序運行的值,比如代碼節默認爲.text或.code,但也可以改爲.Virus
3/針對編譯器的固定習慣:比如,同一版本的編譯器生成文件都有一樣的啓動代碼,可以進行等價替換爲其它代碼,
或縮減代碼留出位置做標記
(2)可記錄信息的位置
1/凡是上述可以做標記的位置都可以記錄信息,如果空間足夠
2/註冊表
3/約定的位置文件創建文件用於記錄信息
4/偷偷混進常用軟件的文檔裏,比如說明文件,幫助文件它們都很少被使用
3. 做標記和記錄信息的方法
(1)做標記:
1/ 固定標記:很多病毒病毒都直接留下有趣的標記
2/ 規則標記: 標記並不一定是固定值,可以是校驗和、規則數列...
3/ 賭博:採用一些不確定行的方法,從宿主程序抽取某些數據或代碼,然後備份到某處,
病毒識別時只要比較這兩處就可以了,而正常程序也可能有重複的可能,殺毒軟件
一定不敢和你賭。
(2)記錄信息:
1/ 直接記錄: 這樣做也沒什麼大不了的,很多信息並不是病毒特有的
2/ 加密:
很少有資料直接談這個問題,我收集的這些恐怕遠遠不夠,如您有好的想法,希望不吝賜教