为什么我的应用程序会爆? 在某些情况下,仅通过跟踪进程就无法确定导致异常行为的原因。如果进程崩溃或可能需要更多信息(如访问整个流程堆)的情况,则进程转储可能更适合分析。...传统上,您依靠操作系统在应用程序崩溃(例如Windows 错误报告)时捕获转储,或者使用 procdump 等工具在满足某些触发条件时捕获转储。...到目前为止,在 Linux 上使用 .NET 捕获转储的挑战是使用 gcore 或调试器捕获转储,导致转储非常大,因为现有工具不知道在 .NET Core 进程中要修剪哪些虚拟内存页。...dotnet-dump 3.0.0-preview5中,我们引入了一个新的工具,允许您捕获和分析 Windows 和 Linux 上的进程转储。...analyze 在下面的示例中,我尝试通过遍历堆来确定已崩溃转储ASP.NET Core托管环境。
转储:性能分析工具从内存中获得当前状态数据并存储到文件用于静态的性能分析。Java 程序是通过在启动 Java 程序时添加适当的条件参数来触发转储操作的。...它包括以下三种: 系统转储:JVM 生成的本地系统的转储,又称作核心转储。一般的,系统转储数据量大,需要平台相关的工具去分析,如 Windows 上的 windbg 和 Linux 上的 gdb。...Java 转储:JVM 内部生成的格式化后的数据,包括线程信息,类的加载信息以及堆的统计数据。通常也用于检测死锁。 堆转储:JVM 将所有对象的堆内容存储到文件。...堆转储的生成与分析 VisualVM 能够生成堆转储,统计某一特定时刻 JVM 中的对象信息,帮助我们分析对象的引用关系、是否有内存泄漏情况的发生等。 图 17. 监视标签及堆转储功能 ?...从类视图可以获得各个类的实例数和占用堆大小数,分析出内存空间的使用情况,找出内存的瓶颈,避免内存的过度使用。 图 19. 堆转储的类视图 ?
ProcDump ProcDump是用于保存转储文件的命令行工具。它可以立即或在触发器上生成转储。例如,在崩溃或挂起时创建转储。这是我推荐的用于捕获转储的工具。...以下是它的一些功能: 立即创建转储 创建具有特定间隔的多个转储(例如3个转储,相隔5秒) 一旦超过CPU阈值,就创建转储 如果进程挂起,则创建转储 崩溃时创建转储 若要查找有关ProcDump和Dump...以下是一些可以使用性能计数器衡量的事情的示例: CPU使用率 内存使用率 进程中引发的异常数 I/O字节的读写 对你的asp.net应用程序的请求数 在asp.net应用程序中请求响应时间 你可能会监视成千上万种不同的计数器...性能监视器是使你可以直观地看到这些计数器的工具(尽管也有其他工具)。它以在Windows设备预安装上了。...但是我总是发现自己将转储文件复制到我的开发机器上,并使用内存分析器或者Visual Studio打开它们。这样更加有效。因此,我认为WinDbg不再是.NET开发所必需的调试工具。
所以在备份前是否进行文件压缩需慎重考虑。 第四,对正在使用的文件系统做备份是很难的。如果在转储过程中要添加,删除和修改文件和目录,则转储结果可能不一致。...因此,在逻辑转储中,转储磁盘上有一系列经过仔细识别的目录和文件,这使得根据请求轻松还原特定文件或目录。 既然逻辑转储是最常用的方式,那么下面就让我们研究一下逻辑转储的通用算法。...第一个表中的计数器跟踪该块在文件中出现的次数,第二张表中的计数器记录每个块在空闲列表、空闲位图中出现的频率。...每当读取一个块时,该块在第一个表中的计数器 + 1,应用程序会检查空闲块或者位图来找到没有使用的块。空闲列表中块的每次出现都会导致其在第二表中的计数器增加。...内存:我不管!
创建 GC 转储时需要在目标进程中触发 GC、开启特殊事件并从事件流中重新生成对象根图。 此过程允许在进程运行时以最小的开销收集 GC 转储。...这些转储对于以下几种情况非常有用: 比较多个时间点堆上的对象数。 分析对象的根(回答诸如“还有哪些引用此类型的内容?”等问题)。 收集有关堆上的对象计数的常规统计信息。...查看从 dotnet-gcdump 捕获的 GC 转储 在 Windows 上,可以在 PerfView 中查看 .gcdump 文件,以便进行分析,也可在 Visual Studio 中查看该文件。...目前,无法在非 Windows 平台上打开 .gcdump。 可以收集多个 .gcdump,并在 Visual Studio 中同时打开它们以获取比较体验。...dotnet-gcdump collect 从当前正在运行的进程中收集 GC 转储。
处理LSASS内存转储文件 如果您在Windows机器上进行主要测试,那么这是一种很好的方法,否则您必须将转储文件复制到Windows机器上才能运行Mimikatz,确保在您使用Mimikatz的计算机上为...lsass.DMP 攻击手法 上面我们已经介绍了处理LSASS内存转储文件的方法,下面是一些从Windows机器中创建这些转储文件的方法 任务管理器(GUI) 如果您对设备具有远程桌面(RDP)或其他..."详细信息"选项卡,找到lsass.exe,右键单击,然后选择"创建转储文件": 这将在用户的AppData\Local\Temp目录中创建转储文件: 现在您需要一种将转储文件获取到本地计算机的方法...: CRACKMAPEXEC Crackmapexec是远程执行LSASS转储的优秀工具,该方法是我在内部渗透试验中倾倒LSASS的首选方法,它的扩展性非常好,您可以简单地指向整个子网或IP地址列表,...只需NTLM哈希或纯文本凭据就可以获得非常清晰的输出,与"-lsa"方法不同的是此方法的缺点是它不会自动将结果存储在Crackmapexec logs目录中 └─$ crackmapexec smb 192.168.0.76
所以在备份前是否进行文件压缩需慎重考虑。 第四,对正在使用的文件系统做备份是很难的。如果在转储过程中要添加,删除和修改文件和目录,则转储结果可能不一致。...所以,人们修改了转储算法,记下文件系统的瞬时快照,即复制关键的数据结构,然后需要把将来对文件和目录所做的修改复制到块中,而不是到处更新他们。 磁盘转储到备份磁盘上有两种方案:物理转储和逻辑转储。...因此,在逻辑转储中,转储磁盘上有一系列经过仔细识别的目录和文件,这使得根据请求轻松还原特定文件或目录。 既然逻辑转储是最常用的方式,那么下面就让我们研究一下逻辑转储的通用算法。...为了进行恢复,每个被转储的目录都用目录的属性(所有者、时间)作为前缀。 ? 最后,在第四阶段,上图中被标记的文件也被转储,同样,由其文件属性作为前缀。至此,转储结束。...第一个表中的计数器跟踪该块在文件中出现的次数,第二张表中的计数器记录每个块在空闲列表、空闲位图中出现的频率。
这就是我记录这一章的目的,提升权限之后获取凭证,利用已获取的凭证扩大战果才是正确的姿势,学习的主要资料是参考链接中的分享,建议阅读参考的原文,再次说明,我的只是笔记,记录我的学习过程中的所思所想。...Dump lsass 进程 在powershell中使用Out-Minidump Dump lsass 进程 直接使用任务管理器转储文件 comsvcs.dll转储文件 任务管理器转储文件只需要当前用户是管理员组内账户即可...具体存储在系统哪里,保存在注册表中,结构未域凭据+域授权信息,后面就直接用 “凭据” 来代表 “凭据信息” + “授权信息”。...不知道什么原因,我这里字符显示有点奇怪 网络与交互式登录 请理解这一小节,理解在Windows各种登录下何时丢弃凭据,换句话说,怎样登录才会保存凭据在内存中。...PsExec From An Elevated Prompt #其他机器上psexec至当前主机,使用的是当前用户的默认票据, #登录类型为3 网络登录 mimikatz 转储的凭据中没有该凭据。
drwtsn32.exe故障转储文件默认权限设置不当,可能导致敏感信息泄漏。 影响系统: 当前全部Windows版本号 具体: drwtsn32.exe(Dr....[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug] 在Windows 2000中drwtsn32.exe默认会将故障转储文件...在Windows NT中被存储在“\WINNT\”中,everyone组至少有读取权限。...[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug] 在Windows 2000中drwtsn32.exe默认会将故障转储文件...在Windows NT中被存储在“\WINNT\”中,everyone组至少有读取权限。
这里一共有两种转储方式 miniDump: 应用程序可以生成用户模式的小型转储文件,其中包含故障转储文件中包含的信息的有用子集。应用程序可以非常快速有效地创建小型转储文件。...尽管必须使用“ .dmp”扩展名,但可以在参数中控制其余的转储文件名: ProcDump是一个命令行实用程序,其主要目的是监视应用程序中的CPU尖峰并在尖峰期间生成崩溃转储,管理员或开发人员可以使用它来确定尖峰原因...ProcDump还包括挂起的窗口监视(使用Windows和Task Manager使用的相同的窗口挂起定义),未处理的异常监视,并且可以基于系统性能计数器的值生成转储。...所以说,直接在cmd下执行rundll32的命令尝试dump指定进程内存文件时,由于无法开启SeDebugPrivilege权限,所以会失败 在cmd中我找不到打开SeDebugPrivilege的方法...所有以前的内存转储类别中列出的每个工具都使用这两种方法之一(不包括完整内存转储方法)。
那么,如何获取核心转储文件呢?不同的操作系统有着不同的设置和操作方式。在 Linux 系统中,通常可以通过调整系统资源限制(如使用 ulimit 命令)来允许程序生成核心转储文件。...而在 Windows 系统中,也有相应的调试工具和设置来捕获类似的崩溃信息,如使用 Windows 调试工具(WinDbg)配合相关的配置来生成崩溃转储文件(.dmp 文件)。...通过加载核心转储文件到 GDB 中,我们可以查看程序崩溃时的函数调用栈信息。调用栈就像是程序执行的路线图,它清晰地展示了在崩溃瞬间各个函数的调用顺序。...我们可以通过调试器查看特定变量在内存中的值,检查是否存在数据异常。比如,如果一个变量应该存储的是合法的数值,但在核心转储中显示为不合理的数值,那么就需要进一步排查是哪里对该变量的赋值出现了错误。...在分析核心转储文件时,还需要结合程序的源代码进行综合判断。虽然核心转储文件提供了大量的运行时信息,但只有将这些信息与源代码中的逻辑相结合,才能真正理解程序崩溃的原因。
转储:性能分析工具从内存中获得当前状态数据并存储到文件用于静态的性能分析。Java 程序是通过在启动 Java 程序时添加适当的条件参数来触发转储操作的。...它包括以下三种: 系统转储:JVM 生成的本地系统的转储,又称作核心转储。...一般的,系统转储数据量大,需要平台相关的工具去分析,如 Windows 上的windbg和 Linux 上的gdb等。...Java 转储:JVM 内部生成的格式化后的数据,包括线程信息,类的加载信息以及堆的统计数据。通常也用于检测死锁。 堆转储:JVM 将所有对象的堆内容存储到文件。...同样,在 Sampler 页面,我们也可以找到手动触发 GC、导出堆转储以及线程转储的按钮。
在大多数的运维场景中,用户利用Linux的“crontab”,或Windows的任务调度程序自动运行“mysqldump”。...“mysqldump”可以将表的内容转储为文件,具有如下特点: 备份全部的数据库、指定的数据库,或指定的表。 允许在本地或远程进行备份。 独立于存储引擎。 生成文本格式的转储文件。...: “--master-data”:单独使用该选项,在备份期间通过“FLUSH TABLES WITH READ LOCK”锁定全部的表,如果该值设置为“2”,则能够在输出文件中包括“CHANGE MASER...“--lock-all-tables”:在转储期间,通过锁定全部的表满足一致性。 “--flush-logs”:开启一个新的二进制日志。...它提供了一个快速的转储操作,并产生一个可以快速重新加载到MySQL服务器的转储文件。
在上期文章如何获取JVM堆转储文件中,介绍了几种方法获取JVM的转储文件,其中编程方法是里面唯一一个从JVM内部获取的方法。...这里就不演示了其他方法获取正在运行的应用程序的堆转储,重点放在了使用编程来获取转储文件的方法,并演示了如何使用jhat工具浏览/分析生成的二进制堆转储。...,但不能将多个转储中的对象相关联。...jmap工具使用对象地址作为对象标识符-在垃圾回收之间有所不同[回想一下GC可能会移动更改对象地址的对象]。但是,您可以通过汇总统计数据(例如直方图等)进行关联。...---- 郑重声明:文章禁止第三方(腾讯云除外)转载、发表,事情原委测试窝,首页抄我七篇原创还拉黑,你们的良心不会痛吗?
如何获得一个核心转储 核心转储(core dump)是您的程序内存的一个副本,并且当您试图调试您的有问题的程序哪里出错的时候它非常有用。...当您的程序出现段错误,Linux 的内核有时会把一个核心转储写到磁盘。 当我最初试图获得一个核心转储时,我很长一段时间非常沮丧,因为 – Linux 没有生成核心转储!我的核心转储在哪里?...kernel.core_pattern:核心转储保存在哪里 kernel.core_pattern 是一个内核参数,或者叫 “sysctl 设置”,它控制 Linux 内核将核心转储文件写到磁盘的哪里。...%t,因为我在一台开发机上,我不在乎 apport 是否工作,我也不想尝试让 apport 把我的核心转储留在磁盘上。 现在你有了核心转储,接下来干什么?...在试图找出程序崩溃的原因时,堆栈跟踪中的行号非常有帮助。:) 查看每个线程的堆栈 通过以下方式在 gdb 中获取每个线程的调用栈!
概述 在我们开发大型 Java 应用程序的过程中,难免遇到内存泄露、性能瓶颈等问题,比如文件、网络、数据库的连接未释放,未优化的算法等。...转储:性能分析工具从内存中获得当前状态数据并存储到文件用于静态的性能分析。Java 程序是通过在启动 Java 程序时添加适当的条件参数来触发转储操作的。...它包括以下三种: 系统转储:JVM 生成的本地系统的转储,又称作核心转储。一般的,系统转储数据量大,需要平台相关的工具去分析,如 Windows 上的windbg和 Linux 上的gdb等。...Java 转储:JVM 内部生成的格式化后的数据,包括线程信息,类的加载信息以及堆的统计数据。通常也用于检测死锁。 堆转储:JVM 将所有对象的堆内容存储到文件。...同样,在 Sampler 页面,我们也可以找到手动触发 GC、导出堆转储以及线程转储的按钮。
3 内存泄露 同样的,Windows、Linux 各展示一个示例 Windows服务器 1、找到内存占有率最高的进程号 PID 第一眼看上去, idea 内存占有率最高,因为我是以 idea 启动的...,将 -Xmx1024m 修改成大于 dump 大小的空间, 我把它改成了 -Xmx4096m 接着我们就可以将 dump 文件导入 mat 中,开始 dump 文件的解析 解析是个比较漫长的过程,...一样,只是有稍许的命令区别 1、找到内存占有率最高的进程号 使用命令:top -c 显示运行中的进程列表信息, shift + m 按内存使用率进行排序 进程号:2527 2、利用 jmap 生成堆转储快照...jmap:生成堆转储快照,也可以查询 finalize 执行队列、Java 堆和永久代的详细信息 jstack:生成虚拟机当前时刻的线程快照 jhat:虚拟机堆转储快照分析工具 与 jmap 搭配使用...,分析 jmap 生成的堆转储快照,与 MAT 的作用类似 排查步骤 1、先找到对应的进程:PID 2、生成线程快照 stack (或堆转储快照:hprof ) 3、分析快照(或堆转储快照),定位问题
明明是个小 bug,但就是死活修不好,我特么心态崩了...... 前言 后文会从 Windows、Linux 两个系统来做示例展示,有人会有疑问了:为什么要说 Windows 版的 ?...不管是在 Windows 下,还是在 Linux 下,排查套路都是一样的 ?...,将 -Xmx1024m 修改成大于 dump 大小的空间, 我把它改成了 -Xmx4096m 接着我们就可以将 dump 文件导入 mat 中,开始 dump 文件的解析 ? ...:实时查看和调整虚拟机各项参数 jmap:生成堆转储快照,也可以查询 finalize 执行队列、Java 堆和永久代的详细信息 jstack:生成虚拟机当前时刻的线程快照 jhat...:虚拟机堆转储快照分析工具 与 jmap 搭配使用,分析 jmap 生成的堆转储快照,与 MAT 的作用类似 排查步骤 1、先找到对应的进程: PID 2、生成线程快照
进程转储适用于Windows 32和64位操作系统,可以从特定进程或当前运行的所有进程转储内存组件。Process Dump支持创建和使用良性文件哈希数据库,因此可以跳过所有的良性文件。...功能介绍 1.从特定进程或所有进程转储代码; 2.查找并转储进程中未正确加载的隐藏模块; 3.查找和转储松散代码块,即使它们不与PE文件关联; 4.重构转储信息; 5.可以在关闭转储监视器模式(’-closemon...’)下运行,在该模式下,进程将在终止前暂停并转储; 6.支持多线程,因此当你在转储所有正在运行的进程时,它的运行速度将非常快; 7.可以生成一个良性文件哈希数据库,在计算机感染恶意软件之前生成此文件,以便在进程转储时仅转储新的恶意软件组件...*chrome.* 构建良性文件哈希数据库,用于排除使用上述命令转储模块中的良性代码: pd64.exe -db gen 沙箱使用样例 如果你正在运行一个自动化沙箱,或手动反恶意软件研究环境,我建议广大研究人员以下列方式运行...当你准备从内存转储正在运行的恶意软件信息时,可直接运行下列命令: pd64.exe -system 所有转储的组件都将存储至pd64.exe所在的工作目录中,我们可以使用“-o”参数修改输出文件路径。
然后启动GameGuardian,然后从左上方的按钮中选择应用程序名称。选择最右边的按钮及其下面的按钮。现在,您可以在菜单中看到转储内存选项。.../androidDump appname 它转储3个数据块 但是转储后,file命令仍然没有为我们提供正确的类型we事实证明,我们应该对文件进行一些修改。为了找到dex的魔术数字,我编写了此脚本。...转储dex文件后,我的脚本将找到打印c2和加密密钥的config类。...Config Class位于a,b or c 或者较新版本的ooooooooooooo{0,2}o中 通过检查类源代码中“ this”关键字的计数,我设法解密了所有版本的anubis。...,因为一切都将在内存中完成,但是转储内存将捕获这些方法。
领取专属 10元无门槛券
手把手带您无忧上云