首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使capstone产生二进制输入的最后一行?

如何使capstone产生二进制输入的最后一行?
EN

Stack Overflow用户
提问于 2014-07-17 08:02:35
回答 1查看 363关注 0票数 1

今天我试着从顶石开始。按照他们的例子,这里,我想开始使用这个库。不幸的是,capstone并没有产生asm指令的最后一行,它将其反汇编。它只产生一个空行。

代码:

代码语言:javascript
复制
#include <stdio.h>
#include <inttypes.h>
#include <string>
#include <iostream>

#include <capstone/capstone.h>
int main(void)
{
    csh handle;
    cs_insn *insn;
    size_t count;
    const uint8_t CODE[] = {0x55,0x48,0x8b,0x05,0xb8,0x13,0x00,0x00};
    if (cs_open(CS_ARCH_X86, CS_MODE_64, &handle) != CS_ERR_OK)
        return -1;
    count = cs_disasm_ex(handle, CODE, sizeof(CODE)-1, 0x1000, 0, &insn);
    if (count > 0) {
        size_t j;
        for (j = 0; j < count; j++) {
            printf("0x%" PRIx64":\t%s\t\t%s\n", insn[j].address, insn[j].mnemonic,
            insn[j].op_str);
        }

        cs_free(insn, count);
        } else
            printf("ERROR: Failed to disassemble given code!\n");
        cs_close(&handle);

        return 0;
}

而不是得到

代码语言:javascript
复制
0x1000: push        rbp
0x1001: mov     rax, qword ptr [rip + 0x13b8]

我得到了

代码语言:javascript
复制
0x1000: push        rbp

最后一行是打印的,但是是空的。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-17 08:30:07

你不该这么做吗

代码语言:javascript
复制
cs_disasm_ex(handle, CODE, sizeof(CODE), 0x1000, 0, &insn);

而不是

代码语言:javascript
复制
cs_disasm_ex(handle, CODE, sizeof(CODE)-1, 0x1000, 0, &insn);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24798006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档