fs暫存器指向當前活動執行緒的teb結構(執行緒結構)
偏移 說明
000 指向seh鏈指標
004 執行緒堆疊頂部
008 執行緒堆疊底部
00c subsystemtib
010 fiberdata
014 arbitraryuserpointer
018 fs段暫存器在記憶體中的映象位址
020 程序pid
024 執行緒id
02c 指向執行緒區域性儲存指標
030 peb結構位址(程序結構)
034 上個錯誤號
得到kernel32.dll基址的方法
assume fs:nothing ;開啟fs暫存器
mov eax,fs:[30h] ;得到peb結構位址
mov eax,[eax + 0ch] ;得到peb_ldr_data結構位址
mov esi,[eax + 1ch] ;ininitializationordermodulelist
lodsd ;得到kernel32.dll所在ldr_module結構的ininitializationordermodulelist位址
mov edx,[eax + 8h] ;得到baseaddress,既kernel32.dll基址
fs暫存器 資料
fs暫存器指向當前活動執行緒的teb結構 執行緒結構 偏移 說明 000 指向seh鏈指標 004 執行緒堆疊頂部 008 執行緒堆疊底部 00c subsystemtib 010 fiberdata 014 arbitraryuserpointer 018 fs段暫存器在記憶體中的映象位址 teb...
獲取其他程序的fs暫存器
由於fs暫存器裡面有很多資訊可用,so 在不注入的情況下採用暴力搜尋。我不知道有沒有更高階的辦法。nt teb 0x000 nttib nt tib 0x000 exceptionlist ptr32 0x004 stackbase ptr32 0x008 stacklimit ptr32 0x00...
C 使用FS暫存器判斷程序是否被除錯
昨天研究了一下isdebuggerpresent這個函式的實現 發現真的很簡單,只有區區4行 mov eax,dword ptr fs 018h mov eax,dword ptr eax 030h movzx eax,dword ptr eax 02h ret參考了一些大牛的文章,原來第一行是獲取...