メモリ内にある命令のサイズを確認する必要があります (実際、メモリ内に小さなコード セグメントがあり、最初の命令のサイズを取得したい)。libopcodes と libbfd を見つけるのに時間がかかりました。ヘッダーを赤くして簡単な解決策を考え出そうとしましたが、プログラムが常にクラッシュするため、何かを誤解しているようです。
int main(int argc, char **argv) {
disassemble_info *dis = malloc(sizeof(*dis));
assert(dis != NULL);
dis->arch = bfd_arch_i386;
dis->read_memory_func = buffer_read_memory;
dis->buffer_length = 64;
dis->buffer = malloc(dis->buffer_length);
memset(dis->buffer, 0x90, dis->buffer_length);
disassemble_init_for_target(dis);
int instr_size = print_insn_i386(0, dis);
printf("instruction size is %d\n", instr_size);
return 0;
}
期待される結果は、命令サイズ 1 です ( nop
)。
編集:
すみません、私は愚かな人です。
memset(dis, 0, sizeof(*dis));