问题标签 [capstone]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
347 浏览

c++ - 如何使顶点生成二进制输入的最后一行?

今天我试着从顶点开始。按照他们的示例我想开始使用该库。不幸的是,capstone 不会生成它反汇编的 asm 指令的最后一行。它只产生一个空行。

代码:

而不是得到

我明白了

打印最后一行的位置,但为空。

有人可以帮我解决这个问题吗?

0 投票
3 回答
6474 浏览

python - 如何使用 Python 获取 PE 文件的指令?

所以我正在尝试使用 Python 为一个学校项目编写一个基本的反汇编程序。我正在使用 pydasm 和 capstone 库。我不明白的是,我如何才能真正使用 Python 访问程序的汇编指令。这些库允许我反汇编指令,但我不知道如何在 Python 中访问程序的指令。谁能给我一些指导?

谢谢。

0 投票
2 回答
210 浏览

edge-detection - 边缘检测限制

我是一名计算机科学本科生,试图为我的顶点项目提出一个主题。我对边缘检测特别感兴趣,但我在提出关于该主题的研究领域时遇到了麻烦。我正在寻找今天面临的某种边缘检测限制。

到目前为止,我的想法如下:

处理噪声图像中的边缘检测——当前的方法是使用高斯平滑,但我们仍然没有得到我们想要的结果。

我听说过一些讨论边缘检测和格式塔原则的问题。但是我没有找到关于这个子主题的任何好的数据或研究论文。

有谁知道尚未解决的任何边缘检测问题或限制?随意详细说明我上面提到的两个子主题!

0 投票
1 回答
608 浏览

assembly - x86 程序集 - 如何识别寄存器到寄存器指令

我正在尝试在给定的反汇编指令列表中识别所有寄存器以注册指令..

我正在使用 capstone 作为反汇编引擎。

检查“英特尔® 64 和 IA-32 架构软件开发人员手册”后,我发现我需要查看 MOD\RM 字节中的 MOD 位,如果它的 11b 则该指令位于两个寄存器之间。

在我遇到下一个指令(十六进制)之前,它工作得很好:

根据顶点(http://www.cenigma.org/4AM3UGY):

在第一条指令 MOD\RM='EC' (11101100b) 所以 MOD=11b 在第二条指令 MOD\RM='C4' (11000100b) 所以再次 MOD=11b

并且两者都没有注册注册!

我错过了什么?除了MOD位还有更多吗?

谢谢 !

0 投票
1 回答
837 浏览

python - 在 Python 中读取二进制文件 (.out) 并使用 Capstone 进行反汇编

我在阅读二进制文件的 .text 部分时遇到了一些麻烦。

二进制文件由 gcc 编译。

该命令表明

.text 部分的地址为 0000831c,偏移量 = 00031c 且大小 = 000340

我努力了

Capstone 无法识别。

如果 .text 内容看起来像

如何读为

0 投票
1 回答
6888 浏览

python - Capstone 从 Python 中的二进制文件反汇编

我有一个大学项目,我必须在其中反汇编二进制文件。因此,我尝试了 Capstone。我用 Java 尝试了几个星期,但它没有用,所以从昨天开始我自学了一点 Python。要阅读我试过的二进制文件:

从此链接:Reading Binary File (.out) in Python and disassemble with Capstone 以及从 capstone 反汇编的说明http://www.capstone-engine.org/lang_python.html

我有来自在线反汇编程序的解决方案,结果超过 13000 行。当我开始我的时候,我只得到一个(0x1000:sc 0x2b)。我找不到错误,因为在我看来这没问题,但我没有任何 Python 或 Capstone 计划。

顺便说一句,Capstone 页面中的测试代码工作正常,所以我认为安装没有问题。

代码:

0 投票
1 回答
1744 浏览

python - 我应该将哪些字节传递给 Capstone 以反汇编 PE 文件的可执行代码

我试图使用 pefile 和 capstone 用 python 反汇编 PE 可执行文件,以便稍后从该代码中获取 CFG。我的想法是获取包含可执行代码的 PE 文件部分并将所有这些字节传递给顶点。我不知道究竟应该将哪个部分传递给顶点,因此不会反汇编超过必要的代码,并且可以在构造 CFG 时解析 RVA(即 jo 0x10df9 和地址 0x10df9 在反汇编指令列表中) . 我试过了

但我担心它会从入口点反汇编到 PE 的末尾,我只想反汇编可执行代码。我一直在阅读有关 PE 格式的内容,并且更有可能代码将始终位于 .text 部分。我也在考虑把那部分放在:

然后将那个部分的数据从EntryPoint中的字节开始传递给顶点,我认为这可以将数据从起始点分隔到该部分的末尾。

但是在本节的末尾可能是不应该反汇编的代码(我认为,不确定)。所以我要问的是我应该将哪些字节传递给 Capstone 来反汇编 PE 文件的可执行代码。

0 投票
0 回答
254 浏览

mips - 计算 mips jalr 的目标地址

我使用 capstone 反汇编了以下汇编代码。我从从标头获得的入口点开始。

我如何找到jalr指向哪个地址?(我以为我可以在 C 程序中达到主要功能)

基于此参考中的幻灯片编号 19,我将 target = 0x0400ba0

我寻找它并在.plt部分中找到它。下面是拆解.plt

我很困惑 - 我该如何理解它。或者我怎样才能在 MIPS 反汇编中达到实际的主要功能

0 投票
1 回答
1591 浏览

c++ - Capstone cs_disasm 仅反汇编一小部分代码

我正在MacOS 和 MacOS x86_64 二进制文件上尝试http://www.capstone-engine.org 。它或多或少确实有效,但我确实有两个担忧。

我正在加载测试 dylib

  1. 就我所做的研究而言,我似乎需要从二进制代码中删除“第一个”字节以删除标头和元数据,直到它遇到真正的指令。但是我不确定 capstone 是否为此提供了任何 api,或者我需要按字节模式扫描并找到第一个指令地址。

事实上,我已经应用了简单的解决方法,我确实找到了安全地址,它肯定会对我将加载的大多数模块有说明,但是我想应用适当的解决方案。

  1. 我已经使用我描述的解决方法成功加载和反汇编了部分模块代码。然而,可悲的是,cs_disasm返回的指令大多不超过 5000-6000 条,这令人困惑,它似乎在不应该中断的常规指令上中断。我不确定我做错了什么。模块的代码超过 15mb,因此要反汇编的指令超过 5k。

以下是我基于 Capstone Docs 示例的功能

我将非常感谢这方面的任何帮助。
热情地,
大卫

0 投票
1 回答
383 浏览

python - subprocess.Popen 在循环时吃掉内存

我编写了一个 python 脚本来帮助我自动化我正在处理的项目。它在循环中执行 Capstone 子进程,因为当时我无法安装绑定,从二进制文件中读取 4 个字节并将其作为 Capstone 输入传递。

问题是,我的二进制数据超过 30MB,导致这个脚本运行了一段时间。所以我让它等待了几分钟,当我回来时,我的 RAM 使用率为 98%。

我已经开始使用 Capstone 绑定,但我很好奇这里出了什么问题。我的代码如下。谢谢!

编辑:修复了代码。我是凭记忆把它写回来的,所以我把它弄乱了一点。