Win32汇编——过程控制(进程调试和进程隐藏)
来源:互联网 发布:求质数的算法 编辑:程序博客网 时间:2024/06/09 21:33
进程调试(有权限的前提下,没有权限请自觉提权)
1.获取运行中的进程句柄1.1 从窗口句柄获得进程句柄
FindWindowGetWindowThreadProcessIdOpenProcess.if eaxmovhProcess,eax.endif
1.2 从进程快照获取进程句柄
涉及函数和结构:
PROCESSENTRY32 结构
CreateToolhelp32Snapshot:可以获取进程、线程、堆和模块等对象的列表,用法相似,以进程列表为例
.data?stProcessPROCESSENTRY32<?>hSnapShotdd?.codeinvokeCreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0movhSnapShot,eaxmovstProcess.dwSize,sizeof stProcessinvokeProcess32First,hSnapShot,addr stProcess.whileeax;处理 PROCESSENTRY32 中进程信息invokeProcess32Next,hSnapShot,addr stProcess.endwinvokeCloseHandle,hSnapShot
2.读写进程地址空间
读进程内存:ReadProcessMemory
写进程内存:WriteProcessMemory
函数注意事项:
(1)应具有相应的权限
(2)一般不会出现只读写了一部分内存的情况,因为函数会检查指定大小的内存是否为可存取
(3)基指是位于目标进程的地址空间中的
(4)进程的代码段是不可写的,但可通过 WriteProcessMemory 函数去写目标进程的代码段
3.调试 API 的使用
书 p480-489
进程隐藏(远程线程)
1.相关函数:在其他进程的地址空间申请内存:VirtualAllocEx (需拥有 PROCESS_VM_OPERATION 权限)
创建远程线程:CreateRemoteThread (需拥有 PROCESS_CREATE_THREAD 权限)
建立的过程大致如下:
(1)VirtualAllocEx 申请一块够大的内存,内存块的属性应该是 PAGE_EXECUTE_READWRITE
(2)WriteProcessMemory 将所需代码拷贝进所申请内存
(3)CreateRemoteThread 创建远程线程
2.技术问题:代码重定位及导入函数
2.1 代码重定位
利用call指令将返回地址压入到堆栈的特性,使用call/pop/sub 3个指令的组合来计算代码当前的位置和设计时的位置的偏移值之差,用此差值去修正包含绝对值的指令,以达到重定位的目的。代码如下:
dwVardd?call@F@@:popebxsubebx,offset @Bmoveax,[ebx + offset dwVar]
2.2 导入函数
要在远程代码中使用API函数,就要手动完成系统工作,自己装入DLL,并使用GetProcAddress 函数获取全部要使用的API 函数的入口地址。此过程需用到DLL 文件的名称和函数的名称,这些字符串应放在全局变量中,因此又涉及到重定位的问题。
2.3 远程线程示例:P495
- Win32汇编——过程控制(进程调试和进程隐藏)
- Win32汇编教程十一 进程控制
- WIN32汇编: 14.进程
- Win32汇编——过程控制(环境变量、命令行参数、可执行文件执行)
- win32-hookdll,隐藏辅助进程
- win32-hookdll,隐藏辅助进程
- 进程和进程控制
- Win32 API进程创建控制
- 进程控制3——进程终止和等待
- Win32汇编实现枚举进程(PSAPI.DLL)
- Linux—进程控制
- Linux 进程控制——进程调度
- Linux下进程描述(1)—进程控制块
- 进程控制2—进程编程
- 枚举进程(汇编)
- win32 启动和结束进程
- 《unix高级环境编程》进程关系——控制终端、作业控制和守护进程
- 《unix高级环境编程》进程关系——控制终端、作业控制和守护进程
- windows名字解析之二 — 使用NetBIOS协议(动态映射)
- strtok()函数与strtok_r()函数
- 毕业后的日子一直在工作和睡觉中重复,看到这篇文章突然醒悟生活不能在这样的重复中渐渐失去色彩~(转帖)
- About Exception
- 处理内存警告的总结
- Win32汇编——过程控制(进程调试和进程隐藏)
- 二、变量
- 【转载】java输入流转为文件 InputStreamToFile 以及 byte[]和InputStream的相互转换
- Command模式的迷惑
- 帖一个PageRank算法的程序
- aaaaaaaaaaaaa
- 转载:升级Fedora7内核
- 【ubuntu】root密码的设置
- C++PRIMER前四章答案,简单整理