[C++]使用FS寄存器判断进程是否被调试
来源:互联网 发布:s7300模拟量输出编程 编辑:程序博客网 时间:2024/05/17 17:39
昨天研究了一下IsDebuggerPresent这个函数的实现代码,发现真的很简单,只有区区4行:
mov eax, dword ptr fs:[018H]mov eax, dword ptr [eax + 030H]movzx eax, dword ptr [eax + 02H]ret
参考了一些大牛的文章,原来第一行是获取TEB的地址,第二行是获取PEB地址,第三行是获得BeingDebugged标记的值,BeingDebugged值为1则进程被调试,值为0则进程没有被调试器附加,于是我写了以下的代码,可以实现和IsDebuggerPresent相同的检测功能:
while (1){DWORD dwFS = 0;dwFS = __readfsdword(0x18);dwFS = *(DWORD *)(dwFS + 0x30);dwFS = *(DWORD *)(dwFS + 0x02) & 0x000000FF;printf("%08X\n", dwFS);__asm{mov eax, dword ptr fs:[018H]mov eax, dword ptr [eax + 030H]movzx eax, dword ptr [eax + 02H]mov dwFS, eax}printf("%08X\n", dwFS);system("Pause");}
使用__readfsdword函数前请#include <intrin.h>
参考了这篇文章,感谢文章作者:http://cxc200026.blog.163.com/blog/static/3426867200841764521515/
- [C++]使用FS寄存器判断进程是否被调试
- FS 寄存器使用
- C/C++检测进程是否被调试
- 获取其他进程的fs寄存器
- fs寄存器
- FS寄存器
- FS寄存器
- FS寄存器
- fs寄存器
- FS寄存器
- FS寄存器
- FS寄存器
- FS寄存器
- FS寄存器
- C语言判断某进程是否存在
- 【C/C++】判断指定进程是否为x64的方法
- 使用ASP.NET判断进程是否存在和结束进程
- 简单解释Windows如何使用FS段寄存器
- android service深入
- xxx is not in the sudoers file解决方法
- 引用 Enterprise Library 5.0 时的一个警告和运行时错误及解决办法
- linux库文件编写入门
- POP3和IMAP的区别
- [C++]使用FS寄存器判断进程是否被调试
- 关于context的lookup方法
- error:include/asm is a directory but symlink was expected
- IE与FF区别
- 堕落的时候看看——清华大学老师的一席话
- oracle application express安装
- div居中方法
- 数学常数E的含义
- adduser添加用户和终端方向键tab键不能用的解决