常用问题排查工具和分析神器,值得收藏

简介: 常用问题排查工具和分析神器,值得收藏

作为软件开发人员,如何才能提升我们的开发效率?如何才能快速地解决开发过程中遇到的何种问题?根据我多年来的开发经历及取得的经验,我们需要掌握一些常用的软件分析工具,借助这些工具,可以快速高效地分析和解决问题。


1 进程分析工具


1.1 ProcessHacker


功能:ProcessHacker 是一款不错的进程分析工具,可查看所有进程信息,包括进程加载的 dll、进程打开的文件、进程读写的注册表……,也可以将特定进程的内存空间 Dump 到本地,此外还可以查看网络连接。


工具截图如下:



注:查看具体进程的详细信息,双击 Processes 列表中的进程名字即可。


1.2 ProcessExplorer


功能:ProcessExplorer 是一款不错的进程分析工具,微软官方推荐工具,稳定性和兼容性相对不错。可查看所有进程的信息,包括其加载的 dll、创建的线程、网络连接……,同样可以 Dump 出进程的内存空间到本地。



1.3 ProcessMonitor


功能:ProcessMonitor 是一款实时刷新的进程信息监控工具,微软官方推荐工具,稳定性和兼容性也是相对出色。展示的信息很全面,且每一个打开的句柄、注册表、网络连接…… 都与具体的进程关联起来。



1.4 XueTr


功能:XueTr(官网 www.xuetr.com)是一个 Windows 系统信息查看软件,可协助排查木马、后门等病毒,可以做为手工杀毒的辅助工具,XueTr(简称XT)是一个强大的系统信息查看软件,也是一个强大的手工杀毒软件,用它可以方便揪出电脑中的病毒木马,在逆向与安全领域很有名。它主要功能包含:


进程、线程、进程模块、进程窗口、进程内存、定时器、热键信息查看,杀进程、杀线程、卸载模块等功能。注册表编辑,端口信息查看,消息钩子查看,内核驱动模块查看,支持内核驱动模块的内存拷贝。


SSDT、Shadow SSDT、FSD、Keyboard、TCPIP、Classpnp、Atapi、Acpi、SCSI、Mouse、IDT、GDT 信息查看,并能检测和恢复 ssdt hook 和 inline hook。


CreateProcess、CreateThread、LoadImage、CmpCallback、BugCheckCallback、Shutdown、Lego 等 Notify Routine 信息查看,并支持对这些 Notify Routine 的删除。


磁盘、卷、键盘、网络层等过滤驱动检测,并支持删除。


进程 iat、eat、inline hook、patches 检测和恢复。


文件系统查看,支持基本的文件操作。


查看(编辑)IE 插件、SPI、启动项、服务、Host 文件、映像劫持、文件关联、系统防火墙规则、IME。


ObjectType Hook 检测和恢复。


DPC 定时器检测和删除。


MBR Rootkit 检测和修复。


内核对象劫持检测。


其它一些手工杀毒时需要用到的功能,如修复 LSP、修复安全模式等。



1.5 PCHunter


功能:XueTr 的增强版,功能和 XueTr 差不多,可参考上图。推荐更多使用 PCHunter,减少出故障的概率。


1.6 ProcessDump


功能:可对指定的进程,将其进程空间内的所有模块单独 Dump 出来,甚至可 Dump 出隐藏的模块(即进程加载的 dll,这里通常是被注入)。



注:这是个命令行工具。


1.7 PsTools


功能:PsTools 是命令行工具集,微软官方推荐,功能多而全,其涵盖的子功能(命令)如下:



2 流量分析工具


2.1 Wireshark


功能:Wireshark 是一款常用的网络抓包工具,同时也可以用于流量分析。



2.2 科来网络分析


功能:科来公司的一款流量分析工具,对比 Wireshark 要相对易用些(特别是流量分析入门人员),此外,该工具会自动将流量进行归类和统计。在某种意味上,还是比较方便的。



2.3 TCPView


功能:查看系统的网络连接详情,每一条连接对应的进程、协议、进程、源目地址、源目端口、连接状态…… 总之,可展示当前活跃连接的所有详细信息。



3 启动项分析工具


3.1 AutoRuns


功能:一款不错的启动项分析工具,微软官方推荐。只要涉及到启动项相关的信息,事无巨细,通通都可以查询得到,非常方便找到病毒的启动项。



4 信息收集工具


4.1 FastIR


功能:收集操作系统的关键日志、关键信息,方便后续取证和排查分析。


4.2 BrowsingHistoryView


功能:收集浏览器的历史记录,方便追溯域名、URL 的访问来源是否源自于用户行为。


5 辅助工具


5.1 Hash


功能:文件 hash 计算工具,可计算文件 MD5、SHA1、CRC 值,可用于辅助判断文件是否被篡改,或者使用哈希值到威胁情报网站查看是否为恶意文件。



5.2 ntfsdir


功能:病毒也有可能是以创建服务启动项的方式保持长久运行,点击 Autoruns 的 Services 功能,如下图,检查是否有异常的服务启动项。


5.3 Unlocker


功能:可对难以删除的文件进行强制删除(包括锁定的文件),需安装,安装后右键菜单”Unlocker“即可弹出如下界面:


6 Webshell 查杀工具


6.1 wscan


功能:深信服自研的一款 Webshell 查杀工具。



6.2 D 盾


功能:D 盾是迪元素科技的一款 Webshell 查杀工具。


7 专杀工具


7.1 飞客蠕虫专杀


功能:专门针对飞客蠕虫病毒进行查杀的工具。


飞客蠕虫专杀工具有 kidokiller(卡巴斯基出品)、TMCleanTool(趋势科技出品)。


Kidokiller 运行截图如下,红色方框的所有 0 值表明没有中飞客蠕虫,如果有非 0 值,即说明中了飞客蠕虫。



TMCleanTool 的运行截图如下,有威胁项即表明中了飞客蠕虫。



7.2 Ramnit 专杀


功能:专门针对 Ramnit 类家族病毒进行查杀的工具。


FxRamnit 是赛门铁克出品的 Ramnit 专杀工具,其运行界面如下,点击”Start“按钮即可:



注:由于 Ramnit 是全盘感染性病毒,故此专杀工具运行时间比较长,需耐心等待(FxRamnit 常常给人一种” 假死 “的感觉)。


8.性能测试工具——gperftools


gperftools google推出的一个性能分析工具,主要由四个组件组成:


1、Tcmalloc内存分析器


2、Heap-profiler


Heap-profiler是内存监控器,可以随时知道内存的使用情况[2]。


3、Heap-checker


Heap-checker是专门检测内存泄漏的工具


4、Cpu-profiler


Cpu-profiler主要是通过采样的的方式,给出一段时间内程序实际占用cpu时间偏进行统计和分析。


相关介绍可见:


Home · gperftools/gperftools Wiki · GitHub



9.内存检测工具Sanitizers


GitHub :https://github.com/google/Sanitizers


使用文档: https://github.com/google/sanitizers/wiki


C++程序很容易出现越界、内存泄漏、内存重复释放、悬垂指针等问题,这些问题是新手的噩梦,但是一般的C++教程从来不教如何解决这些问题,导致很多人自学者都是人肉解决,从此给心理蒙上了阴影。其实针对C++有很多的工具可以用来定位这些问题,其中最垂手可得的是sanitizers,因为它已经被集成在编译器(gcc/clang/msvc)中,直接加上相关的编译选项就可以用,对于传说中恐怖的内存问题大都能手到擒来。


Sanitizers 是谷歌发起的开源工具集,包括了 AddressSanitizer, MemorySanitizer, ThreadSanitizer, LeakSanitizer,Sanitizers项目本是LLVM项目的一部分,但GNU也将该系列工具加入到了自家的 GCC 编译器中。GCC 从 4.8 版本开始支持 Address 和 Thread Sanitizer,4.9 版本开始支持 Leak Sanitizer 和 UB Sanitizer,这些都是查找隐藏 Bug 的利器。


gcc/g++ 使用 sanitizer:


gcc/g++ 编译只需要将 sanitizer 的标志作为 flag 设置即可,如下:


gcc/g++ -fsanitize=address -g -fno-omit-frame-pointer test.cpp


CMakeLists 使用 sanitizer :


使用 CMAKE_CXX_FLAGS 或 add_compile_options 的配置即可使用,如下:


set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer")


或者使用如下:


add_compile_options(-fsanitize=address -fno-omit-frame-pointer)
link_libraries(-fsanitize=address)


10.性能剖析工具perf


Wiki:https://perf.wiki.kernel.org/index.php/Main_Page


Perf 是内置于Linux 内核源码树中的性能剖析(profiling)工具。其基于事件采样原理,以性能事件为基础,常用于性能瓶颈的查找与热点代码的定位。


性能调优工具如 perf,Oprofile 等的基本原理都是对被监测对象进行采样,最简单的情形是根据 tick 中断进行采样,即在 tick 中断内触发采样点,在采样点里判断程序当时的上下文。假如一个程序 90% 的时间都花费在函数 foo() 上,那么 90% 的采样点都应该落在函数 foo的上下文中。只要采样频率足够高,采样时间足够长,那么以上推论就比较可靠。因此,通过 tick 触发采样,我们便可以了解程序中哪些地方最耗时间,从而重点分析。


11.调试器工具Windbg


Windbg是windows系统强大的调试器,在解决软件异常崩溃时非常有用,是我们用的最多的一款工具。


我们可以静态分析一异常发生时捕获到的dump文件,也可以将Windbg动态地挂载到目标进程中进行调试。比如遇到死循环时,可以采用动调试的方法,在Windbg中设置代码断点,可以确定到底死循环发生在哪个函数中。


Windbg排查异常问题时,其效率比我们直接去排查代码要高很多。Windbg的入门也相对简单,只需要掌握常用的命令,了解函数调用的栈分布图,知晓函数调用的栈回溯原理,但如果要深入分析,就需要有较深的软件开发经验和汇编语言基础了。



12.API Monitor


该工具可以来窥探其他软件在实现一些功能时都调用了哪些系统API:



13.库依赖查看工具Dependency Walker


Depenency Walker是库依赖查看工具,可以查看dll库的导出接口信息,也可以查看exe和dll的依赖库信息。该工具是早期Visual Studio自带的工具,现在的Visual Studio不再打包该工具了,需要到Depenency Walker官网上去下载。


该工具主要用于排查程序启动时缺少库报错、找不到接口报错等问题。


引用


网信杯writeup-web部分 - _nul1 - 博客园


C++ performance 性能分析工具(sanitizers valgrind gprof gperftools perf)的使用_超级大洋葱806的博客-CSDN博客_c++ 性能分析工具


性能测试工具gperftools使用 - 走看看


gperftools性能测试工具介绍 - 简书


C++性能分析工具gperftools - 简书


编译器自带的调试神器sanitizers - 知乎


【内存】内存检测工具sanitizer[内存泄漏、内存越界] VS valgrind_bandaoyu的博客-CSDN博客


_nul1 - 博客园


Windows开发值得推荐的十大软件分析工具,值得收藏_dvlinker的博客-CSDN博客_软件分析工具

相关文章
|
编解码 数据可视化 定位技术
神器-可视化分析之Basemap入门详(一)
今天咱们讲解一个画地图神器-BaseMap,看看这个神器讲给我们带来怎样的使用体验。
344 0
神器-可视化分析之Basemap入门详(一)
|
3月前
|
前端开发 数据可视化 JavaScript
分享20+个在线工具网站,60+常用工具
分享20+个在线工具网站,60+常用工具
126 1
分享20+个在线工具网站,60+常用工具
|
8月前
|
JavaScript
开发遇到的问题排查
开发遇到的问题排查
|
9月前
|
Java 测试技术 应用服务中间件
常见的网站压测工具介绍与使用
压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据其做出一些应对措施。
237 0
常见的网站压测工具介绍与使用
|
缓存 Prometheus 监控
可观测性神器之 Micrometer
对于大部分开发人员来说可能用过普罗米修斯 Grafana 这样的监控系统,从未听说过 Micrometer 工具,这里就详细的来介绍下可观测性神器 Micrometer,让你在开发时使用它就和使用 SLFJ 日志系统一样简单易用,有效的提升系统的健壮性和可靠性。
|
Arthas SQL 监控
java性能监控利器Arthas
java性能监控利器Arthas
725 0
java性能监控利器Arthas
|
Arthas 监控 Java
阿里开源性能监控神器Arthas
阿里开源性能监控神器Arthas,帮助你快速排查线上问题
3645 0
|
存储 缓存 监控
从零开始搞监控系统(3)——性能监控
  前端性能监控是个老话题了,各个团队都会对其有所关注,因为关注性能是工程师的本分。
从零开始搞监控系统(3)——性能监控
|
Arthas 监控 Java
XPocket插件使用案例合集——性能问题排查分析,一个XPocket足以!
XPocket插件使用案例合集——性能问题排查分析,一个XPocket足以!
|
监控 测试技术 Android开发
一文揭秘如何利用AndroidGodEye 打造Android应用性能测试监控
一文揭秘如何利用AndroidGodEye 打造Android应用性能测试监控
一文揭秘如何利用AndroidGodEye 打造Android应用性能测试监控