分享
 
 
 

我的使用createremotethread控制excel右键的源程序

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

利用CreateRemoteThread将dll写进excel.exe.利用SetWindowLong()改变excel中右键消息。dll源程序:#include <windows.h>

BOOL __stdcall DllMain(HANDLE,DWORD,LPVOID)

{

return TRUE;

}

/*

#pragma data_seg("shared")

#pragma data_seg()

#pragma comment(linker,"/SECTION:shared,rws")

*/

WNDPROC g_lpfnOldWndProc;

HWND g_hMsgWnd;

LRESULT APIENTRY HookExcelWndProc(HWND hWnd, UINT wMessage , WPARAM wParam, LPARAM lParam)

{

try

{

switch (wMessage)

{

case WM_RBUTTONDOWN:

MessageBox(g_hMsgWnd,"u click the r button","",MB_OK);

return 1;

break;

case WM_CLOSE:

::ExitProcess (0);

break;

default:

if (NULL == g_lpfnOldWndProc)

return DefWindowProc(hWnd,wMessage,wParam,lParam);

else

return CallWindowProc(g_lpfnOldWndProc,hWnd,wMessage,wParam,lParam);

}

}

catch(...)

{

}

return 0;

}

LRESULT __stdcall HookExcelRightMenu(HWND hwnd)

{

g_hMsgWnd = hwnd;

g_lpfnOldWndProc=(WNDPROC)::SetWindowLong(hwnd,GWL_WNDPROC,(LONG)HookExcelWndProc);

MSG msg;

while( ::GetMessage( &msg, NULL, 0, 0 ))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return TRUE;

}

注入进程源程序:#include <windows.h>

#include <tlhelp32.h>

const int MAXINJECTSIZE = 10240;

typedef HMODULE (__stdcall * LPLOADLIBRARY)(LPCTSTR);

typedef FARPROC (__stdcall * LPGETPROCADDRESS)(HMODULE,LPCTSTR);

typedef BOOL (__stdcall * LPFREELIBRARY)(HMODULE);

typedef LRESULT (__stdcall * LPHookExcelRightMenu)(HWND);

typedef struct

{

LPLOADLIBRARY prcLoadLib;

LPGETPROCADDRESS prcGetProcAddr;

LPFREELIBRARY prcFreeLib;

TCHAR szLibPath[MAX_PATH+1];

HWND hInjectWnd;

}INJECT_DLL,*LPINJECT_DLL;

DWORD GetProcessIdFromName(LPCTSTR name)

{

PROCESSENTRY32 pe;

DWORD id = 0;

HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

pe.dwSize = sizeof(PROCESSENTRY32);

if( !Process32First(hSnapshot,&pe) )

return 0;

do

{

pe.dwSize = sizeof(PROCESSENTRY32);

if( Process32Next(hSnapshot,&pe)==FALSE )

break;

if(stricmp(pe.szExeFile,name) == 0)

{

id = pe.th32ProcessID;

break;

}

} while(1);

CloseHandle(hSnapshot);

return id;

}

void EnableDebugPriv( void )

{

HANDLE hToken;

LUID sedebugnameValue;

TOKEN_PRIVILEGES tkp;

if ( ! OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) )

return;

if ( ! LookupPrivilegeValue( NULL, SE_DEBUG_NAME, &sedebugnameValue ) )

{

CloseHandle( hToken );

return;

}

tkp.PrivilegeCount = 1;

tkp.Privileges[0].Luid = sedebugnameValue;

tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

if ( ! AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof tkp, NULL, NULL ) )

CloseHandle( hToken );

}

#pragma check_stack(off)

static DWORD __stdcall ControlExcelThread(LPVOID lpVoid)

{

try

{

LPINJECT_DLL lpInject = (LPINJECT_DLL)lpVoid;

if (NULL == lpInject)

return -1;

HMODULE hMod = lpInject->prcLoadLib(lpInject->szLibPath);

if (NULL == hMod)

return -2;

LPHookExcelRightMenu lpHookExcelRightMenu;

lpHookExcelRightMenu = (LPHookExcelRightMenu)lpInject ->prcGetProcAddr (hMod,MAKEINTRESOURCE(1));

if ( !lpHookExcelRightMenu)

{

lpInject ->prcFreeLib (hMod);

return -3;

}

lpHookExcelRightMenu(lpInject->hInjectWnd);

lpInject ->prcFreeLib (hMod);

}

catch(...)

{

return -1;

}

return 0;

}

#pragma check_stack(on)

LRESULT InJectDllIntoProcess(LPCSTR pstrProcessName,HWND hwnd)

{

DWORD dwProcessID = 0;

// dwProcessID=GetProcessIdFromName(pstrProcessName);

GetWindowThreadProcessId(hwnd,&dwProcessID);

if ( dwProcessID < 1)

return -1;

EnableDebugPriv();

HANDLE hInjectTarget = OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwProcessID);

if (!hInjectTarget)

return -2;

INJECT_DLL pstInjectDll ;

memset(&pstInjectDll,0x0,sizeof(INJECT_DLL));

HMODULE hModule = ::LoadLibrary (TEXT("kernel32"));

if (!hModule)

return -3;

pstInjectDll.prcLoadLib = (LPLOADLIBRARY)::GetProcAddress(hModule,TEXT("LoadLibraryA"));

pstInjectDll.prcFreeLib = (LPFREELIBRARY)::GetProcAddress(hModule,TEXT("FreeLibrary"));

pstInjectDll.prcGetProcAddr = (LPGETPROCADDRESS)::GetProcAddress (hModule,TEXT("GetProcAddress"));

pstInjectDll.hInjectWnd = hwnd;

lstrcpy(pstInjectDll.szLibPath ,TEXT("E:\\KDCP\\backup\\dll\\injectdll\\debug\\injectdll.dll"));

LPBYTE lpExcelAddr = (LPBYTE)::VirtualAllocEx (hInjectTarget,NULL,MAXINJECTSIZE,MEM_COMMIT, PAGE_EXECUTE_READWRITE);

LPINJECT_DLL param = (LPINJECT_DLL) VirtualAllocEx( hInjectTarget, 0, sizeof(INJECT_DLL), MEM_COMMIT, PAGE_READWRITE );

WriteProcessMemory(hInjectTarget,lpExcelAddr,&ControlExcelThread,MAXINJECTSIZE,0);

WriteProcessMemory(hInjectTarget,param,&pstInjectDll,sizeof(INJECT_DLL),0);

DWORD dwThreadId = 0;

HANDLE hInjectThread;

try

{

hInjectThread= ::CreateRemoteThread (hInjectTarget,NULL,0,(LPTHREAD_START_ROUTINE)lpExcelAddr,param,0,&dwThreadId);

}

catch(...)

{

}

if (!hInjectThread)

dwThreadId = ::GetLastError ();

else

CloseHandle(hInjectThread);

CloseHandle(hInjectTarget);

::VirtualFreeEx (hInjectTarget,lpExcelAddr,0,MEM_RELEASE);

::VirtualFreeEx (hInjectTarget,param,0,MEM_RELEASE);

return 0;

}

void main()

{

HWND hwnd;

hwnd = FindWindowEx(NULL,NULL,"XLMAIN",NULL);

if (hwnd)

{

hwnd = FindWindowEx(hwnd,NULL,"XLDESK",NULL);

if (hwnd)

{

hwnd = FindWindowEx(hwnd,NULL,"EXCEL7",NULL);

InJectDllIntoProcess("excel.exe",hwnd);

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有