Skip to content
Snippets Groups Projects
Commit cd859152 authored by Jason Hiser's avatar Jason Hiser :tractor:
Browse files

cross-arch Zipr stuff.

parent fad142b1
No related branches found
No related tags found
No related merge requests found
Pipeline #25282 passed
......@@ -89,7 +89,31 @@ $ cd /path/to/zipr
$ scons
```
The `$PSZ` script uses IDA pro by default if it is setup properly. You'll see the `meds-static` step replace the `rida` step.
The `$PSZ` script uses IDA Pro by default if it is setup properly. You'll see the `meds-static` step replace the `rida` step.
If this step fails, make sure that IDA Pro is installed properly, and that you have started IDA Pro's GUI to accept the license agreement.
The cookbook and other tools may use `pszr` to invoke zipr. This command means "invoke Zipr with Rida" as the front end, or `$PSZ -c rida`. If you've using `pszr` and wish to change
to IDA, just switch to `$PSZ`.
# Zipr and non-X86 Architectures.
Zipr's origins are in the X86 world, and thus most of the scripts, examples, etc. implicitly assume X86 code.
However, Zipr has at least some support for ARM32/64, MIPS32/64 and X86 32/64.
Zipr _can_ run on ARM box, but has never been tested/built on a MIPS box.
To make Zipr work on non-x86 binaries, you'll need to have completed these steps:
* Built Zipr with IDA Pro support (ensure IDAROOT and IDASDK are set when running zipr).
* Install core-utils and gcc for cross compilation. For arm32 and arm64, you can use `sudo apt install binutils-aarch64-linux-gnu gcc-aarch64-linux-gnu`
* Set the environment variables to specify that Zipr should use the cross-compilation tools. In particular, set `PS_OBJDUMP`, `PS_READELF`, `PS_GCC`, `PS_OBJCOPY`, `PS_NM`, `PS_STRIP`.
For example, to use Zipr for the ARM architecture (32 or 64-bit) set `export PS_GCC=aarch64-linux-gnu-gcc` (and the other environment variables).
This can be simplified with the `set-cross.sh` script by invoking it like so: `source set-cross.sh arm32` (or, substitute arm64, mips32,or mips64.)
## Windows
Zipr (running on x86-64/linux) can possibly transform PE/PE+ files for Windows. Support is _very_ preliminary. Your mileage may vary.
Zipr has never been built to run on a Windows machine.
#!/bin/sh
main()
{
local prefix=""
if [[ $1 == "arm64" ]]; then
prefix=aarch64-linux-gnu
elif [[ $1 == "arm32" ]]; then
prefix=arm-linux-gnueabi
else
echo "Cannot find architecture $1"
echo "use source '$0 <arch>' after running set_env_vars"
fi
export PS_OBJDUMP=$(which -- $prefix-objdump)
export PS_READELF=$(which -- $prefix-readelf)
export PS_GCC=$(which -- $prefix-gcc)
export PS_OBJCOPY=$(which -- $prefix-objcopy)
export PS_NM=$(which -- $prefix-nm)
export PS_STRIP=$(which -- $prefix-strip)
}
main "$@"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment