Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[submodule "haystack"]
path = haystack
url = https://github.com/Lanchon/haystack
[submodule "simple-deodexer"]
path = simple-deodexer
url = https://github.com/aureljared/simple-deodexer
[submodule "vdexExtractor"]
path = vdexExtractor
url = https://github.com/anestisb/vdexExtractor
12 changes: 8 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
FROM openjdk
FROM openjdk:8-slim

RUN apt update && apt -y install git rsync zip libc++-dev
RUN git clone https://github.com/Lanchon/haystack
RUN git clone https://github.com/aureljared/simple-deodexer
RUN apt update && apt -y install git rsync zip libc++-dev squashfs-tools make gcc zlib1g-dev

WORKDIR /
COPY haystack /haystack
COPY simple-deodexer /simple-deodexer
COPY vdexExtractor /vdexExtractor
RUN cd /vdexExtractor && ./make.sh

ADD *.sh ./

Expand Down
33 changes: 30 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@ Please note that Rsync is run in completely insecure manner, so don't leave it r

Overview of the steps performed by the scripts:
* fetch via rsync `/opt/alien/system/{framework,app,priv-app}`
* deodex using [simple-deodexer](https://github.com/aureljared/simple-deodexer)
* deodex using [simple-deodexer](https://github.com/aureljared/simple-deodexer) on non LXC system (android 4.4)
* deodex using [vdexExtractor](https://github.com/anestisb/vdexExtractor) on LXC system (android 8.1)
* apply `hook` and `core` patches from [haystack](https://github.com/Lanchon/haystack)
* push back changed files, saving backups in `/opt/alien/system/{framework,app,priv-app}.pre_haystack`
* push back changed files, saving backups in `/opt/alien/system/{framework,app,priv-app}.pre_haystack` (nonLXC/android 4.4) or `/opt/alien/system.img.pre.haystack` (LXC/android 8.1)

Instructions
===
Expand All @@ -36,6 +37,11 @@ cat > /root/rsyncd-alien.conf << 'EOF'
EOF
```

* make sure your firewall accepts connections on port 873
```bash
iptables -A connman-INPUT -i wlan0 -p tcp -m tcp --dport 873 -j ACCEPT
```

* run daemon in foreground with logging

```bash
Expand All @@ -50,8 +56,18 @@ Make sure docker is available on you machine and running
* https://www.docker.com/docker-windows
* https://www.docker.com/docker-mac

Make sure you checked out all the code from the gut submodules, e.g.:

```bash
docker build -t haystack . && docker run --rm -ti --env SAILFISH=<PHONE_IP_ADDRESS> haystack
git submodule update --init --recursive
```

Make sure to pass `--env SAILFISH=` with the IP of the phone

Make sure to pass `--env LXC=0` or `--env LXC=1` to choose between android 4.4 (non LXC) and android 8.1 (LXC)

```bash
docker build -t haystack . && docker run --rm -ti --env SAILFISH=<PHONE_IP_ADDRESS> --env LXC=0/1 haystack
```

**Final steps**
Expand All @@ -75,4 +91,15 @@ cp -r --reply=yes -v app.pre_haystack/* app/
cp -r --reply=yes -v priv-app.pre_haystack/* priv-app/
```

**Reverting the changes (Specific to the XA2)**
===
* Stop Android Support
* SSH into your device
```bash
devel-su
cd /opt/alien/
mv system.img.pre_haystack system.img
```
* Start Android Support


1 change: 1 addition & 0 deletions haystack
Submodule haystack added at 4530d4
98 changes: 78 additions & 20 deletions run.sh
Original file line number Diff line number Diff line change
@@ -1,34 +1,92 @@
#!/bin/bash

test -z LXC && LXC=0

set -e
SYSTEM_PATH=system
API_VERSION=19

echo [**] 1. Fetch files via RSYNC
rsync -va --delete \
rsync://${SAILFISH}/alien/${SYSTEM_PATH}/framework \
rsync://${SAILFISH}/alien/${SYSTEM_PATH}/app \
rsync://${SAILFISH}/alien/${SYSTEM_PATH}/priv-app \
sailfish
if [ "${LXC}" -eq 1 ]; then
echo [**] 1. Fetch files via RSYNC
rsync -va \
rsync://${SAILFISH}/alien/system.img \
/tmp/system.img

echo [**] 1.1 unpack the squashfs
cd /tmp && unsquashfs system.img

echo [**] 1.2 get files to patch
mkdir /sailfish
rsync -va /tmp/squashfs-root/${SYSTEM_PATH}/{framework,app,priv-app} \
/sailfish

else
echo [**] 1. Fetch files via RSYNC
rsync -va --delete \
rsync://${SAILFISH}/alien/${SYSTEM_PATH}/framework \
rsync://${SAILFISH}/alien/${SYSTEM_PATH}/app \
rsync://${SAILFISH}/alien/${SYSTEM_PATH}/priv-app \
sailfish
fi

echo [**] 2. Deodex the files
/simple-deodexer/deodex.sh -l ${API_VERSION} -d /sailfish
if [ "${LXC}" -eq 1 ]; then
echo [**] 2. Deodex the vdex and dex files
cd /vdexExtractor/bin && ./vdexExtractor -i /sailfish --ignore-crc-error
echo [**] 2. add classes.dex to services.jar
cp /sailfish/framework/oat/arm/services_classes.dex /tmp/classes.dex
zip -j /sailfish/framework/services.jar /tmp/classes.dex
else
API_VERSION=19
echo [**] 2. Deodex the files
/simple-deodexer/deodex.sh -l ${API_VERSION} -d /sailfish
fi

echo [**] 3. Apply the patch
/haystack/patch-fileset /haystack/patches/sigspoof-hook-4.1-6.0 ${API_VERSION} /sailfish/framework /hook
if [ "${LXC}" -eq 1 ]; then
API_VERSION=27
rm -rf /hook
/haystack/patch-fileset /haystack/patches/sigspoof-hook-7.0-9.0 ${API_VERSION} /sailfish/framework /hook
rm -rf /hook_core

else
/haystack/patch-fileset /haystack/patches/sigspoof-hook-4.1-6.0 ${API_VERSION} /sailfish/framework /hook
fi
/haystack/patch-fileset /haystack/patches/sigspoof-core ${API_VERSION} /hook /hook_core

echo [**] 4. Merge back the results
mv -v /hook_core/* /sailfish/framework/

echo [**] 5. Upload results back
rsync -va --delete-after -b --backup-dir=../framework.pre_haystack \
/sailfish/framework/ \
rsync://${SAILFISH}/alien/${SYSTEM_PATH}/framework

rsync -va --delete-after -b --backup-dir=../app.pre_haystack \
/sailfish/app/ \
rsync://${SAILFISH}/alien/${SYSTEM_PATH}/app
if [ "${LXC}" -eq 1 ]; then
echo [**] 5.1 Merge results back
rsync -va \
/sailfish/framework/ \
/tmp/squashfs-root/${SYSTEM_PATH}/framework/
# rsync -va \
# /sailfish/app/ \
# /tmp/squashfs-root/${SYSTEM_PATH}/app/
# rsync -va \
# /sailfish/priv-app/ \
# /tmp/squashfs-root/${SYSTEM_PATH}/priv-app/

echo [**] 5.2 rebuild squashfs
cd /tmp && mksquashfs squashfs-root system.img.haystack -comp lz4 -Xhc -noappend -no-exports -no-duplicates -no-fragments

echo [**] 5. Upload results back
rsync -va --delete-after -b --suffix=".pre_haystack" \
/tmp/system.img.haystack \
rsync://${SAILFISH}/alien/system.img

rsync -va --delete-after -b --backup-dir=../priv-app.pre_haystack \
/sailfish/priv-app/ \
rsync://${SAILFISH}/alien/${SYSTEM_PATH}/priv-app
else
echo [**] 5. Upload results back
rsync -va --delete-after -b --backup-dir=../framework.pre_haystack \
/sailfish/framework/ \
rsync://${SAILFISH}/alien/${SYSTEM_PATH}/framework

rsync -va --delete-after -b --backup-dir=../app.pre_haystack \
/sailfish/app/ \
rsync://${SAILFISH}/alien/${SYSTEM_PATH}/app

rsync -va --delete-after -b --backup-dir=../priv-app.pre_haystack \
/sailfish/priv-app/ \
rsync://${SAILFISH}/alien/${SYSTEM_PATH}/priv-app
fi
1 change: 1 addition & 0 deletions simple-deodexer
Submodule simple-deodexer added at 7d0152
1 change: 1 addition & 0 deletions vdexExtractor
Submodule vdexExtractor added at f66057