修改EIP注入DLL入的一个示例
来源:互联网 发布:mac os 常用软件 编辑:程序博客网 时间:2024/04/30 15:52
HWND hWnd=::FindWindow(NULL,L"窗口标题");
if(hWnd==NULL)
{
MessageBox(L"未获取窗口句柄!",L"失败",MB_OK);
return;
}
DWORD pid,tid;
tid=GetWindowThreadProcessId(hWnd,&pid);
if(tid<=0)
{
MessageBox(L"未获取线程ID",L"失败");
return;
}
if(pid<=0)
{
MessageBox(L"未获取进程ID",L"失败");
return;
}
HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);
if(hProcess <= 0)
{
MessageBox(L"未获取进程句柄",L"失败");
return;
}
HANDLE hThread=OpenThread(THREAD_ALL_ACCESS,FALSE,tid);
if(hThread <= 0)
{
MessageBox(L"未获取线程ID",L"失败");
return;
}
SuspendThread(hThread);
CONTEXT ct={0};
ct.ContextFlags = CONTEXT_CONTROL;
GetThreadContext(hThread,&ct);
DWORD dwSize = sizeof(WCHAR)*1024;
BYTE *pProcessMem = (BYTE *)::VirtualAllocEx(hProcess,NULL,dwSize,MEM_COMMIT,PAGE_EXECUTE_READWRITE);
DWORD dwWrited = 0;
::WriteProcessMemory(hProcess, (pProcessMem + 0x100), pDllPath, (wcslen(pDllPath) + 1) * sizeof(WCHAR), &dwWrited);
FARPROC pLoadLibraryW = (FARPROC)::GetProcAddress(::GetModuleHandle(L"Kernel32"), "LoadLibraryW");
BYTE ShellCode[32] = { 0 };
DWORD *pdwAddr = NULL;
ShellCode[0] = 0x60; // pushad
ShellCode[1] = 0x9c; // pushfd
ShellCode[2] = 0x68; // push
pdwAddr = (DWORD *)&ShellCode[3]; // ShellCode[3/4/5/6]
*pdwAddr = (DWORD)(pProcessMem + 0x100);
ShellCode[7] = 0xe8;//call
pdwAddr = (DWORD *)&ShellCode[8]; // ShellCode[8/9/10/11]
*pdwAddr = (DWORD)pLoadLibraryW - (DWORD)(pProcessMem + 7) - 5;
ShellCode[12] = 0x9d; // popfd
ShellCode[13] = 0x61; // popad
ShellCode[14] = 0xe9; // jmp
pdwAddr = (DWORD *)&ShellCode[15]; // ShellCode[15/16/17/18]
*pdwAddr = ct.Eip - (DWORD)(pProcessMem + 14) - 5;
::WriteProcessMemory(hProcess, pProcessMem, ShellCode, sizeof(ShellCode), &dwWrited);
ct.Eip = (DWORD)pProcessMem;
::SetThreadContext(hThread, &ct);
::ResumeThread(hThread);
::CloseHandle(hProcess);
::CloseHandle(hThread);
0 0
- 修改EIP注入DLL入的一个示例
- 修改EIP注入DLL入的一个示例
- R3修改线程上下文EIP实现的无模块注入
- R3修改线程上下文EIP实现的无模块注入
- 通过修改EIP寄存器实现强行跳转并且注入DLL到目标进程里
- eip被修改的几种情况
- 一个完整的DLL远程注入函数
- 一个完整的DLL远程注入函数
- 远程线程注入dll的一个例子,netcat.dll
- 修改线程上下文注入DLL
- 系统栈的相关问题(2)---eip的修改
- 动态修改其它进程的代码,实现DLL注入
- 动态修改其它进程的代码,实现DLL注入
- 动态修改其它进程的代码,实现DLL注入
- 动态修改其它进程的代码实现DLL注入
- 动态修改其它进程的代码,实现DLL注入
- (32位汇编 十一)修改EIP的值
- VC++ 实现dll远程注入代码示例
- ubuntu安装php
- 【算法竞赛题解】:abc:def:ghi = 1:2:3,有新巧妙解法支付宝转5块
- SQLite的基本使用
- ThinkPHP3.2中Widget实例的使用
- redo log和undo log的区别
- 修改EIP注入DLL入的一个示例
- ios开发过程中的一些笔记,不断更新中。。。
- 新浪微博分享
- 什么是 csdn
- 六款值得推荐的android(安卓)开源框架简介
- DirectX11 演示程序框架
- android使用GestureDetector实现手势下滑与ListView onTouchEvent 冲突问题 解决
- Qt中在QMAinWindow内添加layout出现问题
- 幸存者偏差——讨论死在中国游戏圈的一百万种方式