radareorg / radeco

radare2-based decompiler and symbol executor
371 stars 52 forks source link

Panic on <radeco_lib::analysis::matcher::gmatch::GraphMatcher<'a, I, S>>::hash_data #305

Open radare opened 5 years ago

radare commented 5 years ago

crackme0x00.exe.zip

$ RUST_BACKTRACE=1 r2pm -r radeco crackme0x00.exe 
Warning: CC = E(1) - N(1) + (2 * P(0)) < 1 at 0x00402e40
Warning: CC = E(1) - N(1) + (2 * P(0)) < 1 at 0x00402e50
Warning: CC = E(1) - N(1) + (2 * P(0)) < 1 at 0x00402e40
Warning: CC = E(1) - N(1) + (2 * P(0)) < 1 at 0x00402e50
thread '<unnamed>' panicked at 'internal error: entered unreachable code', /Users/pancake/.cargo/git/checkouts/radeco-lib-bf219eb1a7e916cc/a88edde/src/analysis/matcher/gmatch.rs:227:26
thread '<unnamed>' panicked at 'internal error: entered unreachable code', /Users/pancake/.cargo/git/checkouts/radeco-lib-bf219eb1a7e916cc/a88edde/src/analysis/matcher/gmatch.rs:227:26
thread '<unnamed>' panicked at 'assertion failed: `(left == right)`
  left: `2`,
 right: `1`', /Users/pancake/.cargo/git/checkouts/radeco-lib-bf219eb1a7e916cc/a88edde/src/analysis/sccp.rs:151:13
thread '<unnamed>' panicked at 'not yet implemented', /Users/pancake/.cargo/git/checkouts/radeco-lib-bf219eb1a7e916cc/a88edde/src/analysis/sccp.rs:336:18
thread '<unnamed>' panicked at 'assertion failed: `(left == right)`
  left: `2`,
 right: `1`', /Users/pancake/.cargo/git/checkouts/radeco-lib-bf219eb1a7e916cc/a88edde/src/analysis/sccp.rs:151:13
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
   1: std::panicking::default_hook::{{closure}}
   2: std::panicking::rust_panic_with_hook
   3: std::panicking::begin_panic
   4: <radeco_lib::analysis::matcher::gmatch::GraphMatcher<'a, I, S>>::hash_data
   5: <radeco_lib::analysis::matcher::gmatch::GraphMatcher<'a, I, S>>::grep
   6: <radeco_lib::analysis::engine::RadecoEngine as radeco_lib::analysis::engine::Engine>::run_func
   7: rayon::iter::plumbing::bridge_producer_consumer::helper
   8: rayon::iter::plumbing::bridge_producer_consumer::helper
   9: rayon::iter::plumbing::bridge_producer_consumer::helper
  10: rayon::iter::plumbing::bridge_producer_consumer::helper
  11: <rayon_core::job::StackJob<L, F, R> as rayon_core::job::Job>::execute
  12: rayon_core::registry::WorkerThread::wait_until_cold
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
   1: std::panicking::default_hook::{{closure}}
   2: std::panicking::rust_panic_with_hook
   3: std::panicking::begin_panic
   4: <radeco_lib::analysis::matcher::gmatch::GraphMatcher<'a, I, S>>::hash_data
   5: <radeco_lib::analysis::matcher::gmatch::GraphMatcher<'a, I, S>>::grep
   6: <radeco_lib::analysis::engine::RadecoEngine as radeco_lib::analysis::engine::Engine>::run_func
   7: rayon::iter::plumbing::bridge_producer_consumer::helper
   8: <rayon_core::job::StackJob<L, F, R>>::run_inline
   9: rayon::iter::plumbing::bridge_producer_consumer::helper
  10: <rayon_core::job::StackJob<L, F, R> as rayon_core::job::Job>::execute
  11: rayon_core::registry::WorkerThread::wait_until_cold
  12: rayon::iter::plumbing::bridge_producer_consumer::helper
  13: <rayon_core::job::StackJob<L, F, R> as rayon_core::job::Job>::execute
  14: rayon_core::registry::WorkerThread::wait_until_cold
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
   1: std::panicking::default_hook::{{closure}}
   2: std::panicking::rust_panic_with_hook
   3: std::panicking::continue_panic_fmt
   4: std::panicking::begin_panic_fmt
   5: radeco_lib::analysis::sccp::SCCP::visit_phi
   6: <radeco_lib::analysis::sccp::SCCP as radeco_lib::analysis::analyzer::FuncAnalyzer>::analyze
   7: <radeco_lib::analysis::engine::RadecoEngine as radeco_lib::analysis::engine::Engine>::run_func
   8: rayon::iter::plumbing::bridge_producer_consumer::helper
   9: <rayon_core::job::StackJob<L, F, R>>::run_inline
  10: rayon::iter::plumbing::bridge_producer_consumer::helper
  11: rayon::iter::plumbing::bridge_producer_consumer::helper
  12: rayon::iter::plumbing::bridge_producer_consumer::helper
  13: rayon::iter::plumbing::bridge_producer_consumer::helper
  14: <rayon_core::job::StackJob<L, F, R> as rayon_core::job::Job>::execute
  15: rayon_core::registry::WorkerThread::wait_until_cold
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
   1: std::panicking::default_hook::{{closure}}
   2: std::panicking::rust_panic_with_hook
   3: std::panicking::begin_panic
   4: radeco_lib::analysis::sccp::SCCP::visit_expression
   5: <radeco_lib::analysis::sccp::SCCP as radeco_lib::analysis::analyzer::FuncAnalyzer>::analyze
   6: <radeco_lib::analysis::engine::RadecoEngine as radeco_lib::analysis::engine::Engine>::run_func
   7: rayon::iter::plumbing::bridge_producer_consumer::helper
   8: rayon::iter::plumbing::bridge_producer_consumer::helper
   9: <rayon_core::job::StackJob<L, F, R>>::run_inline
  10: rayon::iter::plumbing::bridge_producer_consumer::helper
  11: rayon::iter::plumbing::bridge_producer_consumer::helper
  12: <rayon_core::job::StackJob<L, F, R> as rayon_core::job::Job>::execute
  13: rayon_core::registry::WorkerThread::wait_until_cold
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
   1: std::panicking::default_hook::{{closure}}
   2: std::panicking::rust_panic_with_hook
   3: std::panicking::continue_panic_fmt
   4: std::panicking::begin_panic_fmt
   5: radeco_lib::analysis::sccp::SCCP::visit_phi
   6: <radeco_lib::analysis::sccp::SCCP as radeco_lib::analysis::analyzer::FuncAnalyzer>::analyze
   7: <radeco_lib::analysis::engine::RadecoEngine as radeco_lib::analysis::engine::Engine>::run_func
   8: rayon::iter::plumbing::bridge_producer_consumer::helper
   9: rayon::iter::plumbing::bridge_producer_consumer::helper
  10: rayon::iter::plumbing::bridge_producer_consumer::helper
  11: <rayon_core::job::StackJob<L, F, R> as rayon_core::job::Job>::execute
  12: rayon_core::registry::WorkerThread::wait_until_cold
  13: rayon::iter::plumbing::bridge_producer_consumer::helper
  14: rayon::iter::plumbing::bridge_producer_consumer::helper
  15: <rayon_core::job::StackJob<L, F, R> as rayon_core::job::Job>::execute
  16: rayon_core::registry::WorkerThread::wait_until_cold