首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在尝试绕过winapi时进程会崩溃?

在尝试绕过WinAPI时,进程可能会崩溃的原因有以下几点:

  1. 安全性限制:WinAPI是Windows操作系统提供的一组函数和接口,用于管理系统资源和执行各种操作。这些API函数经过严格的安全性设计和验证,以确保系统的稳定性和安全性。当尝试绕过WinAPI时,可能会绕过这些安全性限制,导致进程崩溃。
  2. 内存访问错误:WinAPI函数在执行过程中会涉及到对内存的读写操作,包括参数传递、数据拷贝等。如果在绕过WinAPI时没有正确处理内存访问,可能会导致内存错误,进而引发进程崩溃。
  3. 依赖关系破坏:许多应用程序依赖于特定的WinAPI函数或接口来实现其功能。当尝试绕过WinAPI时,可能会破坏应用程序与系统之间的依赖关系,导致应用程序无法正常运行,进而崩溃。
  4. 兼容性问题:WinAPI是Windows操作系统的核心组成部分,不同版本的Windows操作系统可能会有不同的API函数和接口。当尝试绕过WinAPI时,可能会遇到兼容性问题,导致进程在特定的操作系统版本上崩溃。

总之,绕过WinAPI可能会破坏系统的安全性、稳定性和兼容性,导致进程崩溃。因此,在开发过程中,建议遵循操作系统提供的API函数和接口,以确保应用程序的正常运行和稳定性。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么 WPF 软件 win7 启动时会尝试调起 wisptis 进程

我看到一个问题是 win7 系统上,如果开机启动的软件是 WPF 软件,而这个 WPF 软件系统的 wisptis 进程启动之前就启动了,那么 WPF 将会调起 wisptis 进程。...而在 wisptis 进程已经启动完成,此时启动 WPF 进程不会再打开新的 wisptis 进程。...但是被 WPF 启动的 wisptis 进程存在这样的问题,触摸屏上 win7 的双指打开右键菜单等功能不可用 WPF 启动,将会在 Window 类的 Visibility 修改时调用到 WispLogic.RegisterHwndForInput...方法进行初始化触摸,这部分详细请看 WPF 触摸到事件 而在初始化触摸,需要用到 PenIMC 的逻辑 win7 系统上,触摸需要通过 wisptis 进程的辅助才能让 WPF 进程能够完成实时触摸...wisptis 进程的启动 而为什么 WPF 启动的 wisptis 进程有很多坑?

86420

Shellcode 技术

大多数情况下,我们将使用直接系统调用来绕过可疑 WINAPI 调用的两个 EDR 挂钩(请参阅第 7 节),但对于不太可疑的 API 调用,此方法工作得很好。...ETW 允许对进程的功能和 WINAPI 调用进行广泛的检测和跟踪。...当我们加载器进程空间的线程中运行 shellcode ,更容易混入进程中良性线程执行和内存操作的噪音。然而,不利的一面是任何崩溃的开发后模块也导致加载程序的进程崩溃,从而导致植入程序崩溃。...10.信标内存加密 内存检测的另一个规避方法是休眠加密植入程序的可执行内存区域。...BokuLoader 实现了几种规避技术: 限制调用GetProcAddress()(通常 EDR 挂钩 WINAPI 调用来解析函数地址,就像我们第 4 节中所做的那样) AMSI & ETW 绕过

1.5K20

如何使用LightsOut生成经过混淆处理的DLL

该工具专为红队研究人员设计,生成的DLL可以研究人员尝试绕过反病毒产品禁用AMSI和ETW,从而更好地测试目标系统的安全性。...该工具可以随机化DLL中所有的WinAPI函数使用、XOR编码字符串和基础的沙箱检测,并使用了Mingw-w64将经过混淆处理的C代码编译为DLL文件,然后再加载到任何有AMSI或ETW的进程中,例如PowerShell...功能介绍 当前版本的LightsOut提供了下列功能: 对字符串进行XOR编码; WinAPI函数名称随机化; 支持多种沙箱环境检测选项; 提供硬件断点绕过选项; 工具要求 当前版本的LightsOut...仅支持Linux操作系统上运行,且需要安装并配置好下列组件: Python 3 Mingw-w64 工具下载 由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好Python...存储输出DLL的文件路径 Remote options: -p , --pid 要修补的远程进程

9410

分析两种Dump(崩溃日志)文件生成的方法及比较

做windows产品开发的,永远绕不开一个问题——程序崩溃。如果希望不断提升产品质量,就得不停的收集和分析崩溃日志。但是我们会发现一个问题,我们经常采用的方案无法拦截崩溃。...当软件即将崩溃,我们设置的回调函数理论上会被调用。然而,实际并非如此。我们看一个报错的例子。 ?         如果你也见过这个错误,我想你的截取dump方案应该是被绕过了。...现在,我们开始分析,为什么SetUnhandledExceptionFilter无法截获这些CRT错误。...从上面可以分析出,当出现异常,流程进入UnhandledExceptionFilter,但是我们设置的回调函数没被调用。...需要注意:当运行到75BF771D,我们要将执行路径指向75BF7723。

1.4K20

“兵不厌诈”?漏洞还是那些漏洞,攻击技术却层出不穷

从一开始,犯罪分子就尝试绕过DEP,并且他们已经使用不同的技术成功地绕过了一段时间,其中一种技术就是返回导向编程 (ROP)。 网络犯罪分子使用ROP链(来自现有合法代码部分的一小段)来构建工作代码。...如果WinAPI函数没有用call指令调用,则堆栈上的返回地址将是错误的。 当系统找不到呼叫指令,更为有效的网络保护解决方案将终止ROP攻击。...由于一个镂空进程挂起状态下创建的,它的内存被取消映射并被恶意代码替换。恶意代码的执行在合法进程下被掩盖,通常会绕过普通的安全产品的防御和检测分析。...当父进程创建子进程,子进程继承SID。这需要在应用程序加载期间进行检查,因为用户可从中发现恶意活动。流程执行期,SID不能被更改。...对于敏感功能,漏洞利用防护软件也检查SID执行过程中是否保持不变。

49230

Understanding-and-bypassing-AMSI

,它有一些基本的实现缺陷,使得我们可以绕过检测 从下图中您可以看到AMSI阻止了字符串"Invoke-Mimikatz",尽管该字符串不在恶意上下文中,但它仍然被检测到,那么这究竟是如何运作的呢?...微软通过将amsi.dll加载到创建的每个进程中,这些进程导出一些功能供防病毒和EDR使用,以及Windows Defender 查看amsi.dll中的导出结果发现一个看起来很有趣的函数AmsiScanBuffer...amsiscanner/blob/master/amsiscanner.cpp 我们现在有了一个测试AmsiScanBuffer的workstations,这意味着我们可以通过实现类似于挂接MessageBox使用的东西来尝试本地挂接...,让我们尝试添加以下代码 #include #include #include #include #include...AMSI不会标记真正的字符串 如果我们使用调试器,我们实际上可以反汇编AmsiScanBuffer的前几条指令查看detours库在做什么,我们注入之前我们得到以下信息 然后注入之后,我们现在有一个跳转指令

41610

COM 进程注入技术

由于 Rust 里面接口、类全部都以 struct 的形式表达,并且和 C++ 中的 struct 内存布局是有区别的,所以定义接口虚表,全部需要加上 #[repr(C)],代表该结构体内存布局和...C 里面有 IUnknown,Rust 里也不需要我们从 IUnknown 开始实现,实际上 windows-rs 和 winapi 这两个 crate 中都有实现,但是实现方式上有所不同。...已经解决的问题 原项目运行后可能遇到一些问题,重写简单处理了一下,问题如下: A、获取目标进程 IPID 列表偏移时,判断条件不够导致后续步骤访问到错误地址导致崩溃 find_ipid_table...所以我获取接口指针,加了些过滤,优先使用 TID 有效的 IPID: let x: Vec = entries.iter().filter(|x| x.ipid.tid > 0x0 && x.ipid.tid...,不确定为什么自动释放掉,当用完之后就会一直注入失败了 对于 TID 为 0x0000 或 0xFFFF 总是注入失败,怎么解决 通用于 x86 和 x86_64 的 COM 进程

1.8K30

监视的最低点(4)

根据他们的网站,任何因任何原因无法使用相应软件的学生,无论是不兼容还是软件问题,都可以“严格监督”下参加考试,这使得懒惰绕过超级容易:从您的机器中删除其依赖项并且它将无法运行 :) 部署依赖于ClickOnce...但是告诉你这将是一个非常无聊的结论,所以我们决定编写一个完整的原生绕过,本质上是一个 x86 用户模式 rootkit,来隐藏你考试中使用的任何厚颜无耻的网站。你可能问,我们为什么要这样做?...有人需要为这个软件的绝对灾难负责,教育部需要透明地说明他们在做什么以及为什么需要在个人机器上安装这个软件才能参加。...正如我们视频游戏中为防止反作弊软件截屏所做的那样,我们可以执行截屏之前挂钩 BitBlt 并隐藏任何不需要的信息。...NtQuerySystemInformation系统调用在内部缓存进程数据。对这个系统调用隐藏进程需要一些工作,因为许多信息类型都包含进程信息。

4.5K260

红队技巧:绕过ESET_NOD32抓取密码

聊一聊绕过ESET_NOD32抓取密码的方法,这里的ESET_NOD32指的是ESET_NOD32 File Security For Microsoft windows server,测试版本如下...而权限提升可以使用RtlAdjustPrivilege来进行,这个函数封装在NtDll.dll中,MSDN没有专门的文档介绍它,就是说你MSDN上查不到关于它的任何信息,但是可以微软官方的WRK(Windows..., BOOLEAN Enable, BOOLEAN CurrentThread, PBOOLEAN Enabled ) 剩下的将刚才所说的函数进行实现,demo如下: typedef HRESULT(WINAPI...* _MiniDumpW)( DWORD arg1, DWORD arg2, PWCHAR cmdline); typedef NTSTATUS(WINAPI* _RtlAdjustPrivilege...)( ULONG Privilege, BOOL Enable, BOOL CurrentThread, PULONG Enabled); 最后成功的绕过绕过ESET_NOD32 dump了进程

89240

bypass Bitdefender

前言 渗透,可能遇到各种各样的的杀软,但每个杀软特性不同,绕过前,往往都需要分析,本文就Bitdefender进行分析 最近在研究如何免杀,写了一个马,火绒 360 成功绕过(图有点少,当时没存...这表明Bitdenfender认为我的exe没有问题,他这里报毒指的是explorer中有cs的马,这属于绕过内存扫描的内容,hook层面已经绕过完成(了吗?)...我一开始以为是动态扫描出我的马,但我发现Bitdefender的反应很快,我想到卡巴斯基,马可以上线大概5秒,毕竟扫描也需要时间,但为什么这里一瞬间就挂了,我猜想是Bitdefender监控到了explorer...尝试unhook,硬编码为4C 8B D1 B8 26 代码: LPVOID ZwOpenProcess_Address = GetProcAddress(hNtdll, "ZwOpenProcess"...我又重新使用http的beacon的payload测试一下,直接给我杀了 总结一下这几天绕过杀软的心得: 国产的杀软先不说了,卡巴斯基我分析的时候发现他似乎并没有hook API,包括静态检测这些方面甚至我不用混淆都能过

24710

使用 Cobalt Strike 的 Beacon 对象文件自定义 DLL 注入

一个 UAC 绕过特权提升反射 DLL 实现可能达到 100KB+。但是如果我们使用 BOF 那么为<3KB。DNS通道种非常适合,BOF 易于开发。...BOF Beacon 内部执行。如果 BOF 崩溃,将失去这个shell。...从这里开始,远程进程中分配了一页内存;将完整的 dll 路径写入新分配的缓冲区。最后,我们远程进程中创建一个线程,它以 dll 路径作为参数调用 LoadLibrary。...最后,我们绕过可能放置 LoadLibrary 或 LdrLoadDll 上的任何钩子,它们可能用于检测阻止我们的注入。...BOF文件 信标对象文件只是标准的 C 文件,允许执行 WinAPI 函数以及“beacon.h”中定义的附加信标函数。

2K20

令牌模拟

开始之前并作为提醒,Microsoft Windows 操作系统中的令牌是一种安全元素,当进程和线程想要对安全系统对象(文件、注册表、服务......)执行操作,它为它们提供标识。...能够窃取令牌的通用公式通过: 访问远程进程Winapi Openprocess调用)。 访问您的令牌。 我们正在运行的进程的当前线程上设置该令牌,即模拟。...当我们面对 PPL(受保护的进程)类型的进程,这将非常有用。 至于启用SeDebugPrivilege,我们不需要,我们会看到原因。...开放进程() 当我们调用此函数,操作系统根据与“进程”对象关联的 DACL 集验证请求的访问类型,以允许或不允许访问其处理程序。...超过一半的进程中没有必要为此使用SeDebugPrivilege,因此我们的操作更加不被注意。

1.2K10

bypass Bitdefender

渗透,可能遇到各种各样的的杀软,但每个杀软特性不同,绕过前,往往都需要分析,本文就Bitdefender进行分析 最近在研究如何免杀,写了一个马,火绒 360 成功绕过(图有点少,当时没存,火绒测试是用的同学的物理机...这表明Bitdenfender认为我的exe没有问题,他这里报毒指的是explorer中有cs的马,这属于绕过内存扫描的内容,hook层面已经绕过完成(了吗?)...[image.png] 我一开始以为是动态扫描出我的马,但我发现Bitdefender的反应很快,我想到卡巴斯基,马可以上线大概5秒,毕竟扫描也需要时间,但为什么这里一瞬间就挂了,我猜想是Bitdefender...[image.png] 尝试unhook,硬编码为4C 8B D1 B8 26 代码: LPVOID ZwOpenProcess_Address = GetProcAddress(hNtdll, "ZwOpenProcess...[image.png] [image.png] 我又重新使用http的beacon的payload测试一下,直接给我杀了 [image.png] 总结一下这几天绕过杀软的心得: 国产的杀软先不说了,卡巴斯基我分析的时候发现他似乎并没有

60740

Windows 反消息钩子(1)

local类型的钩子函数只能拦截本进程的消息。能够拦截本进程以外的消息的钩子,都是remote类型。remote类型的钩子必须放在DLL里面。...") g_hhookKey为键盘钩子的句柄,为确保此数值在所有实例中均保持不变,将其存放于此模块所有实例的共享数据区,若在exe程序中按此格式添加一int 变量 appNum,程序启动...不要以为自己没有程序中安装钩子,程序中就一定没有安装钩子,MFC4版本中,MFC自己装一个local类型的钩子,MFC7版本中好像没了。好了,下面介绍其实现。...中卸载remote类型消息钩子时,删除其句柄 2、.cpp文件中添加代码 CArray array;//用于记录本进程安装的钩子的句柄...同理也可以绕过API钩子!有同样兴趣的人记得发消息给我哦! 首先声明一下:我拦截的是消息钩子,如果安装钩子时考虑到了反卸载则不在讨论之内。

47120

利用特殊协议加载本地文件, 绕过 HTML5 沙箱, 打开弹窗诸事

[ PoC – 微软 Edge 浏览器上绕过 HTML5 沙箱 ] 很高兴看到 microsoft-edge 协议允许我们绕过不同的限制。我更深入研究,但你可以一试!...我继续注册表中按下 F3 键,发现了 read: 协议,它引起了我的注意力,因为当阅读它的 (javascript)源码,它可能有潜在的 UXSS 漏洞,但是尝试的过程中 Edge 一次次地崩溃了。...我特定的测试页面保存了我键入的内容,如果浏览器崩溃,它很可能被恢复。但即使一切都保存下来了,当我编写一些可以改变我测试页面的 URL 的代码,我就在一个新窗口中打开它。这只是一种习惯罢了。...崩溃之前断下程序的话,这将会变得有意思多了,所以为什么不在 _LoadRMHTML 上面几行设置断点呢?我们检查了 stack-trace,现在我们来看看代码。...有了这点知识加上知道它期望是一个文件,我们可以尝试一个硬盘上的完整的路径。因为 Edge AppContainer 内部运行,我们将尝试一个可访问的文件。

2.3K80

消息钩子的反拦截

g_hhookKey为键盘钩子的句柄,为确保此数值在所有实例中均保持不变,将其存放于此模块所有实例的共享数据区,若在exe程序中按此格式添加一int 变量 appNum,程序启动...不要以为自己没有程序中安装钩子,程序中就一定没有安装钩子,MFC4版本中,MFC自己装一个local类型的钩子,MFC7版本中好像没了。好了,下面介绍其实现。...同理也可以绕过API钩子!有同样兴趣的人记得发消息给我哦! 首先声明一下:我拦截的是消息钩子,如果安装钩子时考虑到了反卸载则不在讨论之内。...从上面的讨论我们可以得出一个最简单的防侵入方案:加载hook dll之前hook相应api使得加载失败,不过有一个缺陷:系统并不会因为一次的失败而放弃,每次有消息产生欲call hook系统都会试图在你的进程加载...::GetProcAddress(::GetModuleHandle(“kernel32.dll”), “SetWindowsHookA”); 就可以绕过

49730

c语言createthread函数,C++中CreateThread函数创建线程的用法和实例

因为没有对子线程为CRT库分配堆,导致低内存错误而崩溃。 CreateThread 不会判断lpStartAddr是数据还是代码,甚至不会判断是否有足够的访问权限。...创建类成员函数的对象,this指针是调用CreateThread所处的类对象的指针。类对象外调用,其this指针将是未知的。...默认的线程函数必须具有如下原型 DWORD WINAPI ThreadProc(LPVOID LpParameter); 调用API:CreateThread可以创建一个新进程HANDLE WINAPI...,不是线程访问字符串(Token)的属性 dwStackSize用于指定线程初始的栈大小,通常传入0即可,此时系统会使用一个合适的大小 lpStartAddress就是新进程入口函数的地址 lpParameter...windows调度程序时间是按分时多任务方式来轮流调度线程的,而且这个时间片是20ms, 但是从宏观的角度来看,比如1秒的时间粒度,这些线程可以被认为是“同时”运行的 5、这些信息说明,无论线程调度如何执行,分析始终认为这些线程实际上并行执行的

1.7K20

Win32线程安全问题.同步函数

一丶简介什么是线程安全   通过上面几讲.我们知道了线程怎么创建.线程切换的原理(CONTEXT结构) 每个线程切换的时候都有自己的堆栈. 但是这样会有安全问题. 为什么? ...但是线程可能会使用全局变量.这样很有可能产生安全问题.为什么是很有可能. 1.有全局变量的情况下.有可能会有安全问题. 2.对全局变量进行写操作.则一定有安全问题. ...为什么是不安全的. 试想一下. 如果这个全局变量更改.另一个线程也更改了.最后则会出现两个线程同时更改这个全局变量. 问题就会出现在这....为什么产生这个问题.原因是.在线程中我们有个地方 while(全局变量 > 0) 则会执行下边代码. 但是很有可能执行完这一句. 线程发生了切换. 去执行另一个线程去了. 最终会产生这样的结果....同步: 同步的意思就是让线程执行顺序是有序的.因为互斥可以保证A访问的时候B访问不了.但有可能A访问多次.线程无序.此时同步的意思就是 我就想让A执行完执行B. 这个就是同步.

84440
领券