我目前正在写一篇关于数字取证的论文,其中包括一个关于记忆取证的章节。除了这些工具和获取各种数据的方法之外,我很想找到这些工具(如波动率)在理论上是如何工作的信息。例如,他们如何通过查看原始转储或任何其他方式来识别偏移量、进程、连接、内存差异(取决于操作系统)。
内存分析工具是如何工作的?他们用什么方法?我似乎找不到关于这件事的多少信息。
发布于 2014-07-27 18:26:36
许多分析工具都会在内存中查找表示特定类型信息的已知数据结构(即模式)。
例如,malloc'd内存具有头(有时是预告栏)数据,这些数据将内存中的前向和后向指向相邻内存。如果没有合并/合并,空闲内存指针就可以在内存中跳转。
Windows C++应用程序有类的概念和指向类的"this“指针。C++类的结构是已知的,因此当找到这些指针之一时,就可以导出有关该类的大量信息。如果它是一个已知的类/数据类型,那么它可以相对容易地被解析。
在内存中打开的文件可以通过它们的“文件签名”(通常是文件的前3个左右字节)来发现。如果找到这些文件,可以进行一些快速分析,以确定该文件是否实际上是该类型的合法文件,或者这些字节是否是运气不好的文件。
因此,通常,许多内存分析工具都会在内存中查找已知的模式,并/或将其挂钩到内核中的关键数据结构中,然后从其中解析内存。一旦找到代码区域,就可以“拆解”它们,并找到对其他内存区域的引用(指针)。然后,您可以找到其他数据结构。
我希望这能帮上忙。
https://security.stackexchange.com/questions/64092
复制相似问题