關於感染型病毒的那些事(三)

    前段時間,我在網上下載了一個3D遊戲,想要玩的時候卻被提示需要將IE的主頁設置爲特定的網址才能玩這個遊戲.對於我這種有"系統潔癖"的人來說,最反感的就是這種要求,用Peid查了下,發現沒有加殼,一路跟下來,發現這個程序也提供了一種病毒感染的思路,那就是資源感染,既將宿主程序作爲病毒程序的一個資源保存,將附加了宿主程序資源的病毒程序覆蓋原宿主程序,在打開病毒程序時,病毒發作同時將宿主程序釋放出來,運行之.這個3D遊戲的反彙編片段:

    Csdn沒有彙編代碼的高亮- -,用C++的註釋形式給出,上面的反彙編代碼的思路是這樣的:GetModuleFileNameA()獲取當前程序路徑,設置釋放資源(宿主)程序的路徑->CreateFileA()創建資源程序文件->FindResourceA()查找該資源->LoadResource()->SizeofResource()->WriteFile()通過載入,獲取大小得到參數後寫入->GetStartupInfoA()獲取啓動信息->CreateProcessA(),至此宿主程序已經啓動,但等其運行完後,我們還要將其刪除->WaitForSingleObject()等待ProcessInformation.hProcess,當宿主程序結束時會得到通知->CloseHandle()關閉ProcessInformation.hProcess和ProcessInformation.hThread->TerminateProcess()我覺得這步不是必須的,此時宿主程序本身已經結束運行了->DeleteFileA()刪除剛纔生成的資源程序文件.

    這個遊戲的IE主頁判斷在釋放資源之前,nop之後,單步到WriteFile之後把資源文件複製出來,之後啓動就可以直接玩遊戲了,這是題外話^_^

    這樣提供了進行資源感染後,打開感染文件的一個運行流程.如何將宿主文件作爲資源添加到病毒程序中去?利用UpdateResource()這個api來完成,具體代碼如下(詳見註釋):

    這樣就完成了資源感染,這個方法需要注意的一點是,你的病毒編譯的時候是需要有初始資源的,如果本身病毒程序沒有任何資源使用UpdateResource()將會失敗.另外,如果採用這個感染方法,還要修改圖標資源爲宿主程序圖標才能起到較好的隱蔽性,不然就是像熊貓燒香一樣,明白着告訴人家,這個程序被感染了- -

    圖片是感染後效果,圖標改變

 

   

    To be continue...

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