Exemplo n.º 1
0
Arquivo: test.c Projeto: deadbok/aMOS
int main(int argc, char *argv[])
{
	struct elf_data		elf;
	int					ret;

	printf("\n");

	if (argc < 2)
	{
		printf("Please specify an ELF file on the command-line\n\n");
		printf("    test \"elffile\"\n");
		printf("    where \"elffile\" is the filename of the ELF file to investigate\n");
	}

	elf.filename = argv[1];
	elf.verbose = 1;

	ret = elf_load(&elf);
	if (ret)
	{
		switch(ret)
		{
			case ERR_ELF_FILE_OPEN:				printf("File open failed\n");
												break;

			case ERR_ELF_FILE_PREMATURE_EOF:	printf("File open failed\n");
												break;

			case ERR_ELF_FILE_READ:				printf("File open failed\n");
												break;

			case ERR_ELF_INCOMPATIBLE:			printf("Incompatibke file\n");
												break;

			case ERR_ELF_MEMORY_ALLOCATION:		printf("Memory allocation error\n");
												break;

			default:							printf("Unknown error: %d\n", ret);
												break;
		}
		return(ret);
	}

	elf_print_header(&elf);

	elf_print_sections(&elf);

	return(0);
}
Exemplo n.º 2
0
Arquivo: elf.c Projeto: blaquee/elf
int main(int argc, char** argv) {
	if (argc < 2) {
		fprintf(stderr, "no input elf specified\n");
		return EXIT_FAILURE;
	}

	elf_t elf;
	int ret = elf_read(argv[1], &elf);
	if (ret != 0) {
		fprintf(stderr, "unable to parse elf: %d\n", ret);
		return EXIT_FAILURE;
	}

	elf_print_sections(&elf);
	elf_print_symbols(&elf);

	int symbol;
	uint64_t faddr;
	uint32_t* val;
	ret = elf_get_symbol_by_name(&elf, "SOME_GLOBAL", &symbol);
	if (ret != 0) {
		fprintf(stderr, "no such symbol 'SOME_GLOBAL'\n");
		return EXIT_FAILURE;
	}
	ret = elf_get_symbol_faddr(&elf, symbol, &faddr);
	if (ret != 0) {
		fprintf(stderr, "unable to map symbol: %d\n", ret);
		return EXIT_FAILURE;
	}
	val = (uint32_t*)(elf.elf_data + faddr);
	printf("Value of SOME_GLOBAL: 0x%x\n", *val);

	elf_free(&elf);
	
	return EXIT_SUCCESS;
}