FS寄存器里有一个非常的结构:
FS:[20H]是一个DebugCorrtext,一下的代码可以用来反调试:
Mov ECX, FS:[20H]
JECXZ NotDebug
如果FS:[20H]是0的话,就说明没有被调试
FS:[18H] 存储的是TEB地址.
FS:[30H] 存储的是PEB地址.
一下的代码可以获得kernel32.dll的地址
mov eax, fs:0x30
mov eax, [eax + 0x0c]
mov esi, [eax + 0x1c]
lodsd
mov ebp, [eax + 0x08] //ebp 就是kernel32.dll的地址了
mov eax, [eax + 0x0c]
mov esi, [eax + 0x1c]
lodsd
mov ebp, [eax + 0x08] //ebp 就是kernel32.dll的地址了
在PEB+0x0c地方指向PEB_LDR_DATA结构
在PEB_LDR_DATA+0x1c地方就是一些动态连接库的地址了,
在PEB_LDR_DATA+0x1c地方就是一些动态连接库的地址了,
第一个指向ntdll.dll
第二个就是kernel32.dll的地址
FS在windows中是指向TEB的指针…
踩你的空间,以后偶会经常来的。 ~哈哈~~~~~~~~