随着应用程序的复杂度不断上升,要想将好的设计思想稳定的落实到线上,我们需要具备解决问题的能力。需要具备对运行时的错误进行定位且快速的解决它的能力。本篇文章我将分享一下我对.NET应用程序调试方面的学习和使用总结。
该篇文章主要分享了作者在使用.NET进行应用程序调试方面的一些经验和技巧,包括异常处理、调试工具、代码调试、性能优化、内存泄漏检测、远程调试、日志记录、死锁、线程调试、Visual Studio调试、F5负载均衡和服务器端应用程序等方面的内容。作者还介绍了如何使用Visual Studio调试.NET应用程序,并提供了详细的步骤和截图。此外,作者还介绍了一些常用的.NET调试工具,如Fiddler、Wireshark、Process Monitor等,以及如何使用这些工具进行网络调试、进程监控、文件读写等方面的操作。最后,作者还分享了一些调试.NET应用程序的经验和技巧,包括如何识别和解决死锁、内存泄漏、性能问题等。
问题描述: 当使用VS2017-> 调试->附加到进程来调试IIS进程(w3wp.exe)时,报错"无法附加到进程,已附加了一个调试器" 为了解决这个问题花了不少时间,在网上找了不少资料,试了7,8种方法都无效。最后用下面的方法解决了问题,供大家参考。 临时解决方法: 1 安装Debug Diagnostic Tool, 2 启动 "DebugDiag 2 Collection" 3 在process标签页中找到w3wp.exe, 右键选择detach debugger 原因: 我本机之前安装了D
要调试已部署到IIS的ASP.NET应用程序,请在部署应用程序的计算机上安装并运行远程工具,然后从Visual Studio附加到正在运行的应用程序。
A : 一个应用程序池可以包含多个应用程序,一个应用程序池创建一个W3WP.EXE进程.那么我们就不能简单的说一个进程池对应一个W3WP.EXE进程了!其实是多个应用进程池对应一个W3WP.EXE进程的.
通常,我们在Visual Studio里调试ASP.NET网站,都是加个断点,然后按F5,在VS自带的虚拟服务器下调试的。但有时候,VS自带的服务器弱爆了,无法满足一些特定情况的要求,我们必须把网站放在IIS里跑。这下该怎么调试呢?
判定方法: 1 在任务管理器中增加显示 pid 字段。就可以看到占用内存或者 cpu 最高的进程 pid ! 2 在命令提示符下运行 iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到 pid 对应的应用程序池。 3 到 iis 中察看该应用程序池对应的网站就可以了!然后真对站点排除错误!(如果运行后出现 error - no no results 这样的提示,说明你的站点没有开启或还没有被访问过!) 解决方法: 1 尝试删除系统路径\System32\Logfiles\W3SVC1 下当天的错误日志文件,如:ex060904.log,然后重新启动IIS,等待一段时间,看看有没有问题。 注:有时非法重启或者写入日志错误都有可能造成 w3wp.exe 进程锁死。 2 设置应用程序池的CPU监视,不超过25%,每分钟刷新,超过限制时自动关闭。 注:此方法只能用来做为测试,在真正的环境下,这个可能会引起网站时好时坏。不推荐长期使用。 3 检查你的程序代码,或者网页调用,程序没写好或者有死循环,是最容易造成 w3wp.exe 锁死的。 注:方法是先停止IIS,再删除当天的网站日志(系统路径\System32\Logfiles\对应的网站目录下),然后开启IIS,等待CPU高占用的出现,这时在1分钟内打开新建的日志文件,按出现时间,对应检查里面所罗列出现的文件,检查代码是否有问题。 4 检查数据库完整性和 ODBC 的有效性。 注:有些写得不好的 ASP 程序,在访问数据库无法做到容错性,所以有些时候数据库损坏或者 ODBC 传送数据不正常,都有可能造成多次强制查询,从而体现为 w3wp.exe 高 CPU 占用。 5 检查文件的权限。 注:不要奇怪,某些时候真的出现这种事情,一个文件无法写入或者无法读取,都会引起很大的问题。 ---------------------------- 以上才是真正的解决手段和方法,网上流传的资料,不是很让人满意。 就我自己网站来说吧,原因在于 LinPHA 这个相册系统,不知道为什么,这个系统,在收到非标准的搜索 search 代码时,就会出现变量无法赋值的问题。 在调试的时候,我就发现了,Google Bot 在搜索时,能准确的识别出我的语言代码页,搜索所赋值的变量数值合法,所以不出问题。 而遇到 Baidu 蜘蛛时却就有意外发生了,因为 Baidu 本身不认 Unicode 代码,所以他会将你的代码页当成 GBK 来搜索,自然在 Unicode 的搜索页里就出现赋值不是合法数值的问题,然后导致运算出错,最后把w3wp.exe 锁死,等90秒或者更长时间,系统强制回收变量时,才能自动恢复。 这就是前段时间,本站访问不正常的根本原因。
才可使用 /u 和 /p 命令行选项。必须同时使用 /p 和 /u 才能提供用户密码。
在这篇文章中,我想谈一谈通过基于Windows内核的exploit来提升权限。之所以没有使用像HackSys Extreme Vulnerable Windows Driver这样的东西,是因为想做点不同的事情。恰逢Google Project Zero近期公布了漏洞,由于mjurczyk把漏洞进行了记录,所以感觉便于理解。该漏洞还被Microsoft标记为“Wont-Fix”,意思就是32位的Windows 10 Creator版本仍然存在漏洞。 漏洞概览 根据披露出的消息,我们可以了解到这个漏洞影响了3
对于64位的可执行程序已经搞了好长一段时间了,但是却一直没有写点什么东西。前面的两篇文章仅仅是单纯的翻译,个人认为不管是32位还是64位的程序脱壳只要能到达程序的OEP就可以了。现在支持64位加壳的程序貌似也不多,这里以mpress压缩的64位系统下的64位notepad为例进行简单的演示。在《IDA + Bochs 调试器插件进行PE+ 格式DLL脱壳 》一问中提到了可以使用bochs调试器进行DLL文件脱壳。但是却没有办法进行64位EXE文件调试,启动调试之后由于代码完全识别错误,因为会出现异常导致无法调试。要想调试64位可执行程序目前只有通过远程调试的方式,使用Windbg插件同样是无法进行调试的。但是用windbg调试时将会提示如图1所示的信息:
原文来自互联网,由长沙DotNET技术社区编译。如译文侵犯您的署名权或版权,请联系小编,小编将在24小时内删除。限于译者的能力有限,个别语句翻译略显生硬,还请见谅。
本章从IIS的历史介绍简述IIS的特性演进和IIS的架构,目的是使读者对IIS有一个初步的认识。让读者了解IIS是什么,能做什么以及IIS的组成部分。
WIN+R 进入cmd命令 输入 netstat -ano | find "进程端口" 找端口
最近遇到这样一个场景:目标仅支持ASP脚本,而且还存在网站安全狗和360安全卫士,目前存在的两个问题。
网址:https://visualstudio.microsoft.com/zh-hans/downloads/
最近在学习张银奎老师的《软件调试》,获益良多。熟悉Windows调试机制,对我们深入理解操作系统以及游戏保护的原理有着莫大好处。
[2] 启动32位应用程序:默认值False,改为True, 否则安装一些32的组建或32位的php都会出错。
Windows 下记录有两个记录进程信息和线程信息的结构 TEB/PEB 这两个结构很复杂,我们只关注PEB的BeingDebugged的标志 检测很简单,微软提供了一个API,叫IsDebuggerPresent 照着文档用就行 下面是一个简单的测试:
D盾防火墙的“命令执行限制”是通过多种方式来进行限制的,【组件限制】是通过禁止调用wscript.shell、shell.application组件来限制执行命令。
最近写Named Pipe Server Using Completion Routines 发现在delphi调试器中会阻塞在:
终端产品一般部署在客户的环境中,那么奇奇怪怪的问题也就容易出现了。比如Windows产品进程为什么忽然停止了?这个时候稍微有些经验的程序员会做出以下判断:
反调试技术,恶意代码用它识别是否被调试,或者让调试器失效。恶意代码编写者意识到分析人员经常使用调试器来观察恶意代码的操作,因此他们使用反调试技术尽可能地延长恶意代码的分析时间。为了阻止调试器的分析,当恶意代码意识到自己被调试时,它们可能改变正常的执行路径或者修改自身程序让自己崩溃,从而增加调试时间和复杂度。很多种反调试技术可以达到反调试效果。这里介绍当前常用的几种反调试技术,同时也会介绍一些逃避反调试的技巧。 一.探测Windows调试器 恶意代码会使用多种技术探测调试器调试它的痕迹,其中包括使用Windows API、手动检测调试器人工痕迹的内存结构,查询调试器遗留在系统中的痕迹等。调试器探测是恶意代码最常用的反调试技术。 1.使用Windows API 使用Windows API函数检测调试器是否存在是最简单的反调试技术。Windows操作系统中提供了这样一些API,应用程序可以通过调用这些API,来检测自己是否正在被调试。这些API中有些是专门用来检测调试器的存在的,而另外一些API是出于其他目的而设计的,但也可以被改造用来探测调试器的存在。其中很小部分API函数没有在微软官方文档显示。通常,防止恶意代码使用API进行反调试的最简单的办法是在恶意代码运行期间修改恶意代码,使其不能调用探测调试器的API函数,或者修改这些API函数的返回值,确保恶意代码执行合适的路径。与这些方法相比,较复杂的做法是挂钩这些函数,如使用rootkit技术。 1.1IsDebuggerPresent IsDebuggerPresent查询进程环境块(PEB)中的IsDebugged标志。如果进程没有运行在调试器环境中,函数返回0;如果调试附加了进程,函数返回一个非零值。
系统里就3个软件:ERP、SqlServer(ERP需要)、ESET(考虑杀毒防护软件无关变量影响,已经卸载掉了问题依旧)
这篇文章我们主要介绍的是如何利用常用Webshell管理工具中的自定义代码执行功能来上线MSF,附带了中国蚁剑、冰蝎和哥斯拉的内存加载上线,实战渗透中如果遇到以下场景时可尝试文中方法绕过。
现象:测试的时候没有显现出来,当运行到生产环境出现大量访问量的情况下,会出现如下错误:
我们在后渗透中时常会遇到这样的环境,即使成功拿到了目标机器的Admin/System权限后也不能添加用户和管理员组,出现这种情况的原因有很多,如:UAC、WAF、反病毒软件或者是net.exe降权和安全组策略中的软件限制、应用程序控制策略等。
Lupo是一款功能强大的恶意软件IoC提取工具,可以帮助广大研究人员在恶意软件分析自动化的任务场景下实现恶意代码分析和调试。
常:System.BadImageFormatException,未能加载正确的程序集XXX或其某一依赖项
在2007年9月份,我曾经写了三篇详细介绍IIS架构和ASP.NET运行时管道的文章,深入介绍了IIS 5.x与IIS 6.0HTTP请求的监听与分发机制,以及ASP.NET运行时管道对HTTP请求的处理流程: [原创]ASP.NET Process Model之一:IIS 和 ASP.NET ISAPI [原创]ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline - Part I [原创]ASP.NET Process Model之二:ASP.N
以前总想知道IDA是否能够实现内核调试,后来找了一段时间没什么结果就暂时放弃了。今天在国外的一个博客上偶然看到了用IDA实现内核调试的方法。
环境】 VS 2012 IIS7.5 【问题】 MVC项目在创建时和APS.NET不同,不能够选择服务器类型,不能够直接把项目创建到IIS上。 如果在项目中直接更改属性,更换调试服务器
我们先来看看IIS 5.x是如何处理基于ASP.NET资源(比如.aspx,.asmx等)请求的,整个过程基本上可以通过图1体现。
在调试一些病毒程序的时候,可能会碰到一些反调试技术,也就是说,被调试的程序可以检测到自己是否被调试器附加了,如果探知自己正在被调试,肯定是有人试图反汇编啦之类的方法破0解自己。为了了解如何破0解反调试技术,首先我们来看看反调试技术。
在调试一些病毒程序的时候,可能会碰到一些反调试技术,也就是说,被调试的程序可以检测到自己是否被调试器附加了,如果探知自己正在被调试,肯定是有人试图反汇编啦之类的方法破解自己。为了了解如何破解反调试技术,首先我们来看看反调试技术。
前几天有一个朋友在MSN上问我“ASP.NET 从最初的接收到Http request到最终生成Response的整个流程到底是怎样的?”我觉得这个问题涉及到IIS和ASP.NETASP.NET Runtime的处理模型的问题,并不是三言两语就能说清楚的,所以决定写这样一篇介绍IIS和ASP.NET Runtime Process Model的文章,谈谈我对此的一个粗浅的认识,如果有什么不对的地方,希望大家及时指正。 这篇文章大体分为两个部分,第一部分我将谈谈IIS的两个不同的版本—IIS 5.x 和 II
2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。同时,设置同时运行的w3wp进程数目为1.再设置当内存或者cpu占用超过多少,就自动回收内存
IIS7.5中(仅win7,win2008 SP2,win2008 R2支持),应用程序池的运行帐号,除了指定为LocalService,LocalSystem,NetWorkService这三种基本
如果你装了杀毒软件,比如我装的 McAfee VirusScan。 他们默认就阻滞程序发送邮件,甚至包括WEB程序,也会阻滞。而我以前只碰到过这个杀毒软件阻滞Windows程序,今天竟然发现WEB程序也阻滞了。 你用程序发送邮件时候,可能会收到 "无法连接到远程服务器" 、"您的主机中的软件放弃了一个已建立的连接。"的异常。 要解决这个问题,就是让杀毒软件放弃对这个程序的限制,以McAfee VirusScan为例,就是要把你的程序名放到例外名单中 具体的设置过程是: 1. 右击McAfee在系统右下
进程注入是将任意代码写入已经运行的进程中并执行,可以用来逃避检测对目标目标进程中的敏感信息进行读/写/执行访问,还可以更改该进程的行为。
其实这是一个之前的漏洞,只是当时编译了一下POC在渗透中利用,并没有写出来=-=。 这次就把POC和测试过程发送出来。据说以前有个作死的舍友安装win2008,在同一个局域网。嗯,蓝屏的,好喝的。 00x1 漏洞原理 首先介绍下HTTP.SYS:HTTP.SYS是微软从IIS6.0开始,为了在Windows平台上优化IIS服务器性能而引入的一个内核模式驱动程序。它为IIS及其他需要运用HTTP协议的微软服务器功能提供HTTP请求的接收与响应、快速缓存、提高性能、日志等功能服务。 更多关于HTTP.SYS的信
本文来告诉大家如何一步步搭建一个 DUMP 分析平台,核心是用来分析桌面端的应用软件,如 WPF 软件的 DUMP 文件。在开始之前需要说明的是,如果桌面端软件使用纯 WPF 实现,中途没有调用不安全的 C++ 库,那么 DUMP 平台几乎无用,原因是 WPF 是 .NET 应用,而 .NET 是安全的,除非是系统环境问题,否则依靠捕获异常所拿到的信息就完全超过了 DUMP 能获取的信息。因此本文的核心功能是提供给调用了不安全的 C++ 等语言编写的库的桌面端软件 DUMP 分析平台
在2007年9月份,我曾经写了三篇详细介绍IIS架构和ASP.NET运行时管道的文章,深入介绍了IIS 5.x与IIS 6.0HTTP请求的监听与分发机制,以及ASP.NET运行时管道对HTTP请求的处理流程:
前面一篇写过《Windbg调试----Windbg入门》,可能不少新手会问,我在本地用Visual Studio去做调试就行了,为什么还需要那么抽象的Windbg去进行调试呢?
Windows 从 vista 版本引入一种进程保护机制(Process Protection),用于更进一步的控制进程的访问级别,在此之前,用户只需要使用 SeDebugPrivilege 令牌权限即可获取任意进程的所有访问权限;随后 Windows8.1 在此进程保护的基础上,扩展引入了进程保护光机制(Protected Process Light),简称 PPL 机制,其能提供更加细粒度化的进程访问权限控制。
在一个服务器的集群上面,服务器的CPU长时间居高不下,响应的时间也一直很慢,即使扩容了服务器CPU的下降效果也不是很明显。
本文告诉大家如何加载 .NET Core 或 .NET 5 的 sos.dll 文件到 WinDbg 的方法
还记得第一次碰到堆破坏的时候,大概十年前了,当时在学校开发一个Wireshark插件,可是有一个问题我久久未能解决: 二次开发后的Wireshark,启动的时候偶尔会出现程序崩溃,那时候也不会用Windbg, 后来用Visual Studio启动Wireshark, 也是偶尔报错,这个时候可以看到堆栈,只记得当时是在一个很正常的内存分配或者释放的时候出现崩溃。那么总结为两点:
HTTP.SYS是TCP之上的一个网络驱动程序,因此,HTTP.SYS不再属于IIS(这里说的IIS都是IIS6.0+版本,下文如果不特殊指明,默认为IIS6.0+版本),它已经从IIS中独立了出来。 Http.Sys独立有以下几个优点:
领取专属 10元无门槛券
手把手带您无忧上云