WEB开发网
开发学院软件开发VC 导入表内注入代码(二) 阅读

导入表内注入代码(二)

 2007-03-17 21:59:50 来源:WEB开发网   
核心提示: 现在我想要论述更为深入的主题,该主题对于希望理解在Windows System上的用户级(ring-3) rootkits [7]操作的人们是会特别感兴趣的,导入表内注入代码(二)(4),首先也是最终的问题,注入一个运行时进程的导入表是怎样做到的,9. HANDLE hProcess =

现在我想要论述更为深入的主题。该主题对于希望理解在Windows System上的用户级(ring-3) rootkits [7]操作的人们是会特别感兴趣的。首先也是最终的问题,注入一个运行时进程的导入表是怎样做到的,该节将回答这个问题。我们想要注入一个运行时进程并修改之。你是否记得:在我得以前的文章[2],我创建了一个Windows Spy来捕获Windows Class的属性并在运行时修改他们。这一次,我将走近改写内存和从外界重定向导入表。

1. 通过使用WindowFromPoint()我们能获得一个特定点的窗体句柄,GetWindowThreadProcessId()帮助我们知道该窗体句柄的进程ID和线程ID。

2. POINT point;
3. HWND hWindowUnderTheMouse = WindowFromPoint(point);
4. ...
5. DWORD dwProcessId;
6. DWORD dwThreadId;
7. dwThreadId=GetWindowThreadProcessId(hSeekedWindow, &dwProcessId);
8. 进程和线程的句柄由OpenProcess()和OpenThread()获得。但是在Windows 98中没有OpenThread()。不要担心,用EliCZ’找到RT,一个在Windows 98中模拟OpenThread(), CreateRemoteThread(),VirtualAllocEX(), 和 VirtualFreeEx()的库。

9. HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, dwProcessId );
10. HANDLE hThread = OpenThread( THREAD_ALL_ACCESS, FALSE, dwThreadId);
11. 为了开始操作进程的内存,我们应该首先通过挂起主线程冻结进程。

12. SuspendThread(hThread);13. Thread Environment Block (TEB)位置可以通过我们没有权限访问的FS:[18]获得!因此GetThreadContext() 和 GetThreadSelectorEntry()帮助我们来了解FS段的基值。

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:导入 注入 代码

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接