關於PE病毒編寫的學習(二)

這篇說一下,PE病毒需要那些技術積累,以及這些技術的學習方法和重點是什麼。

 

1.先說彙編吧

 

      其實我說的彙編關於兩個方面:彙編語言設計 和 微機原理

 

      彙編語言設計,它也是兩方面: 常規教材講的 和 病毒的技巧

 

      常規教材上講的基本都得學會,最基本的8086/8088肯定都得會,各種書籍視頻很豐富,學起來不難。80x86也是必須得學,建議看一下《80x86彙編語言程序設計》(楊季文著,清華大學出版),這本書的後半本寫的很精彩,至於羅雲杉的那本,明白意思就行了,因爲使用Radasm,簡化很多。64位彙編,我也正在學,隨着win7的成功,它將來也會越發重要。

      病毒的技巧,沒有一本書或者一部視頻能交給你全部。你只好從各類的書籍和網上的帖子中收集隻言片語,有的是代碼細節,有的是概念介紹,基本只能憑個人探索。

 

舉個例子:

 

 

常規彙編代碼結構:

.DATA

  str dd 'yangbostar',0

.DATA?

  name dd ?

.CODE

start:

  mov edi,offset str

  mov name,edi

...

END start

 

 

在病毒卻可以只寫一個.code段完成三個段的使命:

.CODE

_start:

  jmp start

  MyName dd 'yangbostar',0  ;只讀數據經常寫在.code裏

start:

  push esp

  mov ebp,esp

  sub esp,10h

  mov [ebp+4],offset MyName   ;用堆棧存儲變量

...

END _start

    

    再說微機原理,實際我學得很痛苦,學校要考,不得不學,可以直接學32位的,至於64位的資料都需要極好的32位基礎。個人覺得學微機原理用處很多,可每個用處總是一點點,但絕對比別人看的更深一步。

 

 

2.c/c++

      程序員的世界語,基礎中的基礎,不想再多說別的,只想推薦這本書《0 bug:C/C++商用工程之道》,我從這書中收益良多。

 

3.windows API

     有人說還應該學MFC,可能本人才疏學淺,不知道MFC對於病毒的作用和優勢在哪裏。

 

 

4.windows驅動設計

      即使不寫驅動程序,通過它瞭解windows底層運行機制也是很必要的。

      當初學它,只是爲了看懂《Rootkit——windows內核的安全防護》,但過程很艱辛,資料真是太少了,很少有優秀中文作品。

針對windows NT之後版本的驅動資料就更少了。只找到三本:

      《天書夜讀》——很適合入門

      《寒江獨釣》——代碼很好,講的很垃圾

      《windows驅動開發技術詳解》——代碼很垃圾,講的很好

 

 

5.數據結構

      和c語言一樣,是程序員相當重要的基本功,資料相當豐富,不過,作爲病毒編寫愛好者,學習數據結構的同時,算法的學習也是相當重要,如果有時間的話,啃一下《C算法》這本書。

 

6.程序調試和逆向工程

      個人體會,在VC上進行程序源碼調試,要比到處嵌入MessageBox和printf效率高得多。它的學習和你選擇的編譯器相關,即使是同一編譯器的不同版本也調試習慣有不同。資料自己找吧,不必全學會,夠用就行。

      學習逆向工程和學習病毒編寫一樣,在網上充滿了各種各樣的迷信和謬論。相當多書面和視頻教程都是將“脫殼”和“爆破程序”爲主,其實這樣的學習主要就會了兩樣東西:OD和修改程序流向。其關於逆向工程很多本質的東西都不說明。我的個人體會是,數據逆向伴隨IDA的學習會補充它們的不足,當然,逆向工程博大精深,我只能說明白如何入門,後面的學習大家來相互交流吧。

 

總結:

      呵呵,又囉嗦這麼長,除了那段彙編代碼,沒有別的和病毒直接相關,這是我希望大家能有足夠的基礎,我們常說,授人魚不如授人以漁。

     下一章,我會介紹是個病毒,但不是PE病毒。因爲我要將足夠多的DOS病毒技術遷移到windows下,我們才能開始PE病毒上大展拳腳。

 

 

 

發佈了41 篇原創文章 · 獲贊 4 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章