Skip to content
Snippets Groups Projects
README.md 2.47 KiB
Newer Older
# Zipr via Docker 

Run our docker image by [installing Docker](https://docs.docker.com/get-docker/), then running:

```
docker run -it git.zephyr-software.com:4567/opensrc/zipr/zipr-bin
```

The image will prompt you how to proceed.  To learn how to invoke and use Zipr transforms, see the [IRDB Cookbook Examples repository](https://git.zephyr-software.com/opensrc/irdb-cookbook-examples) section on using [transforms in Docker](https://git.zephyr-software.com/opensrc/irdb-cookbook-examples#docker-recommended).

# Building Zipr/Peasoup

The instructions that follow assume that:

* you have access to both the Zipr repo
* you have sudo privileges
* you are installing in your home directory
* you are using a recent version of Linux, e.g., Ubuntu 18.04


First install the Zipr static binary rewriting infrastructure
```
Jason Hiser's avatar
Jason Hiser committed
git clone --recurse-submodules  https://git.zephyr-software.com/opensrc/zipr.git # or git@git.zephyr-software.com:opensrc/zipr.git
cd zipr
. set_env_vars
./get-peasoup-packages.sh all
scons -j3
```

Carefully watch the `get-peasoup-packages` command for errors.  
It leverages' Ubuntu's `apt` or CentOS' `yum` commands to install packages.
All packages should be in standard repositiories, but your local configuration may
need to be adjusted if it doesn't work by default.

# Preparing Zipr for Use (Setting up local postgres tables)

Jason Hiser's avatar
Jason Hiser committed
Next we need to setup the proper tables in a local copy of the postgres database.  In the `zipr` directory, run:
```
./postgres_setup.sh
```

If all goes well with the postgres setup, you should be able to login into the database by typing: psql
The output of psql should look something like this:
```
psql (9.3.22)
SSL connection (cipher: DHE-RSA-AES256-GCM-SHA384, bits: 256)
Type "help" for help.

peasoup_XXX=> 
```

# Testing Zipr

Test the binary rewriting infrastructure by rewriting /bin/ls
```
cd /tmp
$PSZ /bin/ls ls.zipr -c rida
```
Your terminal's output should look like this:
```
Using Zipr backend.
Detected ELF shared object.
Performing step rida [dependencies=mandatory] ...Done.  Successful.
Performing step pdb_register [dependencies=mandatory] ...Done.  Successful.
Performing step fill_in_cfg [dependencies=unknown] ...Done.  Successful.
Performing step fill_in_indtargs [dependencies=unknown] ...Done.  Successful.
Performing step fix_calls [dependencies=unknown] ...Done.  Successful.
Performing step zipr [dependencies=none] ...Done.  Successful.
```

Invoke the rewritten version of /bin/ls and make sure it runs normally:
```
./ls.zipr
```