Proto commits in lifting-bits/anvill

These 51 commits are when the Protocol Buffers files have changed:

Commit:b91183b
Author:Francesco Bertolaccini

Export function epilogue address

Commit:a4fa8f1
Author:William Tan

add true basic block address to spec

Commit:70209a8
Author:2over12
Committer:GitHub

Basic pointer use heuristic (#402) * basic pointer fix * add binary addrs * spurious header * add type names * named types * default for null ty * fix typedef

Commit:ebd47cc
Author:2over12

add type names

Commit:71fc1eb
Author:2over12

add binary addrs

Commit:9cfd0d6
Author:William Tan
Committer:GitHub

Sleigh sparc (#387) * update link to empirehacking slack (#383) * use sparc sleigh * update submodule * bump remill * bump remill * update remill * pass build flags to remill for debug symbols * update remill * add noreturn flag * correctly handle noreturn pt1 * fix return value to also take into account noreturn * bump remill * bump remill * update remill * bump remill * bump remill * bump remill * bump remill * bump remill * adapt type for stack offsets * use specified register directly * bump remill * bump remill --------- Co-authored-by: James Olds <oldsj@users.noreply.github.com> Co-authored-by: 2over12 <ian.smith@trailofbits.com>

Commit:610205a
Author:Eric Kilmer
Committer:GitHub

UID codeblocks refactor (#396) * Use UID for codeblocks * Fix BasicBlockContext lookups Fixes the missing literal_struct_2 issue * Test CI * Strong Uid typing * Cleanup and support parsing Json spec * Revert "Test CI" This reverts commit 4cfe2d955b1b70f2e3d0fd984cfd1e43b23a19a3. * Remove basic block address metadata Look up address using UID * Fix review comments and add entry_uid to function spec * Keep track of UID to CodeBlock mapping Useful for getting CodeBlock function addresses without a tracked function * point to compatible irene --------- Co-authored-by: 2over12 <ian.smith@trailofbits.com>

Commit:e04ff9d
Author:2over12
Committer:GitHub

Ian/allow for typehints in spec (#390) * add support for type hints after instructions * fix annotations to use intrinsics * remove spurious header * remove unrequired import * remove unused import

Commit:c10af58
Author:2over12

add support for type hints after instructions

Commit:0a9dd3f
Author:Francesco Bertolaccini
Committer:GitHub

Add `required_globals` to spec (#386) * Add `required_globals` to spec * Make `required_globals` a set

Commit:f213954
Author:Francesco Bertolaccini

Add `required_globals` to spec

Commit:09cef2b
Author:William Tan
Committer:GitHub

Add image base spec (#379) * add image base to spec * add image name to spec * add image base/name to anvill spec * use std::uint64_t * Use const ref where appropriate * fix dcheck * maintain backwards compat --------- Co-authored-by: Alex Cameron <asc@tetsuo.sh> Co-authored-by: 2over12 <ian.smith@trailofbits.com>

Commit:9f5518c
Author:Francesco Bertolaccini
Committer:GitHub

Split symvals into equalities at entry and exit (#375) * Split symvals into equalities at entry and exit * Ignore assignments active at entry and exit * Factor out some code * More refactoring * Only pack live values at exit if not constant --------- Co-authored-by: 2over12 <ian.smith@trailofbits.com>

Commit:d709d4d
Author:Francesco Bertolaccini

Split symvals into equalities at entry and exit

Commit:df58f86
Author:Francesco Bertolaccini
Committer:GitHub

Tail call control flow (#364) * Always pass all stack vars and regs to bb funcs * Read used registers from spec * Port commit from old PR * Fix ownership bug * Tail call by passing all the arguments * Fix compile error * Fix empty basic block function declarations * Use locally allocated storage for next_pc * Optimize after removing intrinsics to improve control flow * Lift function returns to native returns * look at all in scope vars at once * filter through all variables * only recover references for variables in scope in the block * add back permissiveness related to lives * Remove unused parameter * Remove unused passes * Use named constants for argument indices * Bump anvill to C++20 * Use default comparison when searching parameters * create empty decls as needed for bad edges * remove stale test script * Don't share basic blocks between functions * Relax type spec comparison --------- Co-authored-by: 2over12 <ian.smith@trailofbits.com>

Commit:7197615
Author:2over12
Committer:GitHub

Rework load lifted value and store native to operate over composite low level storage (#356) * hacky compiles * links * casts * first kinda working version * keep around entities * dont try to lift null return * add check * remove spurious check * bump remill * dont let passbuilder use default lib info

Commit:8231977
Author:2over12

casts

Commit:4e00513
Author:2over12

hacky compiles

Commit:7d84a1c
Author:2over12
Committer:GitHub

Respect taint pc flag when lifting constant symvals (#355) * update format * adapt types

Commit:bb63282
Author:2over12

adapt types

Commit:d976a2e
Author:2over12

update format

Commit:3531c89
Author:2over12

continue refactor

Commit:a47dcf4
Author:2over12

fixup proto

Commit:e2c55bc
Author:2over12
Committer:2over12

rework representation of parameters to decouple names from locations

Commit:491541b
Author:William Tan
Committer:GitHub

Update CI (#345) * update path in script * update ignore list * run on large runner * Remove `LLVM_VERSION` compatibility checks for LLVM < 15 * Remove references to LLVM 14 in README and scripts * update macos version in matrix * Revert "update macos version in matrix" This reverts commit a19dd6713539fcbe75f9e15bf4cddd8d12964020. * bump anvill ci tools, add languageid overrides * handle created block with no terminator * add error for undecodeable instructions * bump java version * upload error logs on CI failure * tar + compress logs first * enable all ppc binaries except for challenge 10 * bump remill to fix infinite loop * more aggressively fix up terminators * prevent underflow and add parameter offset * handle cdi bugs by assuming the max depth is the stack depth * bump testing tool --------- Co-authored-by: Alex Cameron <asc@tetsuo.sh> Co-authored-by: 2over12 <ian.smith@trailofbits.com>

Commit:02c8766
Author:Alex Cameron
Committer:GitHub

PowerPC Support (#340) * PowerPC Support * Add PowerPC architecture to Protobuf specification * Pin Remill submodule to PPC branch * Fix inconsistency with mismatching address and PC reg size * Add PPC case to util functions * More address size fixes * Another address type fix * Log decoding error message * bump remill * bump cxx-common, drop llvm 14, bump mac runner * Bump Remill * Use `auto` where appropriate Co-authored-by: lkorenc <lukas.korencik@trailofbits.com> * Remove unused `injected_sret` * Use type aliases for function types * update deprecated CI * remove binja from ci * update path in script * lifting tools updates * update ignore list * run on large runner * update gh actions * Revert "update path in script" This reverts commit b51e67664e1a5bd427819bf5230c5cbdc155c35a. * Revert "lifting tools updates" This reverts commit 420546089b73ee5a58b27ef0d56a8183596a9c8b. * ABI fixes and comments * Bump Remill * Rename since EABI is based off SysV * Pin Remill to master * ignore go tests * upload error logs on CI failure * tar + compress logs first * enable globbing * fix shell syntax * reduce cores so build is less likely to race * decouple requirements from matrix name * bump lifting-tools-ci * remove ignore for ppc * fix missing comma * add language overrides * ignore hidden files --------- Co-authored-by: William Tan <1284324+Ninja3047@users.noreply.github.com> Co-authored-by: lkorenc <lukas.korencik@trailofbits.com> Co-authored-by: 2over12 <ian.smith@trailofbits.com>

Commit:58224b7
Author:2over12
Committer:GitHub

Fix CI Build (#343) * switch to rustup * add cargo path * fix typo * switch remill submod * fix pass tests * use gh action * only warn when missing reg * allow for missing registers in affine eqs * log as error * Fix errors when decoding opaque pointer specs * Fix macos build * more robustness * add pointer displacements * hacky solution for dynamic use of stack * actually do the replacement when cast to int * get max stack depth from ghidra * fix assert to allow for max depth * fix insert point for casts * bump to remill version that allows additional parameters by default * escape anvill_sp if a stack reference isnt recoverable --------- Co-authored-by: Francesco Bertolaccini <francesco.bertolaccini@trailofbits.com>

Commit:3fc6a17
Author:2over12

get max stack depth from ghidra

Commit:c8eb140
Author:2over12

add pointer displacements

Commit:1df0ee5
Author:2over12
Committer:GitHub

refactor to lift all live variables (#341) * refactor to lift all live variables * implement shared liveness utilities * convert bytes to bits... * insert into right vector

Commit:38656b5
Author:2over12

refactor to lift all live variables

Commit:e26c58e
Author:2over12

add liveness to spec

Commit:5daa0f3
Author:2over12

add frame size

Commit:d90e942
Author:2over12
Committer:2over12

fix thumb mode

Commit:7cd6bcd
Author:2over12

update spec

Commit:c5a37b4
Author:2over12

add contexts

Commit:13cf91b
Author:Francesco Bertolaccini
Committer:Francesco Bertolaccini

Parse local variable decls

Commit:998acf0
Author:Francesco Bertolaccini
Committer:2over12

Use per-block context assignments

Commit:f702e7c
Author:2over12
Committer:2over12

first lift of a func

Commit:7f309bc
Author:Francesco Bertolaccini
Committer:GitHub

Migrate to new spec format (#328) * Add new spec proto * New type spec * Remove `anvill-specify-bitcode` * Begin parsing stuff, everything is still a mess * Fix `anvill-decompile` * Add constructors for type specs to fix `make_shared` calls * Get things compiling. Now just a linker error to resolve. * Get things linking * Remove JSON module * Fill in a few Protobuf translator methods * Parse values, global variables * Parse control flow overrides * Get default callable decl spec files working * Update to latest spec format * Update spec * Begin rewriting `FunctionLifter` * Fix spec * Restore call redirections * Lift tailcalls * Update spec * Add `return_stack_pointer` * Fix target address in calls * WIP: parse recursive types * Store aliased types into the type map * Check for UINT32_MAX sized unknown types * Don't let Misc overrides displace calls as was happening in challenge 7 * Check that we're not displacing control overrides * add function linkage field * update decl fields * add param splitting to have hacky support for structures for now * print error * revert splitting anvill side * remove compiler used (#331) * implement callsites in pb * dont delete decls too early * keep used in favor of rellic fix * add folding of constant loads * add option to keep anvill pc * Update Dockerfile to not use Binja * Fixed type spec tests for Ghidra * Remove tests referencing JSON things * Disable lifting-tools-ci for now * submodule fix attempt * Do not run angha tests that currently need binja * pass down ghidra install dir * reenable amp integration tests * install ghidra in CI * handle indirect jump to return overrides * add comment explaining that we should unify how we handle overrides * add deps for running CI integration tests * fix indentation error * double timeout for now * install rust * run noninteractive * fix command line arg * third times the charm * short arg * try to fix env * install rust with action * try apt * -y * add ssh client * use checkout for irene3 * fix paths * fix typo * add just to path * bash shell * install java CI * move ghidra install to correct place * switch to ghidra invocation of test challenge bins * Remove unused enum * update readme * remove binja install * change build for anvill decompile to decompile-spec * change decompile name * bump lifting-tools ci * remove stale reference to deb * update more decompile names * change cmd Co-authored-by: Alex Cameron <asc@tetsuo.sh> Co-authored-by: 2over12 <ian.smith@trailofbits.com> Co-authored-by: Artem Dinaburg <artem@trailofbits.com>

The documentation is generated from this commit.

Commit:0d8c700
Author:2over12

implement callsites in pb

The documentation is generated from this commit.

Commit:dadffa0
Author:2over12

add function linkage field

Commit:90c8ba6
Author:Francesco Bertolaccini

WIP: parse recursive types

Commit:bd0b734
Author:Alex Cameron

Add `return_stack_pointer`

Commit:5c2513d
Author:Francesco Bertolaccini

Update spec

Commit:23dbdbd
Author:Francesco Bertolaccini

Fix spec

Commit:ff8200b
Author:Francesco Bertolaccini

Update spec

Commit:686081d
Author:Francesco Bertolaccini

Update to latest spec format

Commit:2e6163d
Author:Francesco Bertolaccini

Parse values, global variables

Commit:ed86106
Author:Alex Cameron

Fill in a few Protobuf translator methods

Commit:0399730
Author:Francesco Bertolaccini

Add new spec proto