Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
memoro — Memoro: 详细的堆剖析器 | Kitploit
工具/GitHubGitHub/epfl-vlsc/memoro
动态分析 (沙盒)内存取证调试器二进制分析
GitHubepfl-vlsc/memoro

memoro

Memoro: 详细的堆剖析器

查看仓库网站
1841635年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Memoro

Memoro 是一个高度详细的堆分析器。

Memoro 不仅会显示你的程序在何处以及何时进行堆分配,还会向你展示你的程序 实际 如何使用这些内存。

Memoro 收集对堆访问的详细信息,包括对内存的读取和写入以及它们发生的时间,让你了解程序使用堆内存的效率。

Memoro 包含一个可视化应用程序,它将所有这些信息提炼成评分和指标,帮助你定位问题区域。

alt text

关于 Memoro 工作原理的更多详细信息,请参见此处

构建与安装

以下步骤概述了使用 Memoro 的快速入门指南。详细的设置说明请参考此处。使用 Memoro 的指南请参考此处。

构建插桩编译器

首先,你需要构建一个本地版本的 LLVM/Clang,以便用 Memoro 插桩编译你的代码。 预构建的发行版尚不可用,但如果足够多的人来烦我,也许我会在此托管。

请遵循 LLVM/Clang 构建说明此处,但使用下面列出的特定仓库。 Memoro 尚未加入 LLVM/Clang 的开发分支。

建议使用 git 镜像仓库代替 SVN。 对于主要的 LLVM 仓库、Clang 仓库和 CompilerRT 仓库,请使用 Memoro 版本:

LLVM

Clang

CompilerRT

这些仓库默认应切换到分支 memoro_80。

构建可视化器的 C++ 库

使用 git clone [email protected]:epfl-vlsc/memoro.git 克隆此仓库。

进入目录。

$ cd memoro

运行 npm install 以确保所有 JS 依赖都存在。 然后你需要构建 C++ 数据处理插件。 为此,你可能需要先安装 node-gyp(npm install -g node-gyp)。 然后,

root@kitploit:~
cd cpp
node-gyp build --release --target=1.7.9 --arch=x64 --dist-url=https://atom.io/download/electron
cd ..

target 是 Electron 版本,必须与运行主应用程序的版本匹配。 如果需要,请调整此参数。 同时根据需要调整 arch,但我尚未在非 *nix x64 系统上测试过。 还有一个 Makefile 适用于大多数用户。

显然,你需要安装一个 C++ 编译器供 node-gyp 使用。

运行

插桩并运行你的软件

首先,使用之前构建的 LLVM/Clang 编译你要分析的软件。 添加编译器标志 -fsanitize=memoro 以添加插桩,并可选择添加 -fno-omit-frame-pointer 以获得良好的堆栈跟踪。 如果你有单独的链接步骤,也可能需要 -fsanitize=memoro 以确保链接 Memoro/Sanitizer 运行时。 建议使用 LLVM 符号化器进行堆栈跟踪,设置环境变量 MEMORO_SYMBOLIZER_PATH 指向 llvm-symbolizer 的位置。 或者直接将其放在你的 PATH 中。

运行你的程序。完成后,Memoro 运行时将生成两个文件:*.trace 和 *.chunks。这些文件可以使用可视化器打开和查看。

使用 Memoro 可视化器

构建完 C++ 插件后,可以直接从仓库目录运行应用程序

root@kitploit:~
electron .

文件->打开 或 Cmd/Ctrl-O 打开,导航并选择 trace 或 chunk 文件。

祝你愉快地查找堆问题 :-)

安装可视化器

使用 electron-packager 将所有代码和资源收集并导出到一个应用程序包中。

root@kitploit:~
electron-packager . --overwrite --platform=<platform> --arch=x64 --electron-version=1.7.9 --icon=assets/icons/icon64.icns --prune=true --out=release-builds

再次根据需要调整平台、架构和 Electron 版本。

贡献

非常欢迎贡献。 请提交拉取请求或联系我。

下载工具