2017年11月20日 星期一

防毒軟體整體架構分析與免殺繞過 (一)

防毒軟體整體架構分析與免殺繞過 (一)


各位都知道有防毒軟體這種東西
有些人有安裝   有些人沒有

有些人認為防毒是灌心安的...
這些都看在我眼裡

為何會出現防毒???有沒有人想過?
思考更深點的人  會說  到底有沒有電腦病毒???

我在大概10幾來歲的時候,就已經思考很久了
***不過    我的理解可能"不完全正確"  也"不完全通透運作"
但這些思考路線都是我的經驗***

我可以說明我的經驗

-------------------------------------------------------------------------------------------------------

電腦病毒的東西  一般wikipedia都能查到相關字詞(廢話)


可是電腦病毒真的是病毒嗎?

我的經驗告訴我:   不是

那防毒的名詞豈不就自打臉?

等等!  還別這麼快~

所謂的電腦病毒   其實只是個由人類發明的程序
而這個程序是經過不斷的 "設計" "設計"  "再設計"

電腦不像人類一樣,經過風寒而感冒。
所以電腦本身沒有病毒,但可以經過一些設計過的程序導致電腦被破壞。

所以  電腦病毒其實根本不存在~~~
只是個小程序讓電腦崩潰而已。



小程序如何誕生?  這就會牽扯到一些windows裡面的一些api函式庫和定義檔。

學過c\c++的人都知道,撰寫程式碼,都會有引入標頭檔。例: windows.h.........之類的


正因為如此,一些病毒可能是先寫好自定義檔,裡面包含很多的不同的元素,api那些
struct{},裡面定義了一大堆,方便之後的函式調用

尤其是hook,可以調派一堆資源
編譯前,有些特別的病毒會把原始碼加殼,甚至打散原始碼 ,讓病毒分析師混淆,不利分析師做逆向分析

有些甚至改變編譯系統,讓分析師更有挑戰性


編譯後,仍然可以加殼,然後借用幾個社交方式,達成入侵電腦,展開破壞行為


許多的病毒都有後門   為何?    當你社交範圍變廣泛之後,攻擊範圍變大,社交可能不是一兩天就能應付得來,所以這時候,就有受害端與駭客端的非正常連線

在程序內寫入後門,把程序往受害端傳去,潛伏在受害者電腦內   進行資料竊取  並且把資料回傳的駭客端
有些是有條件的發作,當然,病毒作者會考慮很多不同因素,寫入不同的惡意功能

時間到,就展開破壞,使用者甚至觸發了一些功能,讓惡意程序默默的執行。

有些則是 把文件一個一個慢慢複製、隱藏、複製、隱藏,重複著這樣的動作。
,使用者可能會感覺到電腦變慢   也不知道是什麼原因,就這樣慢慢的吃掉了運作資源,電腦就這樣當機...
像這樣的程序   也就是我們所知的蠕蟲~~~


------------------------------------------------------------------------------------------------------

防毒架構

各位所知道的就是會有掃描功能,每個防毒都是如此

流程就是

執行掃描,分辨是否惡意程序,然後殺掉

我們仔細分析一下,防毒的運作

首先是掃描檔案,把檔案全部拆解,一般的可執行檔案可以用7z或是rar打開

裡面會有一些檔案    rdata   text   data   這些,不過這都是 "不經過" 加殼的

經過加殼的,你可以打開來看,裡面會有類似   UPX0   UPX1的東西

想辦法拆解,我就不多說了,自己上網爬文都有拆解教學

用OD進行動態分析,IDA靜態分析

======================================

可執行檔內都是亂碼,這些亂碼經過ASCII或其他編碼轉換成16進位

這些16進位的英文和數字,就是CPU的執行指令,換句話說,16進位就是機械碼。

我們說,CPU只能看懂0與1沒錯,多種不同的0與1,可以變化成多種不同的功能
也就是CPU指令

我們就把這些複雜的功能,轉換成所知的組合語言程式碼,每個CPU指令都分配了各種各樣以及多彩多姿的組合語言,方便人類閱讀

再來,這些底層指令會跟編譯器相關,也能夠看到他會對應到那些API資源。


防毒的工作跟病毒分析師的工作很相近

=============================================================
核心"工作之一"---特徵碼


防毒工作   即是利用上述所說的: 亂碼轉成16進位,這個16進位就是機械碼,機械碼變成CPU指令,再分析出組合語言。

在得知了惡意功能的組合語言後,把惡意的組合語言轉回去,變成16進位(機械碼),這個16進位(機械碼)就是特徵碼 ,那麼開始與特徵庫進行比對,比對到相戶符合,立刻判斷為病毒,殺掉!!!

*****附註: 這個特徵碼"不是"完全統一的!!!   每間公司都不同!!!  都各自有各自的定義形式!!!!


=============================================================
病毒分析師的工作也都是如此

可執行檔,進行逆向分析,亂碼轉16進位(機械碼)CPU指令,再轉換成組合語言
分析出惡意程序,抓到惡意組合語言功能,該功能轉16進位變成特徵碼,最後再寫入更新伺服器,把最新版本釋出


然後各位的防毒軟體接收到有更新檔,即可開始更新

==============================================================

防毒的主程式檔案每間公司都不同

1.掃描功能模組

2.逆向分析模組

3.沙盒模組

4.網路模組

5.設定模組


#####以上這些模組都是各家防毒公司大致上都有的東西   但內容都完全不同!!!



***如果要學會逆向分析,請先學會"組合語言"和"機械碼"以及"C\C++"***




下一篇會講解其他不同的功能




2017年10月29日 星期日

奉勸那些youtube一天到晚發布mega破解的教學者

Mega已經不能再用了!!!

我奉勸那些youtube一天到晚發布mega破解的教學者,請別再自以為是了,megadownloader請別再用了,那根本不是破解器!!!

我下載了超過2G多,就根本不能下載了,很久之前用了megadownloader,我發現那根本不是破解!  只是把下載點複製貼上的功能而已,根本達不到破解的效果!!!

用megadownloader無法繼續下載超過2G的檔案,請各位別放教學了!!!

2017年10月11日 星期三

老和尚訴說前世參與造月工程

老和尚前世參與造月工程



山中的夏令營,老和尚帶我去了一處深林。

他說他在那裏曾經修行了很長時間,日以繼夜的打坐修行,吃的幾乎都很少,把時間都用在思維佛法的妙處。

曾在一個史前年代轉生過,距今大約上億年,當時的文明,遠遠超過現代文明的發達程度。
許多現代人認為根本不可能的科技,在當時都已經實現了。

空中的飛船,上億年前,人類文明曾經是非常發達的。

那個時代世界上的大都市,也是遍布各式摩天建築。漂浮於空中的飛行物,不是飛機,而是像巨型郵輪。

一樣的龐大飛行船,一次可乘載上千個乘客,這種飛行船,也不局限在地球上飛行
可在九大行星的範圍內任意旅行,當時全部的機器,都採用一種非常高密度的能源,效率很高。

現今留下的古文明遺跡,以石造建築物、石制工具為主。

很多人因此以為,史前人類只會使用石器,而沒有能力使用電力或其他能源。

其實並非如此,造月工程,由於那個時期的科學技術,相當發達。

人們甚至開始構想,要製造一顆天體送上太空,照亮地球漆黑的夜晚,這個看似不可思議的工程構想,被提出後,得到了當時社會各界的支持。

於是人類全體動員,進行這個巨大的工程。而他在當時是一個工程師,參與建造月亮的建築工作。

首先人們在地球上,採集大量的金屬礦物,建構月球的基礎骨架,這個骨架,就像碳60分子的結構一樣,龐大而複雜。

地球上的人們,利用神奇的機械技術,讓月球的骨架騰空飛起,由大量的巨型飛船,拖曳前往太空中的軌道,龐大的基礎骨架進入軌道後,由工程人員進行後續的建造,在地球外的太空軌道上,進行月球的組裝工程,巨型鷹架就架設於月球外部,就像現在的建築工地一樣。

數量龐大的太空飛船,往返於地球與月球之間,每艘船都承載,或拖曳著大量的建築物資,內部構造先由月球核心做起,核心內部放置了各種機密齒輪、機械、動力設備等裝置。

核心以外到月球外殼之間,除了骨架以外,沒有放置太多東西,大致是空心的,最外層是以厚金屬板,組合而成的一個保護殼,厚度達數公里,工程人員,穿著貼身而輕便的太空裝,在鷹架上忙碌的工作著,小型太空飛艇,穿梭於月球「工地」之間。

經過了幾年的日夜不停的工作,人類終於完成了建造月球的工程,當時月球正面設計為拋光面,反射太陽的光芒,照亮地球的黑夜。

為了保持照明的高效率,將正面控制為永遠面向地球,月球完工之日,全球熱烈而盛大的慶祝,這個值得紀念的日子。

從此,黑夜不再一片漆黑,多了一輪明月的光輝照亮大地,而月亮多變的形狀,也為人類增添幾分賞月的樂趣,參與造月的人,成為當時人類最尊崇的一群人。

讓人稱頌了一段很長的時間,很可惜,雖然當時人類,完成了建造月球的偉大成就,但那一時期的人類文明,卻沒有逃過毀滅的命運。

人類在科技的發展中,放縱自己的慾望,使道德下滑,而月球的建造,及文明的高度發展,也使得物資缺乏及環境破壞。

最後,人類在變異中,遭到毀滅性的打擊,地球也遭到嚴重破壞。

最後再度回歸原始時代,重新開始。

造月的故事,隨著年代的流逝,靠著人們的口耳相傳。逐漸變成一個傳說故事。最後,成了一個神話故事。

更後來的人,已經幾乎沒有人能相信,懸在天空的月亮,就是他們自己的祖先建造的,地球上各民族的傳說很多。

現在的人們,往往把他們當作虛構的神話。然而這些傳說,往往都有其歷史的真實性。反映了人類,曾經經歷過的真實歷史。

可惜的是,目前教科書上對人類歷史的看法,與真實的地球歷史相差甚遠。

參考資料: https://www.youtube.com/watch?v=BvvcGZ0p_ww


2017年9月21日 星期四

[Java 9] 原始碼模組化

java從1.8.0_144,升級到9

(其他大神,請略過)

把原始碼都全部打包變成jmod

目的在於簡化愈來愈多的原始碼造成不必要的開發困擾,使得jdk變成模組化,這也簡化了rt.jar的大小。
這並不改變jdk結構。

這個版本也讓多線程與作業系統有更好更強大的溝通效能。

這是安裝完成後的目錄,使用者會發現跟1.8.0_144很不同。
畢竟都模組化了。


我花了一些時間在研究新的模組上,發現真的跟以前很不同。

以前的原始碼是沒有jmods這個資料夾的,現在新版卻出現了。

來比較一下兩者相異之處。
這是1.8版原始碼資料夾。


這是java資料夾底下的內容,裡面放著很多可被調用的java原始碼。


這是新的java原始碼資料夾,真的很多。
83個資料夾


如果你到安裝完成的資料夾,把jmods這個資料夾打開,你會發現裡面都是jmod檔案。
還不要急著直接點開,jmod檔案他是用壓縮檔去包裹他,只要在jmod上選擇以7-zip開啟,這樣各位就能順利的打開了。


我們一般初學者調用的原始碼,都是來自java.base這個資料夾。
把java.base打開看看。
發現他有java這個資料夾,依照工程師經驗,我們直接進入。


很輕鬆的發現他跟之前的原始碼有些是一樣的,當然有些也不見了。


這時候,我們就可以從新版的原始碼其他的資料夾去看看。
如果說,其他資料夾下面,只有javax,那麼這個資料夾就與之前的版本不同一處資料夾。
那麼這樣就要繼續找。

來看一下java.rmi這個資料夾。這個資料夾裡面有java資料夾,這樣代表著,他裡面的原始碼跟上個版本是相同的。

點開看一下,可以看出來,是一樣的。


這篇只是在介紹資料夾模組的內容跟上一版的內容比較,與其他程式碼無關係。


有著作權,請勿任意轉載。若要分享,請註明本篇來源。

[java程式語言] 介面

介面這個東西,不寫實作,只能寫定義的函式。

(其他大神,請略過)

我們使用飛行這個來舉例。

先建立介面,定義函式,不能有實作。


建立Airplane這個物件來實作Fly介面。
裡面定義名稱。


建立sky物件 呼叫airplane的實作,建構子也就執行了,成功讓飛機在天上飛。


介面簡單介紹到此。


有著作權,請勿任意轉載。若要分享,請註明本篇來源。

[java程式語言] 繼承

子繼承父,是正常的觀念。
當屬性設為private,那若要使用屬性,必先set,之後get。

(其他大神,請略過)

用實例來說明,各位會比較清楚。

假設在一間學校,我們拿其中兩位老師來做撰寫。
先設定一間學校有兩位老師,因為都是老師,所以設定一下教的書。


設定數學老師繼承了學校的職位。


設定歷史老師繼承了學校的職位。


設定教學開始。


因此這就是學校執行老師義務的狀態。



有著作權,請勿任意轉載。若要分享,請註明本篇來源。



2017年9月17日 星期日

[java程式語言] 封裝

這篇主要在說封裝的東西,封裝的定義其實不難理解。

(其他大神,請略過)

封裝的意思,也就是該類別中的資料。

程式碼需要調用的時候就執行建立物件,直接拿。

這種定義也很像是C/C++裡面的struct部分


當要執行該物件內容的使用的時候,建立物件,在物件建構子中輸入要被排序的資料即可。

這篇程式碼用this做本類別的名稱使用,不會跟外在的名稱搞混。

這邊沒有加入修飾子。

如果加入修飾子,會變成這樣。


設定他的內部變數,然後再回傳取得值。

這是執行結果。




有著作權,請勿任意轉載。若要分享,請註明本篇來源。


Ollydbg 2.01 繁體中文版

Ollydbg 2.01 繁體中文版 Ollydbg 2.01 繁體中文版下載: Mega:   https://mega.nz/#!I2Qy1aQD!-T5zO3PaANjBHU73I4NlkY8SHMxRptbBV8TpmeFt1fo GD: h...