資源簡介
代碼HOOK技術(shù)不管在安全領(lǐng)域還是在木馬病毒方面都運(yùn)用很廣泛,因?yàn)樗梢愿淖兂绦驁?zhí)行流程,悄無聲息執(zhí)行我們自己的代碼。
之前我也用過一些hook類,如mhook等,但很多都局限于API HOOK,有的時候無法滿足實(shí)際應(yīng)用。也因此,我自己的hook類就誕生了。
詳細(xì)說明:
http://blog.csdn.net/sunflover454/article/details/49029615
代碼片段和文件信息
//?HookDemo.cpp?:?定義應(yīng)用程序的類行為。
//
#include?“stdafx.h“
#include?“HookDemo.h“
#include?“HookDemoDlg.h“
#ifdef?_DEBUG
#define?new?DEBUG_NEW
#endif
//?CHookDemoApp
BEGIN_MESSAGE_MAP(CHookDemoApp?CWinApp)
ON_COMMAND(ID_HELP?&CWinApp::onhelp)
END_MESSAGE_MAP()
//?CHookDemoApp?構(gòu)造
CHookDemoApp::CHookDemoApp()
{
//?支持重新啟動管理器
m_dwRestartManagerSupportFlags?=?AFX_RESTART_MANAGER_SUPPORT_RESTART;
//?TODO:?在此處添加構(gòu)造代碼,
//?將所有重要的初始化放置在?InitInstance?中
}
//?唯一的一個?CHookDemoApp?對象
CHookDemoApp?theApp;
//?CHookDemoApp?初始化
BOOL?CHookDemoApp::InitInstance()
{
//?如果一個運(yùn)行在?Windows?XP?上的應(yīng)用程序清單指定要
//?使用?ComCtl32.dll?版本?6?或更高版本來啟用可視化方式,
//則需要?InitCommonControlsEx()。否則,將無法創(chuàng)建窗口。
INITCOMMONCONTROLSEX?InitCtrls;
InitCtrls.dwSize?=?sizeof(InitCtrls);
//?將它設(shè)置為包括所有要在應(yīng)用程序中使用的
//?公共控件類。
InitCtrls.dwICC?=?ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp::InitInstance();
AfxEnableControlContainer();
//?創(chuàng)建?shell?管理器,以防對話框包含
//?任何?shell?樹視圖控件或?shell?列表視圖控件。
CShellManager?*pShellManager?=?new?CShellManager;
//?標(biāo)準(zhǔn)初始化
//?如果未使用這些功能并希望減小
//?最終可執(zhí)行文件的大小,則應(yīng)移除下列
//?不需要的特定初始化例程
//?更改用于存儲設(shè)置的注冊表項(xiàng)
//?TODO:?應(yīng)適當(dāng)修改該字符串,
//?例如修改為公司或組織名
SetRegistryKey(_T(“應(yīng)用程序向?qū)傻谋镜貞?yīng)用程序“));
CHookDemoDlg?dlg;
m_pMainWnd?=?&dlg;
INT_PTR?nResponse?=?dlg.DoModal();
if?(nResponse?==?IDOK)
{
//?TODO:?在此放置處理何時用
//??“確定”來關(guān)閉對話框的代碼
}
else?if?(nResponse?==?IDCANCEL)
{
//?TODO:?在此放置處理何時用
//??“取消”來關(guān)閉對話框的代碼
}
//?刪除上面創(chuàng)建的?shell?管理器。
if?(pShellManager?!=?NULL)
{
delete?pShellManager;
}
//?由于對話框已關(guān)閉,所以將返回?FALSE?以便退出應(yīng)用程序,
//??而不是啟動應(yīng)用程序的消息泵。
return?FALSE;
}
評論
共有 條評論