Nisy 发表于 2014-11-7 23:22:55

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 工程

sndncel 发表于 2014-11-8 09:00:14

{:soso_e113:}不懂C++,菜鸟进来膜拜了呀。。。。不知道C++自学能不能学会呀。。。。。

F8LEFT 发表于 2014-11-8 10:13:51

这组宏不错,不止用来build msimg32,用来build其他的也是可以的

开心啦 发表于 2014-11-8 11:00:32

不懂,来支持啦

小柯师傅 发表于 2014-11-8 11:24:04

学习宏的使用

xingbing 发表于 2014-11-8 11:53:50

支持,有个系列教程就好了。

wanap571 发表于 2014-11-23 14:57:25

看不懂也来支持一下

hu251405204 发表于 2015-1-22 08:37:52

不懂,来支持啦

hu251405204 发表于 2015-1-26 14:13:26

看不懂也来支持一下

xianfeng 发表于 2016-7-12 19:29:32

不懂C++要是易语言的就好了
页: [1] 2
查看完整版本: msimg32.dll 劫持代码