iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
0
Software Development

闖入DLL的世界 DLL我要進來了哦系列 第 9

第九天:這三個函數是甚麼?

  • 分享至 

  • twitterImage
  •  

我們今天來到了第九天,今天來講講我們需要使用甚麼函式才可以將DLL注入到別的程式裡面,廢話不多說我們直接開始。


今天我們主要使用到的函數有LoadLibrary CreateRemoteThread VirtualAllocEx()

LoadLibrary

這是加載DLL的函數使用,透過LoadLibrary獲取句柄,如要卸載的話則是使用FreeLibrary
HMODULE hmodule=LoadLibrary("DLL名子.dll")

CreateRemoteThread

創建一個虛擬地址空間中運行的線程
CreateRemoteThread(句柄,NULL,0,指向開始地址的指標,要傳給線程函數變量的指針,控制線程的標誌,指向接受線程標示符的指針)
在控制線程創建的標誌中有三個預設的值分別是

  • 0
    線程在創建後立即運行

  • CREATE_SUSPENDED
    線程以掛起狀態創建,並且直到調用ResumeThread函數後才運行

  • STACK_SIZE_PARAM_IS_A_RESERVATION
    所述dwStackSize參數指定堆棧的初始保留大小

恩這邊看完基本上都是使用0立即運行

VirtualAllocEx()

這是在指定進程的虛擬地址保留空間,簡單說就是在進程的地址空間中分配內存。
VirtualAllocEx(句柄,NULL,路徑,內存分配的類型,內存保護常量)
在這部分就有點複雜了因為內存分配的類型和內存保護常量都是官方定義的東西,所以這邊就不解釋了,因為有針對讀寫或是只讀等等類型的形式。

結語

今天的東西可能比較複雜,初步解釋需要使用甚麼函式才可以將DLL注入到別的程式裡面,最近好忙一天的時間都不夠用,還是老話一句打完有點累趕緊洗洗睡,我們明天再見。


上一篇
第八天:Program Process Thread又有三角戀?
下一篇
第十天:整理一下這十天以來的東西
系列文
闖入DLL的世界 DLL我要進來了哦30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
EN
iT邦好手 1 級 ‧ 2020-09-23 20:47:09

有時間敗家沒時間寫文章R

我要留言

立即登入留言