dll 원격 스레드 주입
- bool EnableDebugPriv()
- {
- HANDLE hToken;
- TOKEN_PRIVILEGES tp;
- LUID luid;
- if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
- return false;
-
- if(!LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&luid))return false;
-
- tp.PrivilegeCount = 1;
- tp.Privileges[0].Attributes =SE_PRIVILEGE_ENABLED;
- tp.Privileges[0].Luid = luid;
- if(!AdjustTokenPrivileges(hToken,0,&tp,sizeof(TOKEN_PRIVILEGES),NULL,NULL) ) return false;
-
- return true;
- }
-
- // rundll32 yourdll,test dll
- //dll
- //dll
- bool InstallDll(std::string mDllFullPath,DWORD mProcessID)
- {
- if (mProcessID == 0)return false;
- if(!EnableDebugPriv())return false;
- HANDLE hRemoteProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,mProcessID);
- if(hRemoteProcess == NULL)return false;
-
- size_t length = mDllFullPath.size() + 1;
-
- char *pszLibFileRemote = (char *)::VirtualAllocEx(hRemoteProcess, NULL, length, MEM_COMMIT, PAGE_READWRITE);
- if(pszLibFileRemote==NULL)return false;
-
- if(WriteProcessMemory(hRemoteProcess,pszLibFileRemote,mDllFullPath.c_str(),length,NULL) == 0)
- return false;
-
- PTHREAD_START_ROUTINE pfnStartAddr=(PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandleA("Kernel32"),"LoadLibraryA");
- if(pfnStartAddr == NULL)
- {
- ::VirtualFreeEx(hRemoteProcess,pszLibFileRemote,length,MEM_RELEASE);
- return false;
- }
-
- HANDLE hRemoteThread = CreateRemoteThread(hRemoteProcess,NULL,0,pfnStartAddr,pszLibFileRemote,0,NULL);
- if(hRemoteThread==NULL)
- {
- ::VirtualFreeEx(hRemoteProcess,pszLibFileRemote,length,MEM_RELEASE);
- return false;
- }
-
- ::VirtualFreeEx(hRemoteProcess,pszLibFileRemote,length,MEM_RELEASE);
-
- return true;
- }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
LoadLibrary에서 126 오류가 발생하면 원인이되는 파일 이름을 찾는 방법Loadlibrary에서 DLL을 동적으로 로드할 때 로드 실패입니다. 실패한 파일 이름은 알려주지 않습니다. 로드하고자 하는 DLL 자체를 로드할 수 없다면 이야기는 간단하지만, 대상 DLL이 다른 DLL을 로드하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.