freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于沙盒技術(shù)的惡意行為分析平臺論文(編輯修改稿)

2025-07-24 20:10 本頁面
 

【文章內(nèi)容簡介】 Name )。 // //Callback RegNotifyChangeKeyValue // HKEY hkRegistrySYNC = NULL。 DWORD dwStartupInfo = 0。 HANDLE hEventNotifyValue = NULL。 DWORD dwType = REG_DWORD。 DWORD dwBufLen = sizeof(DWORD)。 BOOL bIsLauncherCalled = FALSE。.......... return 0。} 接下來我們介紹停止sandbox部分,在這部分中我們調(diào)用了StopSandBoxRoutine函數(shù)來進(jìn)行停止sandbox的運(yùn)行。在這個(gè)函數(shù)中我們先要找到要停止的sandbox,然后調(diào)用Remove Registry SYNC函數(shù) 、Save RegHive函數(shù)、UnLoad RegHive 函數(shù) 、Update RegHive函數(shù)來停止sandbox的運(yùn)行。下面只是源代碼中的部分代碼,具體請看源代碼。代碼示例:int StopSandBoxRoutine(void){iRet = ListSandBoxToStop()。 if( iRet == 1 ) { return 1。 } // //Waiting order // wprintfex( L\r\n[通告] 請輸入指數(shù)(例如. 1) 或者sandbox的名稱(例如. \DefaultBox\) :\r\n, FOREGROUND_INTENSITY | FOREGROUND_GREEN)。 WCHAR szUserInput[256] = {NULL}。_getws(szUserInput)。.............StopSandBoxRemoveRegistrySYNC(lpSandBoxName)。StopSandBoxSaveRegHive(lpSandBoxName);StopSandBoxUnLoadRegHive(lpSandBoxName)。.............wprintfex( L\r\n[NOTIFY] SandBox 停止成功!\r\n, return 0。} 最后我們來介紹一下此沙箱中的回滾和重定向部分。首先此沙箱中的回滾是在文件運(yùn)行完以后,對系統(tǒng)繼續(xù)回滾,使系統(tǒng)恢復(fù)到初始的狀態(tài)。其中主要是兩部分組成,一部分是如何來判斷文件是否已經(jīng)運(yùn)行完全的函數(shù),另一部分便是將系統(tǒng)進(jìn)行回滾操作,將系統(tǒng)恢復(fù)成原始狀態(tài)的函數(shù)。下面便是回滾的部分代碼。代碼示例:template class R
class Rall
{
public:
Rall():cmd(NULL),m_bIsOK(false){}
~Rall()
{
if( NULL != cmd)
{
if( !m_bIsOK )
{
(*cmd)()。
}
delete cmd。
cmd = NULL。
}
}
template class Fun
void SetRall(Fun fun)
{
if( NULL != cmd){ delete cmd。 cmd = NULL。 }
cmd = new FunctorR(fun)。
}
template class PtrObj, class MemFn
void SetRall(const PtrObjamp。 p, MemFn memFn)
{
if( NULL != cmd){ delete cmd。 cmd = NULL。 }
cmd = new FunctorR(p, memFn)。
}
void OK(){ m_bIsOK = true。 }
private:
bool m_bIsOK。
FunctorR* cmd。
}。
/*
使用:
TOOL::Rallvoid r2。
DataBase db。
if( (true))
(amp。db,amp。DataBase::UndoDB)。
else return。
TOOL::Rallvoid r1。
if( doFun(true))
(UndoFun)。
else return。
()。
()。
*/
} 而此沙盒通過重定向技術(shù),把程序生成和修改的文件,定向到自身文件夾中。此沙盒的重定向技術(shù)主要針對是注冊表和文件。而在重定向注冊表時(shí),其實(shí)質(zhì)主要是其實(shí)質(zhì)就是維護(hù)注冊表鍵,一。受影響的鍵不只是HKLM/Software,還包括:HKEY_CLASSES_ROOT、HKEY_CURRENT_USER/Software/Classes、HKEY_LOCAL_MACHINE/Software、HKEY_USERS/*/Software/Classes、HKEY_USERS/*_Classes等鍵。那么如何來維護(hù)這些注冊表鍵呢?其維護(hù)的方法是采用一種被稱為注冊表反射的機(jī)制完成的。而注冊表反射便是在注冊表視圖之間復(fù)制某些特定的注冊表項(xiàng)和項(xiàng)值。下面便是重定向函數(shù)的部分代碼。代碼示例:include
DRIVER_INITIALIZE DriverEntry。
DRIVER_UNLOAD DriverUnload。
EX_CALLBACK_FUNCTION RegistryCallback。
LARGE_INTEGER g_CmRegstryCookie。
extern PUSHORT NtBuildNumber。
NTSTATUS DriverEntry( PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath )
{
NTSTATUS Status = STATUS_NOT_SUPPORTED。
//KdBreakPoint()。
if ( *NtBuildNumber = 6000 )
{
DriverObjectDriverUnload = DriverUnload。
Status = CmRegisterCallback( RegistryCallback, DriverObject, amp。g_CmRegstryCookie )。
}
return Status。
}
VOID DriverUnload( PDRIVER_OBJECT DriverObject )
{
CmUnRegisterCallback( g_CmRegstryCookie )。
}
PVOID KmAlloc( SIZE_T PoolSize )
{
PVOID PoolBase = ExAllocatePoolWithTag( NonPagedPool, PoolSize, 39。MmK_39。)。
if ( PoolBase )
{
RtlZeroMemory( PoolBase, PoolSize )。
}
return PoolBase。
}
VOID KmFree( PVOID PoolBase )
{
ExFreePoolWithTag( PoolBase, 39。MmK_39。)。
}
NTSTATUS LfGetObjectName( IN CONST PVOID Object, OUT PUNICODE_STRING* ObjectName )
{
NTSTATUS Status = STATUS_INSUFFICIENT_RESOURCES。
PUNICODE_STRING TmpName。
ULONG ReturnLength。

ObQueryNameString( Object, (POBJECT_NAME_INFORMATION)amp。ReturnLength, sizeof(ULONG), amp。ReturnLength )。
*ObjectName = NULL。
TmpName = (PUNICODE_STRING)KmAlloc( ReturnLength )。 上述便是我們搭建沙盒環(huán)境的設(shè)計(jì)與實(shí)現(xiàn)方法,我們的惡意行為分析平臺便是基于這個(gè)環(huán)境來實(shí)現(xiàn)的。 API監(jiān)視器的實(shí)現(xiàn)和輸出 API 函數(shù)監(jiān)視器的實(shí)現(xiàn)(1):自己實(shí)現(xiàn)的原因1:能攔截的更加準(zhǔn)確,方便分析2:能方便輸出,按自己的要求輸出(2):Detours的簡介:(一). Detours的原理 1. WIN32進(jìn)程的內(nèi)存管理 由于WINDOWS NT實(shí)現(xiàn)了虛擬存儲器,因此每一WIN32進(jìn)程擁有4GB的虛存空間, 下文僅指出與Detours相關(guān)的幾點(diǎn): (1) 進(jìn)程要執(zhí)行的指令也放在虛存空間中 (2) 可以使用QueryProtectEx函數(shù)把存放指令的頁面的權(quán)限更改為可讀可寫可執(zhí)行,再改寫其內(nèi)容,從而修改正在運(yùn)行的程序 (3) 可以使用VirtualAllocEx從一個(gè)進(jìn)程為另一正運(yùn)行的進(jìn)程分配虛存,再使用 QueryProtectEx函數(shù)把頁面的權(quán)限更改為可讀可寫可執(zhí)行,并把要執(zhí)行的指令以二進(jìn)制機(jī)器碼的形式寫入,從而為一個(gè)正在運(yùn)行的進(jìn)程注入任意的代碼2. 攔截WIN32 API的原理 Detours定義了三個(gè)函數(shù): (1) Target函數(shù):要攔截的函數(shù),通常為Windows的API。 (2) Trampoline函數(shù):Target函數(shù)的復(fù)制品。因?yàn)镈etours將會改寫Target函數(shù),所以先把Target函數(shù)復(fù)制保存好,一方面仍然保存Target函數(shù)的過程調(diào)用語義,另一方面便于以后的恢復(fù)。 (3) Detour 函數(shù):用來替代Target函數(shù)的函數(shù)。 Detours在Target函數(shù)的開頭加入JMP Address_of_ Detour_ Function指令(共5個(gè)字節(jié))把對Target函數(shù)的調(diào)用引導(dǎo)到自己的Detour函數(shù), 把Target函數(shù)的開頭的5個(gè)字節(jié)加上JMP Address_of_ Target _ Function+5作為Trampoline函數(shù)。例子如下:攔截前:Target _ Function: ;Target函數(shù)入口,以下為假想的常見的子程序入口代碼 push ebp mov ebp, esp push eax push ebx Trampoline: ;以下是Target函數(shù)的繼續(xù)部分 …… 攔截后: Target _ Function: jmp Detour_Function Trampoline: ;以下是Target函數(shù)的繼續(xù)部分 …… Trampoline_Function: 。 Trampoline函數(shù)入口, 開頭的5個(gè)字節(jié)與Target函數(shù)相同 push ebp mov ebp, esp push eax push ebx ;跳回去繼續(xù)執(zhí)行Target函數(shù) jmp Target_Function+5 3. 為一個(gè)已在運(yùn)行的進(jìn)程裝入一個(gè)DLL 以下是其步驟: (1) 創(chuàng)建一個(gè)ThreadFuction,內(nèi)容僅是調(diào)用LoadLibrary。 (2) 用VirtualAllocEx為一個(gè)已在運(yùn)行的進(jìn)程分配一片虛存,并把權(quán)限更改為可讀可寫可執(zhí)行。 (3) 把ThreadFuction的二進(jìn)制機(jī)器碼寫入這片虛存。 (4) 用CreateRemoteThread在該進(jìn)程上創(chuàng)建一個(gè)線程,傳入前面分配的虛存的起始地址作為線程函數(shù)的地址,即可為一個(gè)已在運(yùn)行的進(jìn)程裝入一個(gè)DLL。通過DllMain 即可在一個(gè)已在運(yùn)行的進(jìn)程中運(yùn)行自己的代碼。(二). Detours庫函數(shù)簡介 1. PBYTE WINAPI DetourFindFunction(PCHAR pszModule, PCHAR pszFunction) 功能:從一DLL中找出一函數(shù)的入口地址 參數(shù):pszModule是DLL名,pszFunction是函數(shù)名。 返回:名
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1