WEB开发网      婵犻潧鍊婚弲顐︽偟椤栨稓闄勯柦妯侯槸閻庤霉濠婂骸浜剧紒杈ㄥ笚閹峰懘鎮╅崹顐ゆ殸婵炴垶鎸撮崑鎾趁归悩鐑橆棄闁搞劌瀛╃粋宥夘敃閿濆柊锕傛煙鐎涙ê鐏f繝濠冨灴閹啴宕熼鍡╀紘婵炲濮惧Λ鍕叏閳哄懎绀夋繛鎴濈-楠炪垽鎮归崶褍妲婚柛銊ュ缁傚秹鏁撻敓锟� ---闂佹寧娲╅幏锟�
开发学院软件开发VC 导入表内注入代码(二) 阅读

导入表内注入代码(二)

 2007-03-17 21:59:50 来源:WEB开发网 闂侀潧妫撮幏锟�闂佸憡鍨电换鎰版儍椤掑倵鍋撳☉娆嶄沪缂傚稄鎷�婵犫拃鍛粶闁靛洤娲ㄩ埀顒佺⊕閵囩偟绱為敓锟�闂侀潧妫撮幏锟�  闂佺ǹ绻楀▍鏇㈠极閻愬搫绾ч柕濠忕細閼割亜顪冪€n剙浠ф繛鍫熷灥椤曘儵顢欓悡搴ば�
核心提示: 现在我想要论述更为深入的主题,该主题对于希望理解在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:导入 注入 代码

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