Skip to content

Commit

Permalink
ultask: Add run_disasm()
Browse files Browse the repository at this point in the history
Signed-off-by: Rong Tao <rtoax@foxmail.com>
Rtoax committed Jan 4, 2025

Unverified

This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
1 parent 34a8c7e commit ec52662
Showing 1 changed file with 29 additions and 15 deletions.
44 changes: 29 additions & 15 deletions src/ultask.c
Original file line number Diff line number Diff line change
@@ -782,6 +782,34 @@ int run_jmp(void)
return err;
}

int run_disasm(void)
{
void *mem;
int ret = 0;

if (!disasm_addr || !disasm_size)
return 0;

mem = malloc(disasm_size);

ret = memcpy_from_task(target_task, mem, disasm_addr, disasm_size);
if (ret <= 0) {
fprintf(stderr, "Bad address 0x%lx\n", disasm_addr);
ret = -ENOMEM;
goto done;
}

print_string_hex(stdout, "Hex: ", mem, disasm_size);
ret = fdisasm_arch(stdout, NULL, 0, mem, disasm_size);
if (ret) {
fprintf(stderr, "Disasm failed\n");
}

done:
free(mem);
return ret;
}

int ultask(int argc, char *argv[])
{
int ret = 0;
@@ -850,21 +878,7 @@ int ultask(int argc, char *argv[])
dump_task_fds(stdout, target_task, is_verbose());

run_jmp();

if (disasm_addr && disasm_size) {
void *mem = malloc(disasm_size);
ret = memcpy_from_task(target_task, mem, disasm_addr, disasm_size);
if (ret <= 0) {
fprintf(stderr, "Bad address 0x%lx\n", disasm_addr);
} else {
print_string_hex(stdout, "Hex: ", mem, disasm_size);
ret = fdisasm_arch(stdout, NULL, 0, mem, disasm_size);
if (ret) {
fprintf(stderr, "Disasm failed\n");
}
}
free(mem);
}
run_disasm();

close_task(target_task);
return ret;

0 comments on commit ec52662

Please sign in to comment.