avast / avast/retdec

how to recompile ir file contains something like __asm_movi back to binary?

Open
#847 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
8.6k
Forks
1k
PR merge metrics
No merged PRs in 30d

Description

When I lift a binary to llvmir, I find for example
`0x9e4c10: 00 e4 00 6f movi v0.2d, #0000000000000000`
the inst is correctly decoded, but the llvmir is
`%5 = call i128 @__asm_movi(i128 %3, i64 0), !insn.addr !25 `
the inst becomes a call.
according to https://retdec.com/static/publications/retdec-slides-botconf-2017.pdf page 25-26. This is what retdec designed as.
'full semantics only for simple instuctions'

The question is how to compile it back to binary given the movi is a call now?

Thanks.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the issue's lifted LLVM IR example and the __asm_movi call, then review the referenced RetDec slides on instruction semantics. Determine whether RetDec documents or supports recompiling such calls to binary, and document the supported workflow or limitation clearly.

Written by the indexing model from the issue text.

Assessment

Domain
compilers, reverse-engineering
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.