进程调试(有权限的前提下,没有权限请自觉提权)
1.获取运行中的进程句柄
1.1 从窗口句柄获得进程句柄
FindWindow
GetWindowThreadProcessId
OpenProcess
.if eax
mov hProcess,eax
.endif
1.2 从进程快照获取进程句柄
涉及函数和结构:
PROCESSENTRY32 结构
CreateToolhelp32Snapshot:可以获取进程、线程、堆和模块等对象的列表,用法相似,以进程列表为例
.data?
stProcess PROCESSENTRY32 <?>
hSnapShot dd ?
.code
invoke CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0
mov hSnapShot,eax
mov stProcess.dwSize,sizeof stProcess
invoke Process32First,hSnapShot,addr stProcess
.while eax
;处理 PROCESSENTRY32 中进程信息
invoke Process32Next,hSnapShot,addr stProcess
.endw
invoke CloseHandle,hSnapShot
2.读写进程地址空间
读进程内存:ReadProcessMemory
写进程内存:WriteProcessMemory
函数注意事项:
(1)应具有相应的权限
(2)一般不会出现只读写了一部分内存的情况,因为函数会检查指定大小的