- 一种html模版输出方式
- 用ASP将JAVASCRIPT代码写入客户端执行的一种简易方法..
- 使用ASP.NET程序来管理文件或目录的一种方案未知
- 幸福是一种感受
- [组图] QQ收费头像免费使用的又一种方法
- 一种可以穿透还原卡和还原软件的代码
- [图文] 一种新的带宽攻击方式(图)
- 载入Loadbar 另一种很酷的载入效果
- 一种简单方便的用户权限管理方法--使用菜单来管理用..
- FreeBSD chown的另一种用法
- 如何快速导出数据库为EXCEL文档(另一种方法)
- [图文] 网页制作技巧之一种细腻导航效果的制作方法
- 一种实现数据库连接池的方法(1)
- 一种实现数据库连接池的方法(2)
- 一种实现数据库连接池的方法(3)
- javascript向jsp传递参数的一种手段:使用xmlhttp对..
- 介绍一种效率极高的分类算法
- ASP生成静态网页,学习CASE的用法,以及“权限”的一..
- 利用http组件来实现页面打印的一种方法
我在写注入程序的时候,偶尔遇见过一些邪门儿的问题,比如挂在explorer上面不能运行,挂在其他的进程上面却很正常,为了能尽快地解决问题。我就犯懒设计了这个东西。因此也就不用怕由于进程的终止而导致dll文件的卸载:
DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
DWORD dwThreadID,pID,pPriID;
void *pRemoteThread;
HANDLE hProcess,hThread;
char pszLibFileName[MAX_PATH];
GetSystemDirectory(pszLibFileName,MAX_PATH);
strcat(pszLibFileName,"\\library.dll");
int cb = (1 + lstrlenA(pszLibFileName)) * sizeof(WCHAR);
PTHREAD_START_ROUTINE pfnStartAddr = (PTHREAD_START_ROUTINE)
GetProcAddress(GetModuleHandle(TEXT("Kernel32")), "LoadLibraryA");
EnableDebugPriv();
/*
maxthon.exe
firefox.exe
opera.exe
ttraveler.exe
*/
char *szBrowserName[5]=
{
"maxthon.exe",
"firefox.exe",
"opera.exe",
"ttraveler.exe",
"iexplore.exe"
};
do
{
for(int i=0;i<5;i++)
{
pID = GetPidByName(szBrowserName[i]);
if(pID != 0)
i = 5;
}
if(pID == 0)
{
hThread = NULL;
}
else if((pID != 0)&&(hThread == NULL))
{
pPriID = pID;
hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pID);
if(!hProcess)
return 0;
pRemoteThread = VirtualAllocEx(hProcess,
NULL,
cb,
MEM_COMMIT | MEM_RESERVE,
PAGE_EXECUTE_READWRITE);
if(!pRemoteThread)
return 0;
if(!WriteProcessMemory(hProcess, pRemoteThread,
(PVOID)pszLibFileName,
cb,
0))
return 0;
hThread = CreateRemoteThread(hProcess ,
NULL,
0,
pfnStartAddr,
pRemoteThread,
0,
&dwThreadID);
CloseHandle(hProcess);
}
else if((pID != 0)&&(hThread != NULL)&&(pPriID!=pID))
hThread = NULL;
Sleep(100);
}
while(dwCurrState != SERVICE_STOP_PENDING && dwCurrState != SERVICE_STOPPED);
return 0;
}
这种模式能确保挂接的dll文件不会因为进程终止而卸载。
[编辑:百家电脑学院] [返回学院首页] [返回上一页] []
·上一篇:利用MFC操作MySQL数据库 · 下一篇:DEBUG命令大全

