「教學」C語言實現dll注入:任意程式崩潰|駭客必備技能!
不關注《一碳科技》?好吧,你錯過了很多東西!
DLL注入是什麼?它有多厲害?它能讓360安全衛士執行你的“破壞”程式碼!
首先我們先了解一下dll是什麼,舉一個簡單的例子吧,相信看著篇文章的網友,或多或少都學過C語言吧?C語言當中有很多中函式,這些函式都是windows開發人員封裝好的,封裝好的函式都被存放在一種檔案裡面,這種檔案就是dll檔案,dll檔案也稱為“
動態連結庫檔案
”。我們使用編譯器生成可執行檔案的過程中,會有這樣一個步驟:連結器會將使用到的dll檔案,連結到當前編譯的可執行檔案當中,當程式執行的時候就會使用dll檔案裡面的函式。
dll可以自行建立,並加以利用
dll可以被多個程式使用,dll檔案也可以由自己自行建立並使用,但是
自行建立的dll檔案
,並不像系統核心dll檔案那樣,擁有
固定的路徑地址
。系統核心dll檔案的呼叫不需要另外指明它的路徑,因為在windows系統中,他們的路徑幾乎都是固定的,自行建立的dll檔案連結使用的時候必須要指明它的路徑,否則無法開啟。
建立dll檔案
一個dll檔案可以
被遠端注入
到另一個
正在執行的程序
當中,怎麼理解呢?這麼說吧,通俗一點講,這個程序就是一個正在執行的程式,現在,你製作了一個dll檔案,裡面有你自己寫的程式碼(
例如system("shutdown -s -t 00")
),然後將這個dll檔案注入到這個程式的記憶體空間當中,簡單點講,就是把你自己的
dll檔案插入目標程式
當中,成為
目標程式執行的程式碼
,間接地執行你自己寫的程式碼(
system("shutdown -s -t 00")
),但是說起來簡單,實行起來卻不是那麼容易的,如果你技術過關的話,
你能讓360執行的你的“惡意”程式碼!(如果能的話,你就是人才)
我們這次圍繞著“
C語言實現遠端注入dll
”的話題進行發文,由於這個程式的實現涉及的知識點比較多,所以,我們將會分幾篇文章來進行釋出,這樣有助於讀者理解,畢竟一步一步來有益於理解嘛。
話有點多了,進入正題——上菜!
這個程式的實現,我們可以分成兩部分,一個是遠端注入部分,一個是製作dll檔案部分。本篇文章先教大家
製作dll檔案
,當然dll檔案具體要實現的功能就由你們來定啦,現在小編就教你們如何製作就可以了。
其實dll檔案的製作和編寫C程式碼一樣,只不過建立的工程專案不一樣而已。首先開啟我們的VS軟體,然後新建一個Wn32專案,專案名稱自取。然後點選確定-下一步,然後選擇引用程式型別,我們編寫C程式碼的時候通常是選擇控制檯應用程式,而這裡不同,我們要建立dll檔案,所以,這裡我們選擇dll型別。
建立完成之後的事情就很簡單了,因為VS編譯器已經為你載入了DLL檔案的主體部分。專案建立完成之後,我們點選
dllmain.cpp
檔案,就會出現VS編寫好的程式碼,然後在這些程式碼中新增你自己想要寫的程式碼,寫這些程式碼的過程就跟C程式碼一樣,可以自己引用別的標頭檔案,
如圖↓
在哪裡新增我們的程式碼呢?
在
case DLL_PROCESS_ATTACH
這裡新增程式碼塊,switch case語句就不多說了,誰都懂。
如圖↓
做好之後先別急著生成,我們右鍵點選我們的
專案-屬性-C/C++-程式碼生成-執行庫-多執行緒DLL
,然後點選確定就OK啦,為什麼要這樣做呢?因為,被注入的程序會呼叫我們寫好的dll,然後dll會自行分配記憶體,在這裡我們要記住一句話:“
誰負責分配,誰就必須負責釋放
”,所以dll分配的記憶體,要由dll釋放,如果不這樣做的話,會出現異常中斷。
除了編寫dll檔案這樣以外,我們編寫的注入程式也要進行相同的步驟!
這些工作做好之後我們就開始生成,然後依次點選建立的工程資料夾-debug,就可以看到生成的dll檔案了,把他複製出來,放到一個地方。
DLL檔案製作完成,注入程式稍後釋出!送原始碼!
到這裡,
我們的dll檔案就製作好了
,接下來就是教大家如何把這個dll檔案,注入到指定程序當中了,但是呢!由於篇幅的原因,
dll注入
我們會在後續幾篇文章中釋出教學。小編寫的這個注入程式的功能,
只是能讓任意程式崩潰關閉而已
,各位看官可以自行新增自己的功能。
想拿原始碼?原始碼地址在評論區!
但是呢,畢竟小編也是人,每天寫程式碼教你們也很累的,
如果這麼累下去沒有動力的話,還怎麼教你們?
所以你們的關注就是我的動力
:只有關注的小夥伴才能獲贈原始碼哦!
小編先給小夥伴看一下部分程式碼↓