c - 尝试从顶点开始 (C)
问题描述
今天我尝试从 capstone 开始,因为有人告诉我这对查找交叉引用(通过 64 位 ARM(小端)引导加载程序)很有帮助,但经过多次尝试,我似乎无法理解在他们所有的例子中;(
例如,我试图调整他们的基本示例:
int main(char *argv[]) {
FILE *f;
csh handle;
cs_insn *insn;
size_t count;
int len = 0;
char *file = NULL;
f = fopen(argv[1], "rb");
if (!fd) {
return -1;
}
fseek(f,0,SEEK_END);
len = ftell(f);
fseek(f,0,SEEK_SET);
file = malloc(len);
fread(file,1,len,f);
fflush(f);
fclose(f);
if (cs_open(CS_ARCH_ARM64,CS_MODE_LITTLE_ENDIAN,&handle) != CS_ERR_OK)
return -1;
count = cs_disasm(handle,file,len-1,0x11DA,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);
free(file);
return 0;
}
但我没有得到我期望的结果(比如,0x11DA
偏移量应该是一条mov
指令,但在那里,它输出一条指令,adrp
所以我认为我错过了一些东西......)
有人可以解释我如何找到与顶点的交叉引用,或者如果没有,至少有一个很好地介绍它的链接?
(如果您不了解所有内容,请提前道歉)。
谢谢。
解决方案
推荐阅读
- c# - 如何在后面的代码中应用 materialDesign:ColorZoneAssist.Mode="Accent"
- amazon-web-services - KUBERNETES AWSElasticBlockStore PersistentVolume:NoCredentialProviders:链中没有有效的提供者
- python - 如何在记录未知长度的数据时修复错误?
- python - 用python编写的def函数中的加密代码
- python - python-'Status'对象没有属性'lower'
- java - 在混合模式下使用 URI(Windows 和 Linux)
- vba - Excel-vba:使用用户定义函数 (UDF) 获取单元格公式中的选定单元格
- android - 退还用户钱
- docker - 运行 docker-compose up 重建并附加到其他容器
- python - 通过键列表删除嵌套字典中的元素