加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

APC注入

发布时间:2020-12-14 01:37:46 所属栏目:Windows 来源:网络整理
导读:#include windows.h #include tlhelp32.h #include stdio.h DWORD GetProcessIdByName(char *pszProcessName) { HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); PROCESSENTRY32 ProcesEntry = {sizeof(ProcesEntry)}; BOOL bRet = Process
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>

DWORD GetProcessIdByName(char *pszProcessName) {
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
PROCESSENTRY32 ProcesEntry = {sizeof(ProcesEntry)};
BOOL bRet = Process32First(hSnap,&ProcesEntry);
while (bRet) {
if (strcmpi(ProcesEntry.szExeFile,pszProcessName) == 0) {
return ProcesEntry.th32ProcessID;
}
bRet = Process32Next(hSnap,&ProcesEntry);
}
}

BOOL GetAllThreadId(DWORD ProcessId,DWORD **ppThreadId,DWORD *LengthThread){
HANDLE hSnap=CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,0);
THREADENTRY32 ThreadEntry={sizeof(ThreadEntry)};
BOOL bRet=Thread32First(hSnap,&ThreadEntry);
DWORD *pThreadId =malloc(sizeof(DWORD)*1024);
int count=0;
while(bRet){
if(ThreadEntry.th32OwnerProcessID==ProcessId){
pThreadId[count]=ThreadEntry.th32ThreadID;
count++;
}
bRet=Thread32Next(hSnap,&ThreadEntry);
}
*ppThreadId=pThreadId;
*LengthThread=count;
}

BOOL DllInject(char *pszProcessName,char *pszDllName){
DWORD ProcessId=GetProcessIdByName(pszProcessName);
DWORD *pThreadId=NULL;
DWORD LengthThread=0;
GetAllThreadId(ProcessId,&pThreadId,&LengthThread);
HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,ProcessId);
LPVOID lDllAdr=VirtualAllocEx(hProcess,NULL,strlen(pszDllName)+1,MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE);
WriteProcessMemory(hProcess,lDllAdr,pszDllName,0);
FARPROC pLoadLibraryA=GetProcAddress(GetModuleHandleA("kernel32.dll"),"LoadLibraryA");
HANDLE hThread;
for(int i=0;i<LengthThread;i++){
hThread=OpenThread(THREAD_ALL_ACCESS,pThreadId[i]);
QueueUserAPC((PAPCFUNC)pLoadLibraryA,hThread,(ULONG_PTR) lDllAdr);
}
}

int main(){
DllInject("code.exe","C:UsersbeiniDesktopworktest.dll");
return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读