獲得kernel32基位址的通用辦法

2021-06-16 05:39:02 字數 909 閱讀 6189

win7上也能用的定位kernel32基址的方法

2010-10-21 13:12

看雪上看到的,挺不錯,轉至

通過在ininitializationordermodulelist中查詢kernel32.dll模組名稱的長度來定位它的基位址,因為"kernel32.dll"的最後乙個字元為"/0"結束符。所以倘若模組最後乙個位元組為"/0"即可定位kernel32.dll的位址;

具體**實現方法:

;find kernel32.dll

find_kernel32:

push esi

xor ecx, ecx

mov esi, [fs:ecx+0x30]

mov esi, [esi + 0x0c]

mov esi, [esi + 0x1c]

next_module:

mov eax, [esi + 0x8]

mov edi,[esi+0x20]

mov esi ,[esi]

cmp [edi+12*2],cx

jne next_module

pop esi

ret通過我的測試,這種利用該方法編寫的shellcode可以在32位平台windows 5.0-7.0的所有版本上適用,下面是經我測試在win 7下實現執行calc.exe的shellcode,shellcode本身寫的很粗糙只為驗證該方法的可用性!

#include

#include

#include

int main()

;printf("size of shellcode: %d/n", strlen(shellcode));

system("pause");

((void (*)())shellcode)();

return 0;}

搜尋PEB結構獲取Kernel32 dll基址

teb偏移0x30處,即fs 0x30 位址處儲存著乙個指標,指向peb,peb結構的偏移0xc處儲存著另外乙個指標ldr,該指標執行peb ldr data 該結構的後三個成員是指向ldr module鍊錶結構中相應三條雙向煉表頭的指標,分別是按照載入順序 在記憶體中位址順序和初始化順序排列的模組...

3 2 抽象基類(abc模組)

實現乙個抽象基類,不適用abc模組 1 class base 2def get self,key 3raise notimplemented45 defset self,key,value 6raise notimplemented78 9class test base 10def get self...

C 簡繁體轉換方法 kernel32 dll

洪曉平原創,感謝作者 1.using system.runtime.interopservices 2.import kernel32.dll dllimport kernel32.dll entrypoint lcmapstringa public static extern int lcmaps...