病毒常用方法之登錄檔操作
登錄檔的增刪查改操作基本上是惡意程式碼的常規操作,但是對登錄檔的操作通常會留下痕跡,導致被發現,最後被清理掉 .對於驅動模組更是如此,驅動程式的入口函式的第二個引數就是登錄檔路徑,當驅動載入後該值會被寫到相應的位置,這是為了隱藏自己,要將與之相關的表項都刪掉.下面是一段反彙編程式碼:
int __stdcall DeleteKey(POBJECT_ATTRIBUTES ObjectAttributes)
DeleteKey proc near
var_24 = OBJECT_ATTRIBUTES ptr -24h;
var_C = word ptr -0Ch
var_A = word ptr -0Ah
var_8 = dword ptr -8
ObjectAttributes= dword ptr 8;傳入的引數,包含要操作物件的一些資訊,這裡就是登錄檔名字資訊
push ebp
mov ebp, esp
sub esp, 28h
push ebx
push esi
mov esi, 100h
push edi
mov eax, esi
call __alloca_probe_16
and [ebp+var_24.RootDirectory], 0 ;初始化RootDirectory
xor eax, eax
mov [ebp+var_C], ax
mov ebx, esp
push [ebp+ObjectAttributes] ; ObjectAttributes
mov eax, esi
mov [ebp+var_A], ax
lea eax, [ebx+10h]
mov [ebp+var_8], eax
lea eax, [ebp+var_C]
mov [ebp+var_24.ObjectName], eax
xor eax, eax
mov [ebp+var_24.Length], 18h
mov [ebp+var_24.Attributes], 40h
lea edi, [ebp+var_24.SecurityDescriptor]
stosd
stosd
push 0F003Fh ; DesiredAccess
lea eax, [ebp+var_24.RootDirectory];RootDirectory被當成Handle用
push eax ; KeyHandle
xor edi, edi
call ds:ZwOpenKey;開啟要操作的登錄檔
test eax, eax
jl short loc_10004C60
mov edi, ds:ZwEnumerateKey
jmp short loc_10004C32
loc_10004C1D:
mov ax, [ebx+0Ch]
mov [ebp+var_C], ax
lea eax, [ebp+var_24]
push eax ; ObjectAttributes
call DeleteKey
test eax, eax
jz short loc_10004C45
loc_10004C32:
lea eax, [ebp+ObjectAttributes]
push eax ; ResultLength
push esi ; Length
push ebx ; KeyInformation
push 0 ; KeyInformationClass
push 0 ; Index
push [ebp+var_24.RootDirectory] ; KeyHandle
call edi ; ZwEnumerateKey 遍歷子項
test eax, eax
jge short loc_10004C1D;還有表項,往回走,去loc_10004c1d 接著呼叫自己DeleteKey()
loc_10004C45:
push [ebp+var_24.RootDirectory] ; KeyHandle
call ds:ZwDeleteKey
push [ebp+var_24.RootDirectory] ; Handle
xor ecx, ecx
test eax, eax
setnl cl ;操作成功,設cl=1
mov edi, ecx
call ds:ZwClose
loc_10004C60:
mov eax, edi
lea esp, [ebp-34h]
pop edi
pop esi
pop ebx
leave
retn 4
DeleteKey endp
相關文章
- VC操作登錄檔
- 使用Java操作Windows系統登錄檔JavaWindows
- Win32 SDK登錄檔操作——RegQueryValueEx (轉)Win32
- win10如何清除登錄檔_win10清理登錄檔垃圾的方法Win10
- win10如何修復登錄檔 windows10登錄檔修復方法Win10Windows
- 登錄檔
- win10備份登錄檔的方法_win10登錄檔如何備份Win10
- Winform設定開機啟動-操作登錄檔ORM
- Win32 SDK登錄檔操作——RegOpenKey (轉)Win32Go
- Win32 SDK登錄檔操作——RegCloseKey (轉)Win32GC
- Win32 SDK登錄檔操作——RegCreateKey (轉)Win32GC
- java NIO 常用的檔案操作方法Java
- Win32 SDK登錄檔操作函式——RegQueryValue (轉)Win32函式
- Mysql常用操作記錄MySql
- 軟體登錄檔殘留怎樣清理_win10刪除登錄檔殘留檔案的方法Win10
- win10怎樣清理自帶登錄檔_win10自帶登錄檔清理的方法Win10
- win10登錄檔怎麼開啟 開啟登錄檔編輯器的方法一覽Win10
- win10怎麼清理無效登錄檔 刪除無效登錄檔的解決方法Win10
- JQuery登錄檔單jQuery
- C#操作登錄檔簡單教程(附帶操作某資料庫客戶端登錄檔以實現重置試用期的效果)C#資料庫客戶端
- linux常用操作記錄Linux
- 登錄檔常用命令大全 通向程式的快捷途徑
- cfree登錄檔怎麼刪win10_win10電腦cfree登錄檔刪除的操作步驟Win10
- win10安全模式恢復登錄檔怎麼操作 win10如何在安全模式下修復登錄檔Win10模式
- QT選擇目錄等常用檔案/資料夾操作QT
- win10用快捷鍵登錄檔怎麼開啟_win10開啟登錄檔快捷鍵方法Win10
- php檔案操作之提取檔案/目錄的名稱PHP
- C#中常用的經典檔案操作方法C#
- win10系統登錄檔資訊怎麼刪除,win10電腦清除登錄檔資訊的方法Win10
- 利用登錄檔隱藏檔案
- windowXP登錄檔學習
- 獲取登錄檔字型
- win登錄檔相關
- win10登錄檔恢復初始狀態的方法Win10
- Win10 - 登錄檔獲取許可權的方法Win10
- 360鎖定了win10登錄檔怎麼辦_360鎖定了win10登錄檔的解除方法Win10
- win10誤刪登錄檔無法開機怎麼辦 恢復誤刪登錄檔的解決方法Win10
- win10 修改登錄檔開機啟動方法 win10怎麼修改登錄檔設定啟動項Win10