Metadata-Version: 2.2
Name: loci-service-asmslicer
Version: 1.0.10
Summary: LOCI static analysis service
Requires-Python: >=3.12
Requires-Dist: angr>=9.2.182
Requires-Dist: beautifultable>=1.1.0
Requires-Dist: boto3>=1.40.60
Requires-Dist: capstone>=5.0.3
Requires-Dist: cxxfilt>=0.3.0
Requires-Dist: levenshtein>=0.27.3
Requires-Dist: lief>=0.17.1
Requires-Dist: lxml>=6.0.2
Requires-Dist: networkx>=3.5
Requires-Dist: pandas>=2.3.3
Requires-Dist: pyelftools>=0.32
Requires-Dist: pyyaml>=6.0.3
Requires-Dist: s3fs>=2025.10.0
Requires-Dist: smart-open[s3]>=7.5.0
Requires-Dist: xxhash>=3.6.0
Description-Content-Type: text/markdown

# asmslicer #

### What is this repository for? ###

* This repository provides LOCI static analysis service.
* Static analysis service performs slicing of ELF files into:
  * ASM basic blocks, including CFG info.
  * Callgraph between functions.
  * Symbol information.

### How do I get set up? ###

* asmslicer project is using uv for Python project and dependency management.
* To setup development environment you need to have [uv](https://docs.astral.sh/uv/) installed.

#### External Dependencies

The following system tools are required for full functionality:
* `file` - for ELF file detection
* `binutils` - provides `c++filt` for C++ symbol demangling
* `llvm-18` - provides `llvm-ifs-18` for interface stub generation
* `rustfilt` - for Rust symbol demangling

On Debian/Ubuntu:
```
sudo apt-get update && sudo apt-get install file binutils rustfilt
wget -qO- https://apt.llvm.org/llvm.sh | sudo bash -s -- 18
```

For CUDA binary analysis (optional):
```
# Requires NVIDIA CUDA toolkit
sudo apt-get install cuda-cuxxfilt-13-0 cuda-cuobjdump-13-0 cuda-nvdisasm-13-0
```

* Then you can configure venv using uv:
```
uv venv
source .venv/bin/activate
uv sync
```
* Once the venv is setup you can run the service locally for test:
```
loci-service-asmslicer
```
* Docker container image can alo be built in a standard way:
```
docker build -t loci-platform/loci-service-static-analysis .
```

### Contribution guidelines ###

* The project used main branch for active development.
* Changes are merged by creating a pull request targeting main branch.
* Merging to main branch automatically triggers build pipeline which deploys the Docker container to AWS ECR latest tag.
* Creating a tag with release number with x.y.z version number, triggers a pipeline build which deploys the Docker container to AWS ECR x.y.z tag.

### Who do I talk to? ###

* Repo owner or admin
* Other team contact
