淺談如何學習加密與解密技術

看雪資料發表於2015-11-15

  很多人都想學習解密,這東西剛入門時會讓人沉迷進去,可以飯不吃、覺不睡。出現這種現像,也許是解密滿足了人們的獵奇心吧。但掌握這方面技術,對自身的提高確實有好處。可以透過跟蹤軟體,提高自己的除錯技能,並且能瞭解他人程式思路,使自己寫出更好的程式。研究解密技術有助於掌握一些系統底層知識,系統底層知識絕對是構造起大型軟體的堅實基礎。許多程式發展,都經歷了這一鍛鍊過程的。 而大多數人可能認為解密是一門高深的學問。造成這種原因是以前這方面的技術資料缺乏,從而將“解密”這一技能“神”化了。初學者一般不知從何下手,由於沒方向,花費了大量時間和精力,走了不少彎路。這裡就給對這方面感興趣的讀者指明一個方向。

      討論前,先了解一下計算機中的程式。高階語言編寫的程式,會編譯成機器語言在CPU中執行,如Visual C++等。由於機器語言與組合語言是一一對應的,因此就可將機器語言轉化成組合語言,這個過程稱之為反彙編。而組合語言可能讀性是比較好的,這樣就可分析程式流程,解析其功能了,這個過程就是解密(俗稱破解)。也就是說,解密的基礎是建立在組合語言級別上的,因此想涉足這一領域的朋友,組合語言一定得學好。組合語言是大學計算機的必修課,這方面的書籍品種很多,雖然大多書本是以DOS彙編為講解平臺,但對理解彙編指令功能是沒影響的。等彙編學好了,建議再掌握Win32程式設計。Win32程式設計就是API方式的Windows程式設計,學習Windows API將使您更深入地瞭解Windows工作方式。此類書籍有Charles Petzold著的《Windows程式設計》(以VC來講解)。另一本是羅雲彬著的《Windows環境下32位組合語言程式設計》,它以MASM彙編為講解平臺。有了上面這些基礎,你就可以參考《 加密與解密(第二版) 》這本書入門了。
  
      學習解密其實很累的,需花費大量的時間,而且經常會碰壁,三五天毫無進展是極為平常的事情。這時你可能有點想退卻,其實你不要著急,只要你認真學習,成功就在眼前。沒有人是生來就什麼都會的,如果你有問題,就大膽的去問你周圍的人。學解密的秘訣就是勤奮+執著!記住並能做到這兩點,你會變得很優秀的。

      等你解密入門後,建議再看看Matt Pietrek、Jeffrey Ritcher等大師的專著,這些書是每個程式設計師都應該閱讀的:《Windows 95 System Programming Secrets》(中文譯名《Windows 95 系y程式設計大W秘》),《windows高階程式設計指南》,《Windows2000程式設計技術內幕》,《Win32系統程式設計―Windows 2000應用程式開發指南》等。這樣,你就對系統底層有一定的瞭解了。到了這個水平後,就可朝軟體加密這塊發展了,例如編寫自己的加殼軟體等。

      軟體的加密與解密是一個迷人的研究領域,它幾乎可以與任意一種計算機技術緊密結合――密碼學、程式設計語言、作業系統、資料結構。而由於這樣或者那樣的原因,對於這一領域的關注程度一直還處於低溫狀態。而看雪技術論壇相信會為更多對知識懷有渴望的朋友多開闢一條走向這個領域的道路,並且進而推動這個領域的不斷髮展。

相關文章