DynamoRIO / DynamoRIO/dynamorio

CRASH standalone mode decoding a small PC < 40K

Open
#5,960 3 comments 0 reactions 1 assignee Claimed by @bete0 View on GitHub
Bug-DRCrash Component-IR
Dominant language
C
Stars
3.2k
Forks
629
Avg merge
2d 15h
Merged PRs (30d)
31

Description

Calling `decode_from_copy()` on an encoded instruction whose previous instruction's address is 1 results in crash in `get_app_pc_from_intercept_pc()`.
```
dynamorio.dll!get_app_pc_from_intercept_pc(unsigned char * pc) Line 1462 C
dynamorio.dll!get_app_pc_from_intercept_pc_if_necessary(unsigned char * pc) Line 572 C
dynamorio.dll!instr_set_translation(_instr_t * instr, unsigned char * addr) Line 1151 C
dynamorio.dll!decode_common(_dcontext_t * dcontext, unsigned char * pc, unsigned char * orig_pc, _instr_t * instr) Line 2678 C
dynamorio.dll!decode_from_copy(void * drcontext, unsigned char * copy_pc, unsigned char * orig_pc, _instr_t * instr) Line 2707 C
tool.drcachesim.invariant_checker_test.exe!invariant_checker_t::parallel_shard_memref(void * shard_data, const _memref_t & memref) Line 424 C++
tool.drcachesim.invariant_checker_test.exe!invariant_checker_t::process_memref(const _memref_t & memref) Line 613 C++
tool.drcachesim.invariant_checker_test.exe!`anonymous namespace'::run_checker(const std::vector<_memref_t,std::allocator<_memref_t>> & memrefs, bool expect_error, __int64 error_tid, unsigned __int64 error_refs, const std::string & expected_message, const std::string & toprint_if_fail) Line 81 C++
tool.drcachesim.invariant_checker_test.exe!`anonymous namespace'::check_repeated_syscall_with_same_pc() Line 511 C++
tool.drcachesim.invariant_checker_test.exe!main(int argc, const char * * argv) Line 547 C++
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.