原创 枚舉Window窗口、置頂、窗口對應進程

1、枚舉Window窗口、獲取當前激活窗口、根據窗口句柄獲取獲取標題欄文本 #include <stdio.h> #include <Windows.h> char g_szWindowName[MAX_PATH]={0}; BOO

原创 如何通過命令行啓動虛擬機

以virtualbox虛擬機爲例,virtualbox -h顯示可用指令如下: 找到你virtualbox虛擬機中想要啓動的虛擬機名和對應的快照名,打開對應快照。

原创 通過BIOS信息檢測虛擬機

VMware的虛擬機BIOS信息(太長,只顯示部分)如下: 代碼(msdn上面有代碼例子)如下,具體使用GetSystemFirmwareTable( )函數: #include <stdio.h> #include <windows

原创 通過註冊表查看Windows系統進程啓動順序

按下計算機電源按鈕,代碼先從BIOS執行,具體如下: BIOS—>MBR—>活動分區—>Ntoskrnl.exe、HAL—>服務類型爲0、1的服務—>會話管理器(smss.exe進程) 1、BIOS:這裏面的代碼是由其廠商提供,主要是開機

原创 Windows管理員權限思考

進程以管理員權限和非管理員權限運行有很大的特權差別,具體怎麼檢查當前進程是否以管理員權限運行,代碼如下: #include <stdio.h> #include <Windows.h> #include <Sddl.h> int ma

原创 用戶權限控制UAC

UAC:就是一個軟件要運行時,Windows操作系統會很明顯的提示用戶,這個軟件運行起來可能會有不好的後果(當然也可能是用戶預期的結果,其實是Windows操作系統不能預測這個軟件運行後的行爲),Windows操作系統就把這個“皮球”扔給

原创 獲取Windows指定目錄的幾個常用函數

直接代碼+截圖了 #include <stdio.h> #include <Shlobj.h> #include <Windows.h> int main() { char l_szWindowsDirectoryA[260]={0

原创 wininet.dll庫會默認開啓額外線程

分析樣本是發現線程數量從一個莫名增加到了5個,在CreateThread、--beginthread處下斷點,停在了CreateThread處,線程入口點地址很大,不像是用戶代碼。 後來一步步調試發現: 1、LoadLibraryW(L"

原创 powershell ISE

要powershell的腳本,可以把腳本一行一行復制粘貼到powershell的環境中執行(代碼少的話可以,代碼多就麻煩了,很不方便),微軟提供了一個可視化的調試工具powershell ISE 使用比VS都簡單,遺憾的是沒有查看臨時變

原创 Windows長短路徑問題引發OD調試樣本退出

樣本行爲: 1、CopyFileA( )函數拷貝自身到C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\SQLAGENTSAK.exe下(使用的是短路徑) 2、CreateProcessA創建子進程,參數cmd /c

原创 oday安全:軟件漏洞分析技術第十章棧中守護天使

爲了防止緩衝區溢出時覆蓋函數返回地址,編譯器使用了很酷的編譯選項——GS,GS工作原理如下: 1、在進程調用start( )函數時先初始化.data節區一個叫___security_cookie的變量(一個進程只用這一個___securi

原创 oday安全:軟件漏洞分析技術第十一章亡羊補牢:SafeSEH_0

第十一章第1節涉及到很多PE結構的概念順便複習一下: 1、SEH表:編譯器在編譯程序的時候把異常處理函數的地址提取出來,編入一張安全SEH表中,把這張表放到.rdata節區;VS2003以後版本的編譯器默認開啓該選項;可以通過VS自帶的V

原创 oday安全:軟件漏洞分析技術第三章例子_jmp esp

源代碼在前面例子的基礎上做一下修改: 1、buffer大小改爲4字節(節省空間) 2、讀取文件內容放棄fscanf( )函數,使用fread( )代替 代碼如下: #include <stdio.h> #include <Windows

原创 “行爲古怪”的IDA+腳本編寫

寫了一段代碼,main( )函數第一句就是int  3中斷調用: #include <stdio.h> #include <windows.h> void func1() { MessageBoxA(NULL,"消息1","提示"

原创 ELF文件入口點之後的執行流程

以上上篇文章中的test爲例,先看入口點函數start( ): 前輩已給出調用順序: 1、start( )->__libc_start_main( ) 2、__libc_start_main( )->init( )->main( )->