利用shellcode來實現API的自動定位

2021-10-09 12:39:43 字數 842 閱讀 3610

#include

void

main()

}

拖入od中把shellcode轉換成機器碼(太麻煩了就不做了)

但是這串**尋找kernel32.dll的方法是直接mov ebp,[ecx + 0x08],根據偏移量直接找到。ldr->ininitializationmodulelist鍊錶在win7後把kernel32.dll移到了第四位,因此沒有辦法保證shellcode的通用性。

保險一點感覺可以選用逐字的比對的方法。再把dll的名稱也遍歷一遍。

mov edx,ecx

cmp byte ptr [edx]

,'k'

類似這種對比驗證。

同樣該種方法也不能避免hash碰撞,如果遍歷的函式多了,很有可能會發生這種情況,以後有時間再來優化這個shellcode吧。

附:ldr_data結構

typedef struct _peb_ldr_data

peb_ldr_data,*

ppeb_ldr_data

;// +0x24

export_directory結構:

typedef struct _image_export_directory 

image_export_directory,*

pimage_export_directory

;

利用static來實現單例模式

class singleton private static singleton instance null publicsynchronizedstatic singleton getinstance return instance 就利用sington.getinstace就可以了,獲得的是同乙...

利用HandlerInteceptor來做請求驗證

小疑問 為什麼是interceptor的名字是用handler開頭的而不是httprequest?其實這是spring自己的 servlet的api裡是沒有interceptor的,功能相似的是filter,但是spring需要更強的控制能力,可以說是定製能力,filter只有interceptor...

利用CDialogBar來實現類似工具欄的浮動條

如果你想實現有工具條的浮動和定位功能,而且可以方便的擺放任何控制項上去,請繼續看這篇文章吧!那就使用cdialogbar就可以擁有和cdialog一樣的方便和快捷。步驟1 新增乙個cdialogbar派生類 在資源中新增乙個對話方塊,再採用類嚮導來新增類,找不到cdialogbar作為基類吧,可以先...