C++免杀
假設我們的特征碼定位在MessageBoxA函數的地址(只是舉個例子,一般這個函數不會被殺,其他函數也類似方法)那么我們到源碼里面發現,我們在PrintMsg函數中調用了這個API函數,那么我們就要對他進行處理。對于輸入表被查殺我們一般的處理方法是修改函數的調用方式,比如采用dll動態調用,通過上圖,我們知道我們是以非unicode方式編譯的MessageBox,他對應的非Unicode的函數為MessageBoxA,同時我們也得到這個MessageBoxA函數在UER32.dll文件中。那么我們修改MessageBox的調用方式為dll的動態調用,其代碼修改成:
typedef int (WINAPI *MessageBoxAT)
(
??HWND hWnd,
??LPCSTR lpText,
??LPCSTR lpCaption,
??UINT uType
);
void PrintMsg()
{
??char StrMsg[]="FgneL!olleH";
??MessageBoxAT pMessageBoxA= (MessageBoxAT)GetProcAddress(LoadLibrary("user32.dll"),"MessageBoxA");
??pMessageBoxA(NULL,strrev(StrMsg),NULL,MB_OK);
}
這樣以后我們就修改了輸入表中調用API函數的名稱了。其他API函數也可以類似的修改調用方式。?
typedef int (WINAPI *MessageBoxAT)
(
??HWND hWnd,
??LPCSTR lpText,
??LPCSTR lpCaption,
??UINT uType
);
void PrintMsg()
{
??char StrMsg[]="FgneL!olleH";
??MessageBoxAT pMessageBoxA= (MessageBoxAT)GetProcAddress(LoadLibrary("user32.dll"),"MessageBoxA");
??pMessageBoxA(NULL,strrev(StrMsg),NULL,MB_OK);
}
這樣以后我們就修改了輸入表中調用API函數的名稱了。其他API函數也可以類似的修改調用方式。?
轉載于:https://www.cnblogs.com/94cool/archive/2012/10/31/2747403.html
總結
- 上一篇: Delphi中取得和设置硬盘上文件的创建
- 下一篇: win电脑开机密码怎么改 Win电脑开机