反沙箱相关学习记录【SetErrorMode】

文章探讨了反沙箱技术的一种方法,即通过SetErrorModeWindowsAPI来判断系统是否在沙箱环境中运行。SetErrorMode的特定参数SEM_NOALIGNMENTFAULTEXCEPT在沙箱中常被设置,通过检查其返回值可识别沙箱环境。此外,文章还提到了其他反沙箱手段的相关链接。
摘要由CSDN通过智能技术生成

这个反沙箱个人感觉和反调试类似,一个是查看调试与非调试状态的区别,一个是查看真实主机与虚拟机或沙箱的区别。之前也遇到很多但是没有做总结,所以将常见的总结到这个文章中。

SetErrorMode

该函数的相关使用说明:https://learn.microsoft.com/zh-cn/windows/win32/api/errhandlingapi/nf-errhandlingapi-seterrormode

通过这个函数进行判断是否在沙箱中
原理:这个函数有一个参数SEM_NOALIGNMENTFAULTEXCEPT会导致下次使用时不清空这个值,而沙箱用了这个函数并且还用了这个参数,所以通过调用这个函数判断其返回值是否是上次设置的值即可

其它反沙箱手段相关链接

http://www.hackdig.com/12/hack-871474.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SetErrorMode 函数本身并不能直接用来沙箱,但是可以通过它来检测当前程序是否运行在沙箱环境中。 在沙箱环境中,一些操作可能被限制或者被重定向到虚拟的文件系统或注册表中,因此可以通过尝试访问某些系统资源来判断程序是否运行在沙箱环境中。比如,在程序的入口处加入以下代码: ``` #include <Windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { // 设置错误模式为 SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX); // 检查是否运行在沙箱环境中 HANDLE hFile = CreateFileW(L"C:\\Windows\\system32\\kernel32.dll", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) { // 运行在沙箱环境中 // 可以在这里加入沙箱代码 } else { // 不运行在沙箱环境中 CloseHandle(hFile); } // 程序其余代码 return 0; } ``` 这里尝试访问系统目录下的 kernel32.dll 文件,如果当前程序运行在沙箱环境中,这个文件可能被重定向到虚拟文件系统中,因此无法打开,CreateFileW 函数将返回 INVALID_HANDLE_VALUE。如果程序不运行在沙箱环境中,这个文件可以正常打开,并且返回的句柄不是 INVALID_HANDLE_VALUE。在程序的入口处对是否运行在沙箱环境中进行检测后,您可以加入相应的沙箱代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值