病毒編寫教程1

2021-04-09 00:09:14 字數 1914 閱讀 6453

在寫教程前先宣告一下:

我寫這些文章只是為了交流技術,展示源**的目的僅僅是為了更好的說明技術原理和使用。如果有任何人利用我寫的文章進行破壞,其後果應有其本人負全部責任,與本人無關!

最後說明一下,這些文章主要講解如何在windows nt系列作業系統(包括windows nt、2000、xp和2003等)下編寫exe病毒,對於其他平台則不予考慮:-d

好了,開始我們的病毒之旅吧!

1. 必要的工具

好的工具,是編寫出好病毒的前提條件。我推薦使用以下工具:

(1) nt系列作業系統(最好還有虛擬機器)

(2) ma**或者ta**

(3) softice

(4) msdn或者api列表

(5) ddk和sdk

(6) matt pietrek介紹pe格式的文件

(7) 一些優秀病毒的源**,比如cih

(8) 防毒軟體

(9) 一些hash

(10) 這套教程!

基本上,需要的東西就這些了。即使有的東西你還不知道為什麼要用到也不要緊,看完這套教程你就能完全明白了!

p.s. 我選擇使用彙編,而不使用c等高階語言,是因為彙編更容易優化,且效率更高。

2. 32位的匯程式設計序

在win32下寫病毒,要時刻記住使用api,這裡,就用api寫乙個「hello, virus!」的程式,源**如下:

.386

; 指定要使用的處理器

.model flat, stdcall

; 記憶體為flat模式,以標準方式呼叫函式

option casemap: none

; 忽略大小寫

include kernel32.inc

include user32.inc

include windows.inc

includelib kernel32.lib

includelib user32.lib

; 包含需要的標頭檔案和庫

.data

szmessage db "hello, virus!", 0

sztitle  db "win32 api!", 0

; 資料段

.stack 100

; 堆疊段

.code

; **段

start:

invoke messagebox, null, addr szmessage, addr sztitle, mb_ok

; 呼叫api messagebox來顯示訊息

invoke exitprocess, null

; win32程式結束時必須呼叫的api

end start

; 程式結束標識

只要有彙編基礎,相信這段**不難看懂,呵呵。其實編寫病毒和編寫這段**的難度差不多;-)

3. rings

現代的intel cpu出於安全的考慮,劃分了ring0 -- ring3四個特權級,其限制逐步上公升。nt使用了其中的兩個,即ring0和ring3。一般的應用程式都執行在ring3下,受到極大的限制,而執行在ring0下的系統程式則具有最高許可權。

由於從ring3進入到ring0是受到限制的,現在絕大多數的windows病毒都是利用api執行在ring3下的,且是頗具威脅的。而要進入ring0,一般可以使用呼叫門、任務門、中斷門和陷阱門等手段,但更重要的手段是使用驅動進入ring0,這也是我所推薦的方法!

4. nt記憶體模型

nt可以直接訪問4g的儲存空間,其將高2g位址(8000 0000 - ffff ffff)用作系統元件,低2g位址(0000 0000 - 7fff ffff)用作使用者程式。並且,系統空間是受到嚴格的保護的,一般的使用者程式僅能訪問屬於自身的儲存空間。

Dockerfile編寫教程

本文大部分內容來自於 建立乙個目錄並進入到該目錄下建立dockerfile檔案 vim root test dockerfile 需要安裝的映象檔案 這裡安裝了最新版的centos和python3.7.4以及安裝過程中所需要的依賴,開放埠為8000埠 from centos latest maint...

學習分析病毒 1

分析病毒功能最重要的就是了解鏈結了哪些dll。常見dll功能如下 kernel32.dll 該動態庫含有很多核心功能,比如操作記憶體,檔案或者硬體的一些函式。user32.dll 該庫提供所有的使用者介面介面比如buttons,scroll bar等 gdi32.dll 該庫提供顯示和操作圖形介面的...

c 病毒系列(1)

今天是五一放假第二天,我靈機一動,想起周一被張某皓同學欺負的事,決定寫乙個c 小病毒,報復一下 故事開始了。先上 吧 includeusing namespace std int main return 0 沒有什麼要解釋的,太tm簡單了。第五行是程式的關鍵,用來動態呼叫系統記憶體,並利用new函式...