雨飞
发表于 2014-11-21 14:48:22
感谢N大分享!
Tab
发表于 2014-11-22 11:32:26
#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)
howill
发表于 2014-11-22 14:33:36
这次飘雪~~`
yuwei
发表于 2014-11-22 21:25:39
支持啊 分享
f1998
发表于 2014-11-23 00:03:22
好东西好东西好东西
jbhyx
发表于 2014-11-23 01:00:39
正在学习这个方法
greenrock
发表于 2014-11-23 11:51:52
感谢分享学习一下
fansmore
发表于 2014-11-23 22:20:34
好东西,学习了。
1067715492
发表于 2014-11-23 22:42:30
yuwei 发表于 2014-11-22 21:25
支持啊 分享
dingding................顶......
mulou
发表于 2014-11-24 08:57:49
听说很贵 但是 确实是好东西