[GUIDE] How to extract, create or edit android adb backups

Search This thread

scandiun

Senior Member
Jul 12, 2010
1,903
983
Does adb backup backup data for apps that Helium won't, or is Helium just adb backup with a pretty GUI? Helium won't backup my data for Signal.

The things that they can backup or can't will be the same because Helium uses adb internally. What it the Play Store link of "Signal"?
 

scandiun

Senior Member
Jul 12, 2010
1,903
983

The AndroidManifest.xml of the apk clearly states that backups are not allowed (adb backup or Helium, it's the same). You can't override this setting with any of those because of security reasons (never allow to backup banking or sensitive data).
You would require root to use Titanium Backup, or use CWM or TWRP, which will allow you a more complete backup depending on the rom and android version.

android:allowBackup="false"
Signal Private Messenger v3.20.4 apk AndroidManifest.xml

You can run the following commands to see it:
Code:
apktool decode SignalPrivateMessenger.apk
I: Using Apktool 2.2.0-dirty on SignalPrivateMessenger.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: /home/dalvik/.local/share/apktool/framework/1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
cat SignalPrivateMessenger/AndroidManifest.xml

More info:
https://ibotpeaches.github.io/Apktool/install/
https://developer.android.com/guide/topics/data/autobackup.html
[Guide] Types of Android backups
 
Last edited:
The AndroidManifest.xml of the apk clearly states that backups are not allowed (adb backup or Helium, it's the same). You can't override this setting with any of those because of security reasons (never allow to backup banking or sensitive data).
You would require root to use Titanium Backup, or use CWM or TWRP, which will allow you a more complete backup depending on the rom and android version.

android:allowBackup="false"
Signal Private Messenger v3.20.4 apk AndroidManifest.xml

You can run the following commands to see it:
Code:
apktool decode SignalPrivateMessenger.apk
I: Using Apktool 2.2.0-dirty on SignalPrivateMessenger.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: /home/dalvik/.local/share/apktool/framework/1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
cat SignalPrivateMessenger/AndroidManifest.xml

More info:
https://ibotpeaches.github.io/Apktool/install/
https://developer.android.com/guide/topics/data/autobackup.html
[Guide] Types of Android backups

Yeah, it's for a t-mobile note 7, and rooting wipes your data, and last I checked there wasn't a CWM or TWRP. Have to poke around on Monday and see if I can dd or something, so I can return the phone on monday. Teach me to put off rooting.
 

scandiun

Senior Member
Jul 12, 2010
1,903
983

scandiun

Senior Member
Jul 12, 2010
1,903
983
  • Like
Reactions: heldc

scandiun

Senior Member
Jul 12, 2010
1,903
983
Yeah, it's for a t-mobile note 7, and rooting wipes your data, and last I checked there wasn't a CWM or TWRP. Have to poke around on Monday and see if I can dd or something, so I can return the phone on monday. Teach me to put off rooting.

Thanks, but that flashes a new firmware, so yeah, it wipes /data. I did that on my first note 7. I really appreciate you looking tho!

Flashing a new firmware does not necessarily wipe data. In fact, I had the Galaxy S2 and the S4 and using CF-root does not delete anything.
 
Flashing a new firmware does not necessarily wipe data. In fact, I had the Galaxy S2 and the S4 and using CF-root does not delete anything.
I don't think chainfire's root was a whole new firmware, but maybe I'm misremembering. But that specific root method *is* a completely new firmware, and it wipes everything. I used it on my first note 7, before the first recall.
Thanks again tho!
 

scandiun

Senior Member
Jul 12, 2010
1,903
983
I don't think chainfire's root was a whole new firmware, but maybe I'm misremembering. But that specific root method *is* a completely new firmware, and it wipes everything. I used it on my first note 7, before the first recall.
Thanks again tho!

Some manufacturers like Sony or LG have their own backup application, if Samsung has it too you can give it a try, but it may be just a variant of adb backup. Check before deleting if it restores properly on another device.

Anyway, I don't understand why you can't backup the messages to unencrypted and restore on another device and encrypt again. Also, you can extract, decompile and recompile the apk once you edit the AndroidManifest.xml, and the app supposedly will work with the backup feature, but requires a little bit of hacking.

I am also curious if this app will be backed up properly on iOS with its data and everything (from my understanding iTunes allows yuu to backup just everything the same exact way you have it). The backup feature on android is pretty incomplete.

In any case, when you want to use the backup feature in the future check that it works as you want it before diving in.

https://www.niih.de/android-allowbackup-false/
 
Last edited:
  • Like
Reactions: heldc
Some manufacturers like Sony or LG have their own backup application, if Samsung has it too you can give it a try, but it may be just a variant of adb backup. Check before deleting if it restores properly on another device.

Anyway, I don't understand why you can't backup the messages to unencrypted and restore on another device and encrypt again. Also, you can extract, decompile and recompile the apk once you edit the AndroidManifest.xml, and the app supposedly will work with the backup feature, but requires a little bit of hacking.

I am also curious if this app will be backed up properly on iOS with its data and everything (from my understanding iTunes allows yuu to backup just everything the same exact way you have it). The backup feature on android is pretty incomplete.

In any case, when you want to use the backup feature in the future check that it works as you want it before diving in.

https://www.niih.de/android-allowbackup-false/
I can't backup unencrypted because I have identifiable third party data, and storing it unencrypted is a violation of professional ethics.

The Samsung and LG backups doesn't transfer it either, I tried.

I'll look into extracting, editing, and recompiling it. If I sideload, maybe it'll accept it as an update and then let the backup work. Thanks!
 

scandiun

Senior Member
Jul 12, 2010
1,903
983
I can't backup unencrypted because I have identifiable third party data, and storing it unencrypted is a violation of professional ethics.

The Samsung and LG backups doesn't transfer it either, I tried.

I'll look into extracting, editing, and recompiling it. If I sideload, maybe it'll accept it as an update and then let the backup work. Thanks!

You can create a VeraCrypt volume on android, and export the plaintext backup to that volume. The veracrypt volume will be encrypted with the password/key of your choice.

In case you want to use Signal, I've modified successfully the AndroidManifest.xml of the apk to allow adb backup. I made an adb backup of org.thoughtcrime.securesms, uninstalled the application and restored the backup to check, and it works. I'll probably make shortly a simple guide about how to edit and recompile an apk. The downside of this, is that you can't overwrite your current installation because the signing key is different, so it will work from the new messages. You can export in plain text to a veracrypt volume, install the patched apk and import again the messages, and then you can use adb backup successfully. You can take screenshots too, but they will be stored first in a different location.

Also, instead of modifying the apk, you can compile directly from source with the AndroidManifest.xml already modified:
https://github.com/WhisperSystems/Signal-Android/wiki/How-to-build-Signal-from-the-sources

Here is EDS (Encrypted Data Store) for android.
 
Last edited:

Dakkaron

Senior Member
Jan 13, 2013
62
19
This is amazing! Thank you, I couldn't have done it otherwise.

I used it to cheat at Disney's Enchanted Tales on my wife's non-rooted phone. No need to pay money for microtransactions anymore.
 
  • Like
Reactions: scandiun

alechef

Member
Oct 21, 2011
43
0
Hi guys, I have a backup made with cwm of my note 1 and backup of viber made with titanium.
I need import on my s6 edge viber chat but I would no root my s6, that it's still under warranty.

All your step by step tutorial is too much high level for my skill.
From what I understood the first part I can jump cause I have tar file made with back up by cwm.
I tried extract with 7z the viber folder, overwrite on s6, but obviously doesn't work.

Can you suggest a simpler way? I tried read many times the tutorial, but it's really difficult for me [emoji30] [emoji30]

Many thanks to all and sorry for my bad English

Ale
 

scandiun

Senior Member
Jul 12, 2010
1,903
983
Hi guys, I have a backup made with cwm of my note 1 and backup of viber made with titanium.
I need import on my s6 edge viber chat but I would no root my s6, that it's still under warranty.

All your step by step tutorial is too much high level for my skill.
From what I understood the first part I can jump cause I have tar file made with back up by cwm.
I tried extract with 7z the viber folder, overwrite on s6, but obviously doesn't work.

Can you suggest a simpler way? I tried read many times the tutorial, but it's really difficult for me [emoji30] [emoji30]

Many thanks to all and sorry for my bad English

Ale
Without root you can't restore those files. You should have used adb backup for that purpose and check that the restore works properly before wiping the old device.
 

alechef

Member
Oct 21, 2011
43
0
Without root you can't restore those files. You should have used adb backup for that purpose and check that the restore works properly before wiping the old device.
Thanks for your answer.
You mean that the backup I did on my death note 1 is different from the one I could do with adb?
I would like avoid root my s6 edge still in warranty only to restore viber msg.
I hope I have other solutions [emoji30]

Thanks
Ale
 

scandiun

Senior Member
Jul 12, 2010
1,903
983
Thanks for your answer.
You mean that the backup I did on my death note 1 is different from the one I could do with adb?
I would like avoid root my s6 edge still in warranty only to restore viber msg.
I hope I have other solutions [emoji30]

Thanks
Ale

adb backup and cwm are totally different backup methods and not compatible. I don't know how you can convert one to another but surely it's very difficult. CWM and TWRP always require that origin and destination phones are rooted.
 

Marmalize

Member
Nov 6, 2016
31
1
adb backup and cwm are totally different backup methods and not compatible. I don't know how you can convert one to another but surely it's very difficult. CWM and TWRP always require that origin and destination phones are rooted.

Hello, i wanted to ask i got backup.ab and wanted to restore it, is it possible to restore from backup.ab created from lollipop os to marshmallow os? Will my data on marshmallow phone be overwrited? sorry for my bad english, thanks.
 

Top Liked Posts

  • There are no posts matching your filters.
  • 54
    What is an android adb backup?
    An adb backup is a file with ab extension, generated by android's backup manager when we request it via adb shell. This allows you to backup some data of the phone, but is not a replacement of a clockworkmod backup:

    - Java 7 or higher is required because of SYNC_FLUSH mode for the Deflater.
    - If the backup contains apk+data for an app, restore will work. If contains only the data, you must install the app first on the device and then restore. Installing the app later won't work.
    - Some apps include a policy where the apk is never backed up even if specified.
    - Inside an ab file is a tar file, which contains files and folders in a certain order. You have you respect that order, which is not necessarily alphabetical like tar does by default. Such order is listed in "Full local backup infrastructure".
    - Inside the tar file, directories must not have trailing slash, for that reason pax, star or equivalent has to be used.
    - There are some bugs present in the android source code.
    - 'adb backup' or 'adb restore' are pretty slow, between 1 and 2.6 MBps.
    - The adb backups (usually with .ab extension) can be password protected or not. If the device is encrypted this is a must and has to be the same used for the device.
    - Star is recommended instead of pax, which supports path length only up to 100 characters, so will fail in some cases. This usually happens with browsers history.
    - ADB backups are not a replacement for a Nandroid backup. The whole /data partition is not backed up, only a part of it. Also, other partitions like /system, /preload, /cache, modem, RIL, efs, kernel or recovery are never backed up because are not user data. This is to prevent issue when restoring on a different device. It has also the biggest
    - If you have the device encrypted with a password, you must use that particular one for backup creation and restore. You can't create a backup without password or a different one in that particular case, or if you try to restore will fail.
    - star for cygwin for windows is attached (move it to C:\cygwin\bin\star.exe) since there is no package available. It can be compiled from the schily (ftp://ftp.berlios.de/pub/schily/).
    - The best way to test if an adb backup has errors, is to convert it to tar and then check.advantage that doesn't require root to operate, so is totally compatible with stock roms, locked bootloaders and device encryption.
    - There's also a bash script called adb-split.sh that creates individual adb backups for each recognized app from the full one, so you can restore apps individually. Same encryption is preserved to them, if any.

    You can use java or perl, although with perl can be more complicated because requires downloading some modules from cpan and some ssl headers.

    To know more information about types of android backups:
    [Guide] Types of Android backups

    Software needed
    The entire process can be done from Windows, but is better to use a unix-like operating system, like Linux, OS X or BSD, since we should extract the files on a filesystem that preservers file permissions and owners and repack the tar archive. Furthermore some tools like star are easier to get for linux. In such cases, using Virtualbox or VMWare Workstation is highly recommended. Using Windows should work in any case whatsoever.

    Cygwin
    Preferably 32 bits: has more packages and is less prone to errors. Furthermore, the star for cygwin attached is 32 bits.

    Java 7 or higher
    • Oracle Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 7 if you are going to work with password encrypted backups.
      You need to install the files local_policy.jar and US_export_policy.jar under jre's lib/security folder, for example:
      - For Windows:
      • C:\Program Files\Java\jdk1.7.0_09\jre\lib\security\
      • C:\Program Files\Java\jre7\lib\security\
      • C:\Program Files (x86)\Java\jdk1.7.0_07\jre\lib\security\
      • C:\Program Files (x86)\Java\jre7\lib\security\
      - For Linux or BSD:
      /usr/local/jdk1.7/jre/lib/security/
      /usr/lib/jvm/java-7-openjdk-*/jre/lib/security/
      /usr/local/openjdk7/jre/lib/security/
      - For OS X:
      • /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/security/

    Perl
    • Perl is available for several operating systems
    • libssl or openssl headers. If you are using Linux or Cygwin is much more easier
    • cpan modules required by use functions

    pax or star
    pax is an archiving utility that compresses in ustar by default. In this case is extremely useful because stores directories without trailing slash. Is available for all operating systems, and in windows can be installed via cygwin's setup.exe or download a native version like gnuwin32 (sometimes available via bsdtar with pax option). pax doesn't work when paths are more than 100 characters lenght, so I recommend star instead.

    star allows storing directories without trailing slash. You can get the ubuntu version 1.5 here. For Windows you can use Cygwin's version included.

    Android Backup Extractor
    Android Backup Extractor is the java application that does all the job. It includes the perl scripts.


    How it works, better with an example
    I will use an example to demonstrate how it works, with java version. If you like to use perl, just grab the perl scripts and is nearly the same.
    This is extracted from the readme file, and will extract a whole adb backup and repack only the data for the game Grand Theft Auto III for android.

    1) Convert the original adb backup to tar format:
    Code:
    java -jar abe.jar unpack nexus7.ab nexus7.tar <password>

    2) Extract the contents of the tar archive. This should be done on a filesystem where the permissions of the files inside the tar are preserved, for example using linux, mac or bsd. Up to two folders may appear, apps and shared:
    Code:
    tar -xvf nexus7.tar

    3) Make a list of all the contents of the original archive in the order they are archived:
    Code:
    tar -tf nexus7.tar > nexus7.list

    4) Create a new list only with the files and folders you want, in proper order. For example for the GTA 3 (you can try savegames instead of all data):
    Code:
    cat nexus7.list | grep com.rockstar.gta3 > gta3.list

    5) Create the new tar archive. The directories stored on tar shouldn't contain trailing slashes, so I use pax or star instead of tar. Pax works also if paths are up to 100 of lenght:
    Code:
    cat gta.list | pax -wd > gta3.tar
    OR
    Code:
    star -c -v -f gta3.tar -no-dirslash list=gta3.list

    6) Create the adb backup from the tar archive. Password is optional:
    Code:
    java -jar abe.jar pack gta3.tar gta3.ab <password>

    Note: if the backup is not encrypted zlib can be used instead for both unpack and pack the ab archive:
    - Quick unpacking:
    Code:
    dd if=nexus7.ab bs=24 skip=1 | openssl zlib -d > nexus7.tar
    - Quick packing:
    Code:
    dd if=nexus7.ab bs=24 count=1 of=gta3.ab ; openssl zlib -in gta3.tar >> gta3.ab

    Split an Android backup
    Use Android Backup Splitter (is a shell script). Works on Cygwin too:
    sh adb-split.sh backup.ab [password if needed]
    Resulting files go in app-ab folder

    # ADB Backup Splitter:
    #
    # This bash script utility generates an adb backup for each item
    # on apps/ folder. That equals to generating an adb backup for
    # each app.
    #
    # shared/0 and shared/1 (sdcards) are ignored, so that means that
    # external data and OBB files, although may be backed up, may not
    # be restored. For doing so backup the folder Android of the sdcards.
    # Creating a backup with -shared flag has know issues (corruption)
    # so is not recommended. Future releases of this script may add
    # the option to automatically detect things from sdcards inside
    # the adb backup file.
    #
    # This script works on Cygwin also, and in general where star does.
    #
    # There may be apps in the backup that don't include the apk. In that
    # particular case, the data won't be restored, so the individual backup
    # is generated for testing purposes only. Installing the apk afterwards won't work.
    # There is generated an html file called apk-missing.html so you can open it and
    # install all applications from Play Store on any of your devices.

    Patch apps to allow adb backup
    Some apps specify in the AndroidManifest.xml android:allowBackup="false" so it won't be backed up by adb backup. If you have root and use Titanium Backup or CWM or TWRP they will do the job, but if you don't want root the only solution is to modify the apk to edit that string. Read here how to do that and the pros and cons:
    [GUIDE] How to enable adb backup for any app changing android:allowBackup

    Links
    Android Backup Splitter (@ Sourceforge)
    Android Backup Extractor (@ Sourceforge)
    Android Backup Extractor (@ GitHub)
    Documentation at Blogspot
    Full local backup infrastructure
    [Guide] Types of Android backups
    Backing Up Android Games
    Titanium Backup Decrypter
    Perl scripts to encrypt/decrypt adb backup files
    [GUIDE] Full Phone Backup without Unlock or Root
    [GUIDE] Internal Memory Data Recovery - Yes We Can!
    [Q] [adb] backup not working for Temple Run

    Related adb backup and restore bugs:
    Issue 55860: adb backup skips the apk for certain apps and doesn't prompt for download when restoring
    Issue 48126: device adb connecting to localhost adbd cannot execute commands anymore since 4.2.2 (error device offline)
    Issue 3254: adb shell doesn't return exit code of program
    Issue 53065: Debugging via ADB stopping the onClick action on ImageView widget
    Issue 53668: ADB : An existing connection was forcibly closed by the remote host
    Issue 54781: adb install: single quotes in filenames cause quoting issues
    Issue 55173: (Game) Offroad Legends does not detect obb when restored via adb restore
    Issue 55178: (Game) Carmageddon Promo does not detect obb when restored via adb restore
    Issue 28303: adb backup doesn't respect -noshared flag
    Issue 32830: adb restore errors not displayed on device
    Issue 34311: Galaxy Nexus gets stuck when restoring adb backup
    Issue 25780: BackupManager causes reboot when BackupAgent missing
    Issue 40691: ab backup and restore Ski Safari does not restore saved data
    Issue 16286: Restoration of phone not working properly
    Issue 39014: Nexus 7 adb restore freezes when restoring udk.android.reader

    Warning about Helium (Carbon): helium backups are just android adb backups that are not compressed with Java Deflater. It means they were created with the option static final boolean COMPRESS_FULL_BACKUPS = false.
    A normal adb restore should work.
    3
    I have tried similar attempt to restore my save of another game but that doesn't work.
    How did you replace the files in the .tar file? I am using 7z to replace the .tar file but nothing happen after i restored.
    Thanks.
    Read the guide. 7z is not compatible, you have to use star or equivalent and meet the requirements.
    2
    Great guide, and can confirm that it does work!

    I managed to use this method to restore my angry birds data from a Froyo phone (HTC Desire), to a Jelly Bean phone (HTC One X+). This is no easy task since you cannot use adb backup/restore on Froyo, but you can use adb pull, and you can't use adb push on Jelly Bean, but you can use adb backup/restore. Just in case anyone is looking to do the same, here is the process I used (requires having adb up and running but does not require root)...

    As the adb backup function doesn't work on Froyo, I had to use adb pull to grab the angry birds data files (highscores.lua and settings.lua). Then, making sure that you have angry birds installed on the jelly bean phone and have played the first level, use the adb backup command to backup just the angry birds app. You can then use scandiuns guide to extract a tar file from the backup file, and then extract the "app" folder from the tar file.

    Once this is done, you will find the highscores.lua and settings.lua files in the apps/com.rovio.angrybirds/f directory. Replace these two files with your original ones that you pulled from the old device. Then package up the app folder using the guide. Then just use adb restore to restore the modified backup file to your new device, and you should have all your old scores restored!

    Hope that helps and thanks to scandiun for the great guide! :good:
    2
    Maybe I'm missing something.

    I've installed Java, ran cygwins setup.exe and I think it installed everything. Also downloaded the Android Backup Extractor. I try running a windows command prompt with:
    java -jar abe.jar unpack nexus7.ab nexus7.tar

    All I get is "java is not an internal or external command". I'm running the command prompt in the android backup extractor folder. Does everything have to be in the same folder? Where do I dump everything?

    Probably java is not in your path, try

    Code:
    which java

    It should result something like
    Code:
    $ which java
    /cygdrive/c/Windows/system32/java

    Add Java to the Windows Path

    Then restart cygwin
    2
    Because i am using windows, so does it mean that i couldn't modify the .tar file in any way?
    thanks.

    Yes, from windows you can use pax. You can download it from cygwin's setup.exe. I've updated the guide, see the step 5.