msimg32.dll 劫持代码
#include <stdio.h>
#include <windows.h>
#include "Shlwapi.h"
HMODULE g_hMSIMG32 = NULL;
DWORD __stdcall ThreadProc(LPVOID lpParam){
return 0;
}
BOOL __stdcall DllMain( HMODULE hModule, DWORD dwReason, LPVOID lpReserved )
{
if( dwReason == DLL_PROCESS_ATTACH ){
HANDLE m_hThread=CreateThread(NULL,0,ThreadProc,NULL,0,NULL);
CloseHandle(m_hThread);
}
else if( dwReason == DLL_PROCESS_DETACH ){
}
return TRUE;
}
#define MSIMG32_DEF_IMPORT(x, y) g_fp##x = GetProcAddress( g_hMSIMG32, y );
#define MSIMG32_BUILD_STUB(x) __declspec(naked) void x ( void ) { \
__asm pushad \
__asm call MSIMG32InitializeImports \
__asm popad \
__asm jmp g_fp##x## \
}
FARPROC g_fpvSetDdrawflag;
FARPROC g_fpAlphaBlend;
FARPROC g_fpDllInitialize;
FARPROC g_fpGradientFill;
FARPROC g_fpTransparentBlt;
void MSIMG32InitializeImports( void )
{
if( g_hMSIMG32 == NULL )
{
char szBuffer[ MAX_PATH ] = "";
GetSystemDirectory( szBuffer, sizeof( szBuffer ) );
strcat( szBuffer, "\\msimg32.dll");
g_hMSIMG32 = LoadLibrary( szBuffer );
MSIMG32_DEF_IMPORT( vSetDdrawflag, "vSetDdrawflag" );
MSIMG32_DEF_IMPORT( AlphaBlend, "AlphaBlend" );
MSIMG32_DEF_IMPORT( DllInitialize, "DllInitialize" );
MSIMG32_DEF_IMPORT( GradientFill, "GradientFill" );
MSIMG32_DEF_IMPORT( TransparentBlt, "TransparentBlt" );
}
}
MSIMG32_BUILD_STUB(vSetDdrawflag)
MSIMG32_BUILD_STUB(AlphaBlend)
MSIMG32_BUILD_STUB(DllInitialize)
MSIMG32_BUILD_STUB(GradientFill)
MSIMG32_BUILD_STUB(TransparentBlt)
这组宏用的好巧妙 ~
节选自 msimg32+with+TabSiPlus\msimg32 with TabSiPlus\DLLMain.cpp 工程
{:soso_e113:}不懂C++,菜鸟进来膜拜了呀。。。。不知道C++自学能不能学会呀。。。。。 这组宏不错,不止用来build msimg32,用来build其他的也是可以的 不懂,来支持啦 学习宏的使用 支持,有个系列教程就好了。 看不懂也来支持一下 不懂,来支持啦 看不懂也来支持一下 不懂C++要是易语言的就好了
页:
[1]
2