[Android Software/Hacking General [Developers Only]] steadfasterX:
FIsH a la carte - A porting guide for the FIsH framework.

Proudly introducing Android FIsH: Fluffy Incredible steadfasterX Hijack

FIsH: Fluffy Incredible steadfasterX Hijack​

First of all:

All this is for the brain of DEVELOPERS.

Well.. to be more specific: not really for developers but for

COMPILERS

;)

For using FIsH You do NOT need to DEVELOP anything - normally - the only thing you should be able to do is COMPILING -> e.g. TWRP.

If you have the knowledge to compile TWRP then FIsH is what you need to bring it on your

locked

device.

Just follow the menu card in the post #3 "Bring FIsH on the menu card" and your job is done.

If you are a user wanting to have FIsH for your device:

FIND A COMPILER

;) (a person who is able to compile TWRP/ROMs/.. for your device!!).

DO

NOT

ASK IF I CAN PORT FIsH TO YOUR DEVICE!

DO

NOT

ASK IF I CAN COMPILE [FILL IN WHATEVER YOU WANT] FOR YOU!

-> instead find a person willing to port FIsH plus the ramdisk of your choice (e.g. TWRP) and

point him/her here

.

When do you feel like a compiler or u want to be one: read on

if not: really still here? I said find a compiler!

Table of content

This whole thing here is

damn

long.. but that's one of the major difference for the FIsH: I try to explain what I do ;)

For a better handling I splitted the guide into several parts:

This post: Explain me the FIsH (What it is)

Post #2: FIsH bowels (What's inside)

Post #3: Bring FIsH on the menu card (porting FIsH)

Post #4: FIsH cuisine (examples)

Post #5: FIsH hydra (multiboot in FIsH)

Post #6: Chew the FIsH (Copying/License)

Post #6: FIsH mutation history (Changelog)

Post #7: Go FIsHing (enduser installation guide example)

Overview

You can not unlock your bootloader? So now it's all over right?

TWRP and flashing custom ROMs on locked devices is impossible right?

Oh no wait there are hacks (up to KK) which have a workaround for this but I couldn't find anything for LL (sorry if I missed something) and what I found was not easy to port so nothing generic which i could just adapt easily.

Here is where the Android FIsH (refered to just FIsH in this whole doc) steps in ;)

FIsH means: [F]luffy ncredible teadfasterX [H]ijack

FIsH is different from Safestrap or other hijacks because it should be better understood as a kind of framework for any ramdisk image you want to load.

FIsH will not harm the Android boot chain! Means it will not modify /boot, /recovery or aboot partitions. It will just modify /system.

FIsH:

... is NOT MultiROM (see post #5: FIsH hydra)

... is NOT efidroid (see post #5: FIsH hydra)

... is NOT Safestrap

... is NOT TWRP (booting with FIsH is tested and works)

... does NOT root your phone

... does NOT unlock your phone

... is a WORK IN PROGRESS!

... but FIsH could (in theory) "BOOT" any of the above!

U got it? FIsH is the hack to boot whatever you want.

This also means atm it is tested on

some

devices only and the only FIsHFOOD (ramdisk) FULLY tested and so stated to be working is TWRP.

Nevertheless I'm hard working currently on porting either MultiROM-in-FIsH or efidroid-in-FIsH to bring custom ROMs to locked devices as well (see post #5: FIsH hydra).

What the FIsH is (in short words)

Read about the

full

details of the implementation of FIsH in the next post (Post #2: FIsH bowels (What's inside)) but to give you a short overview:

FIsH is a boot hijack and wants to be a FRAMEWORK for booting any fishfood (ramdisk) you like.

FIsH is portable to other devices

FIsH gives you all possibilities to make the most of your device by letting you boot whatever you like

FIsH will not provide or contain any ROM or recovery by it's own - THATS YOUR HOLY OWN JOB NOW!

FIsH is the tool -> but building a ROM or recovery is (still) up to you.

These questions may come up in your mind now

Will FIsH void your warranty? Not more or less then rooting your device.

Will FIsH unlock your bootloader? omg NO! read it again!

Is there a risk with FIsH? For example could it soft-brick my device? Well.. absolutely! Safe is the death only. There are always risks especially for untested devices. I do all I can to keep this risk as low as possible and I provided a way to get out of bootloops but again you will get no guarantees here and elsewhere.

Will it work on Android version ICS, KK, LL, MM, N, O, ....? Check the pre-requirements. If you can answer them with yes it should work. If not then not. That easy.

Will I need a recovery partition to use FIsH? No. FIsH ran in RAM only. Even if your device does not have a recovery partition it will work.

Will FIsH work for my device? FIsH is more than just a hack for a special device or model it is a hack for ALL devices of ANY vendor! wtf? yes. Your FISHFOOD is device specific so the question would be better: Will the FISHFOOD (e.g. TWRP) work on my device? The answer is it depends. You need to compile it for your specific device and it should but who knows.

To narrow it a little more down:

you have to met the pre-requirements

and there has to be done some things to get a value out of it but those are straight forward for a good compiler/developer like you! :D

FIsH pre-requirements

Here are the pre-requirements you have to met!

If you can't get them:

Close this page and FORGET it (until the day you met those reqs)!

Here are the 2 simple requirements you have to met:

a) root by SuperSU >=v2.76 (greater or equal v2.76)

--> to test this requirement just start the installer of FIsH with --check (see next lines) which will check for all requirements and abort if its not possible

--> for many devices - if not all - this means you HAVE TO downgrade/install LL. It also means that you have to upgrade your SuperSU to this version by e.g. FlashFire if you have a lower version installed!

--> SU by phh is NOT supported => It needs a modified /boot and this would void the boot signing chain!

--> Magisk is NOT supported => It needs a modified /boot and this would void the boot signing chain!

--> I will NOT provide downgrading guides there are plenty of them so search and read.

--> I will NOT provide any guides in rooting your device

--> Before you think about downgrading to LL read about ANTI-ROLLBACK protection some devices and may have! Anti-Rollback means you CAN NOT downgrade - it would HARD-BRICK your device (wtf thinking the vendors who we are?? Is this even legal?!)! Check that before!!

b) you have to be able to disable SELinux in your booted Android

--> You do NOT need to set SELinux permanently to permissive. Just

CHECK

if you

COULD

get it

MANUALLY

. If you can get it OK. If not.. you obviously have not full root access but check the forums maybe there is something you can do about this.

--> I will NOT provide any guides enabling SELinux but some lines later you will see how u can execute the very simple check

--> to test this requirement just start the installer of FIsH with --check (see next lines) which will check for all requirements and abort if its not possible

Those above are hard facts so it may NEVER work with MM. Google has changed the way on how the boot chain will be verified and that means changes in /system will void it from now on.

If MM can get fully rooted somehow/somewhen on your device with SuperSU installed and you are able to disable SELinux the method will work there as well.

If you can not meet ALL of the above 2 requirements lay down and cry.

For the others: calm down and read on!

You can simply test those both requirements by downloading FIsH and execute the installer with the testing parameter:

./install.sh --check

Example output:

The important lines are:

Matching required SuperSU version: XXX

"SELinux mode: Permissive"

If you see "SELinux mode: Enforcing" or any error messages you may doing something wrong or it just do not work for you.

Limitations!

Keep in mind what I said above: FIsH does

NOT

unlock your bootloader!

That means with FIsH itself you can NOT "install" anything. FIsH actually is the FRAMEWORK(!) for the FIsHFOOD (ramdisk) you want to load.

One good example is TWRP. This can be loaded even on devices do

not

having a recovery partition (I believe Sony is one of those).

Let's stay by the example of TWRP.

Keep in mind that when you use FIsH to provide TWRP you can NOT

Install a custom ROM like CM/Lineage (this will modify boot = SOFT-BRICK. for this u would need efidroid or multirom as FIsHFOOD)

Install a custom Kernel (this will modify boot = SOFT-BRICK)

Install a custom recovery (this will modify recovery =may SOFT-BRICK)

In short: do nothing which modifies boot or recovery partitions. Those changes will break your boot signing chain.

You can of course flash everything which is modifying /system /data only (e.g. xposed, Audio mods, etc...)

You're able to backup and restore as well of course and doing any other modifications which you may can't while the Android system is running.

Download

You will get the most current downloads at github but I uploaded all stable releases here at XDA as well to mirror them.

Latest stable (well tested and so hopefully fewest bugs):

Download latest release at github (click)

Mirror / older stable versions:

DOWNLOAD-TAB (click)

Next stable (

lesser

chances of issues but may still not released yet):

github master branch

LIVE/FRESHEST code u can get (high chances of failures, bugs, unexpected behavior - but the latest and greatest features/bugfixes):

github develop branch

FIsH helpers

If you want to reboot directly to an implemented version of FIsH from within Android check out this:

Thanks to @sdembiske who has onboarded the developer @AntaresOne we have an option to reboot into FIsH very comfortable now!

Check it out here: QuickReboot App

Support / IRC Channel

(DEVS/COMPILERS ONLY -

NO

ENDUSER SUPPORT!)

IRC means Internet Relay Chat and you will get best support here only.

This channel mentioned here is NOT an ENDUSER channel!!

It is for developers and compilers only!)

Endusers should use: #Carbon-user instead !

Choose how to get in:

PC (HexChat and Pidgin are only 2 of them! This list is not complete!)

Android (Yaaic, AndChat, HoloIRC, AndroIRC are only a few of them! This list is not complete!)

Web (KiwiIRC-Web,FreenodeWebchat])

When you have to choose a channel it is: #Carbon-Fusion (this is NOT an ENDUSER channel!! It is for developers and compilers only!)

Endusers should use: #Carbon-user instead !

When you be asked for a server network choose: freenode

Credits (without them - no FIsH!!!)

If you feel that someone / you is missing on this list lemme know!

Chainfire for SuperSU! This is the main part of FIsH.

TeamWin for TWRP

@cray_Doze, @dssmex, @Aaahh and @KeiranFTW for their hijack implementations (e.g. https://xdaforums.com/showthread.php?t=2608408, first steps to a G4 hijack)

@dibbled for creating the android FIsH logo :)

steadfasterX for the android FIsH ! ;)

Famous last words

You may say: When this will work for up to LL only.. Why the hell are u releasing this now? We just see the upcoming Android O and you talk about LL? Well.. This whole thing is just a fun project. I want to learn and I want to give back something which helps others.

So at the end.. If u don't like.. its ok. If you don't need it.. ok. If you can't get any value out of it.. ok..

But maybe it helps others out there instead.

So if you're still not scared and want to continue.. what u r waiting for?? ;)

XDA:DevDB Information

android FIsH, Tool/Utility for all devices (see above for details)

Contributors

steadfasterX, BigCountry907, Rees86

Source Code: https://github.com/Carbon-Fusion/android_FIsH

Version Information

Status: Stable

Current Stable Version: v3.0

Stable Release Date: 2017-06-14

Created 2017-03-24

Last Updated 2017-09-11