使用 GetStartupInfo 检查自己是否被"调试"
2014-12-08 22:56
375 查看
在使用 CreateProcess 创建进程时,需要传递
STARTUPINFO 的结构的指针,
而常常我们并不会一个一个设置其结构的值,
连把其他不用的值清0都会忽略,
而 ollydbg 也这样做了,
我们可以使用 GetStartupInfo 检查启动信息,
如果很多值为"不可理解"的,那么就说明自己不是由 explorer 来创建的.(explorer.exe 使用 shell32 中 ShellExecute 的来运行程序, ShellExecute 会清不用的值)
还有一点 ollydbg 会向 STARTUPINFO 中的 dwFlags 设置 STARTF_FORCEOFFFEEDBACK,而 explorer 不会
////////////////////////
//ex
#include <windows.h>
#include <stdio.h>
#pragma comment(linker, "/subsystem:windows /entry:main")
int main()
{
STARTUPINFO si;
GetStartupInfo(&si);
if (
(si.dwX != 0) ||
(si.dwY != 0) ||
(si.dwXCountChars != 0) ||
(si.dwYCountChars != 0) ||
(si.dwFillAttribute != 0) ||
(si.dwXSize != 0) ||
(si.dwYSize != 0) ||
(si.dwFlags & STARTF_FORCEOFFFEEDBACK)
)
{
MessageBox(NULL, "found debugger!", NULL, 0);
}
else
{
MessageBox(NULL, "no found debugger!", NULL, 0);
}
return 0;
}
STARTUPINFO 的结构的指针,
而常常我们并不会一个一个设置其结构的值,
连把其他不用的值清0都会忽略,
而 ollydbg 也这样做了,
我们可以使用 GetStartupInfo 检查启动信息,
如果很多值为"不可理解"的,那么就说明自己不是由 explorer 来创建的.(explorer.exe 使用 shell32 中 ShellExecute 的来运行程序, ShellExecute 会清不用的值)
还有一点 ollydbg 会向 STARTUPINFO 中的 dwFlags 设置 STARTF_FORCEOFFFEEDBACK,而 explorer 不会
////////////////////////
//ex
#include <windows.h>
#include <stdio.h>
#pragma comment(linker, "/subsystem:windows /entry:main")
int main()
{
STARTUPINFO si;
GetStartupInfo(&si);
if (
(si.dwX != 0) ||
(si.dwY != 0) ||
(si.dwXCountChars != 0) ||
(si.dwYCountChars != 0) ||
(si.dwFillAttribute != 0) ||
(si.dwXSize != 0) ||
(si.dwYSize != 0) ||
(si.dwFlags & STARTF_FORCEOFFFEEDBACK)
)
{
MessageBox(NULL, "found debugger!", NULL, 0);
}
else
{
MessageBox(NULL, "no found debugger!", NULL, 0);
}
return 0;
}
相关文章推荐
- 使用 GetStartupInfo 检查自己是否被"调试"(转自看雪论坛)
- 使用 GetStartupInfo 检查自己是否被"调试"
- 看使用 GetStartupInfo 检查自己是否被"调试"
- 使用 GetStartupInfo 检查自己是否被"调试"
- 使用 GetStartupInfo 检查自己是否被"调试"
- 使用 GetStartupInfo 检查自己是否被"调试"
- 使用 GetStartupInfo 检查自己是否被"调试"
- GetStartupInfo检测程序处于被调试状态
- GetStartupInfo检测程序处于被调试状态
- Android中的"Unable to start activity ComponentInfo"错误
- "无法找到“XXX.exe”的调试信息,或者调试信息不匹配。未使用调试信息生成二进制文件"的解决方法
- GetStartupInfo 函数
- 基于STARTUPINFO的反调试与反反调试
- GetStartupInfo
- 解决登录WDCP面板出现"无法连接mysql,请检查mysql是否已启动"问题
- 解决问题:vs 使用命令行参数调试时出现"当前项目设置指定将使用特定的安全权限对该项目进行调试.在此模式下,命令行参数将不会传递给可执行文件."
- 动软代码生成器 第一次使用出现附加数据库错误是否添加"写入"权限
- silverlight无法调试"unable to start program 数据无效" 解决方案
- Android中的"Unable to start activity ComponentInfo"或者"Unable to instantiate activity ComponentInfo"的错误
- 使用StartupInfo的参数设置窗口的启动位置的大小