C语言检测dll注入,有木有大佬帮我看看,我自己写的注入DLL程序怎么达不到效果。。...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

/*-----------------------------这个是注入程序源代码----------------*/

#include

using namespace std;

BOOL CreateRemoteThreadInjectDll(DWORD dwProcessId,LPCWSTR lpwLibFile);

DWORD dwError = NOERROR;

DWORD dwPID = 0;

int main()

{

scanf("%d",&dwPID);

if(CreateRemoteThreadInjectDll(dwPID,L"InjectDll"))

cout<

else

cout<

}

BOOL CreateRemoteThreadInjectDll(DWORD dwProcessId,LPCWSTR lpwLibFile)

{

BOOL bRet = FALSE;

HANDLE hProcess = NULL , hThread = NULL;

LPVOID pszLibRemoteFile = NULL;

SIZE_T dwWritten = 0;

//打开进程

hProcess = OpenProcess(PROCESS_ALL_ACCESS,TRUE,dwProcessId);

if(hProcess == INVALID_HANDLE_VALUE)

{

dwError = GetLastError();

cout<

<

return FALSE;

}

int cch = 1 + lstrlenW(lpwLibFile);

int cb = cch * sizeof(WCHAR);

cout<

cout<

//申请空间

pszLibRemoteFile = VirtualAllocEx(hProcess,NULL,cb,

MEM_COMMIT, PAGE_READWRITE);

if(pszLibRemoteFile == NULL)

{

dwError = GetLastError();

cout<

<

return FALSE;

}

//写入内存

BOOL bw = WriteProcessMemory(hProcess,pszLibRemoteFile,

(PVOID)lpwLibFile,cb,&dwWritten);

if(dwWritten != cb)

{

cout<

}

if(!bw)

{

dwError = GetLastError();

cout<

return FALSE;

}

//获得LoadLibraryW()函数地址

PTHREAD_START_ROUTINE pfnThreadRnt =

(LPTHREAD_START_ROUTINE)GetProcAddress(

GetModuleHandleW(L"Kernel32"),"LoadLibraryW");

if(pfnThreadRnt == NULL)

{

dwError = GetLastError();

cout<

<

return FALSE;

}

//创建线程

hThread = CreateRemoteThread(hProcess,

NULL,

0,

pfnThreadRnt,

pszLibRemoteFile,

0,

NULL);

if (WAIT_FAILED == WaitForSingleObject(hThread,INFINITE))

{

cout<

dwError = GetLastError();

cout<

return FALSE;

}

CloseHandle(hThread);

return TRUE;

}

/*----------------------------------------------------------------------------------------------------*/

/*------------------------------------这个是被注入的DLL源代码----------------------------*/

#include

BOOL WINAPI DllMain(HINSTANCE hInstance,DWORD fdwReason,LPVOID lpReserved)

{

switch(fdwReason)

{

case DLL_PROCESS_ATTACH:

MessageBox(NULL,NULL,NULL,MB_OK);

break;

case DLL_THREAD_ATTACH:

break;

case DLL_THREAD_DETACH:

break;

case DLL_PROCESS_DETACH:

break;

} return TRUE;

}

/*--------------------------------------------------------------------------------------------------*/

程序运行后,输入PID,显示OK,即注入完成,但是什么反应都没有,按理说导入DLL不是应该出现个消息框吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值