debian

debian反汇编指令如何安装

小樊
37
2025-11-30 18:33:00
栏目: 智能运维

debian反汇编工具安装与使用指南

一、常用工具与安装命令

二、快速上手示例

三、如何选择工具

四、进阶 capstone 示例

#include <stdio.h>
#include <capstone/capstone.h>

int main(int argc, char *argv[]) {
    csh handle;
    cs_insn *insn;
    size_t count, i;

    if (argc != 3) {
        printf("Usage: %s <binary_file> <arch: x86|x86_64|arm|arm64>\n", argv[0]);
        return 1;
    }

    cs_arch arch;
    cs_mode mode;
    if (strcmp(argv[2], "x86") == 0)      { arch = CS_ARCH_X86; mode = CS_MODE_32; }
    else if (strcmp(argv[2], "x86_64") == 0) { arch = CS_ARCH_X86; mode = CS_MODE_64; }
    else if (strcmp(argv[2], "arm") == 0)   { arch = CS_ARCH_ARM; mode = CS_MODE_ARM; }
    else if (strcmp(argv[2], "arm64") == 0) { arch = CS_ARCH_ARM64; mode = CS_MODE_ARM; }
    else { fprintf(stderr, "Unsupported arch: %s\n", argv[2]); return 1; }

    if (cs_open(arch, mode, &handle) != CS_ERR_OK) {
        fprintf(stderr, "Failed to initialize Capstone\n");
        return 1;
    }

    unsigned char buf[4096];
    FILE *f = fopen(argv[1], "rb");
    if (!f) { perror("fopen"); return 1; }
    size_t n = fread(buf, 1, sizeof(buf), f);
    fclose(f);

    count = cs_disasm(handle, buf, n, 0, &insn);
    if (count > 0) {
        for (i = 0; i < count; i++) {
            printf("0x%" PRIx64 ":\t%s\t%s\n", insn[i].address, insn[i].mnemonic, insn[i].op_str);
        }
        cs_free(insn, count);
    } else {
        fprintf(stderr, "Failed to disassemble given file\n");
    }
    cs_close(&handle);
    return 0;
}

0
看了该问题的人还看了