執行緒建立createthread,執行緒掛起suspendthread,執行緒恢復resumethread,執行緒銷毀terminatethread,都是kernel32的命令,我們自己封裝這些執行緒的命令,就是便於我們理解他們的工作機制。
api原始碼:
.版本 2
.dll命令 恢復執行緒, 整數型, "kernel32", "resumethread", , 恢復執行緒
.引數 hthread, 整數型, , 執行緒的控制代碼
.dll命令 銷毀執行緒, 整數型, "kernel32", "terminatethread", , 銷毀執行緒
.引數 hthread, 整數型, , 執行緒的控制代碼
.引數 dwexitcode, 整數型, , 退出碼0
.dll命令 建立執行緒, 整數型, "kernel32", "createthread", , 建立執行緒
.引數 lpthreadattributes, 整數型, , 第乙個引數表示執行緒核心物件的安全屬性,一般傳入null表示使用預設設定。0
.引數 dwstacksize, 整數型, , 第二個引數表示執行緒棧空間大小。傳入0表示使用預設大小(1mb)。0
.引數 子程式指標, 子程式指標, , 第三個引數表示新執行緒所執行的執行緒函式位址,多個執行緒可以使用同乙個函式位址。
.引數 lpparameter, 整數型, , 第四個引數是傳給執行緒函式的引數。0
.引數 dwcreationflags, 整數型, , 第五個引數指定額外的標誌來控制線程的建立,為0表示執行緒建立之後立即就可以進行排程,如果為create_suspended則表示執行緒建立後暫停執行,這樣它就無法排程,直到呼叫resumethread()。0
.引數 執行緒id, 整數型, , 第六個引數將返回執行緒的id號,傳入null表示不需要返回該執行緒id號。
.dll命令 掛起執行緒, 整數型, "kernel32", "suspendthread", , 掛起執行緒
.引數 hthread, 整數型, , 執行緒的控制代碼
易語言呼叫原始碼:
.版本 2
.支援庫 ethread
.支援庫 spec
.程式集 視窗程式集_啟動視窗
.程式集變數 許可證1, 整數型
.程式集變數 許可證2, 整數型
.程式集變數 執行緒控制代碼1, 整數型
.程式集變數 執行緒控制代碼2, 整數型
.子程式 _按鈕_執行緒1_被單擊
許可證1 = 建立進入許可證 ()
啟動執行緒 (&子_多執行緒主程式, 許可證1, 執行緒控制代碼1)
.子程式 _按鈕_執行緒2_被單擊
許可證2 = 建立進入許可證 ()
啟動執行緒 (&子_多執行緒主程式, 許可證2, 執行緒控制代碼2)
.子程式 子_多執行緒主程式
.引數 許可證, 整數型
.區域性變數 i, 整數型
.計次迴圈首 (1000, i)
進入許可區 (許可證)
.判斷開始 (許可證 = 許可證1)
編輯框1.加入文字 (到文字 (i) + 「我是執行緒1 |」 + #換行符)
.判斷 (許可證 = 許可證2)
編輯框1.加入文字 (「 #」 + 到文字 (i) + 「 我是執行緒2」 + #換行符)
.預設.判斷結束
延遲 (1000)
處理事件 ()
退出許可區 (許可證)
.計次迴圈尾 ()
刪除進入許可證 (許可證)
.子程式 _按鈕_掛起執行緒1_被單擊
掛起執行緒 (執行緒控制代碼1)
.子程式 _按鈕_掛起執行緒2_被單擊
掛起執行緒 (執行緒控制代碼2)
.子程式 _按鈕_恢復執行緒1_被單擊
恢復執行緒 (執行緒控制代碼1)
.子程式 _按鈕_恢復執行緒2_被單擊
恢復執行緒 (執行緒控制代碼2)
.子程式 _按鈕_關閉執行緒1_被單擊
銷毀執行緒 (執行緒控制代碼1, 0)
.子程式 _按鈕_關閉執行緒2_被單擊
銷毀執行緒 (執行緒控制代碼2, 0)
執行緒的掛起與恢復
執行緒的掛起與恢復 缺點 什麼時候呼叫?掛起後的資源會存在,會發生一些不可預知問題!xthread.h pragma once ifdef xplatform exports define xplatform api declspec dllexport else define xplatform ...
執行緒的掛起與恢復
建立完乙個執行緒並啟動之後,還可以掛起 恢復 休眠或終止它,本節主要對執行緒的掛起與恢復進行講解。執行緒的掛起與恢復分別可以通過呼叫thread類中的suspend方法和resume方法實現,下面對這兩個方法進行詳細介紹。1 suspend方法 該方法用來掛起執行緒,如果執行緒已掛起,則不起作用。語...
掛起執行緒注入
掛起執行緒後,獲得執行緒當前的上下背景文。將其中的eip設定為我們shellcode的位址,執行完畢後再返回原本的eip 提權獲得執行緒的id 可以通過程序id createtoolhelp32snapshot th32cs snapthread,0 te32.th32ownerprocessid ...