Modding The Tap Titans Save File

Recently, I’ve been stumbled on Tap Titans one of mobile game on Android and iOS which is really simple and quite addictive. The game is only need you to tap on its screen to fight the monsters or the titans.

After playing the game for 2 days, I’m starting to get impatient since the gold earned is never enough to beat each new stage of monsters. So I decide to take a look on the game files and found that the game is running based on .adat save file. Most .adat file is similar to .dat file which contain HEX data or other string. In Tap Titans it contains JSON data and some unique encryption.

This mod progress can work on both Android and iOS version, only the file name that’s a bit different. There are several tools you need to mod the save file:

  • 010 Editor by Sweetscape.
  • Encryption Script used to encrypt the sha-1 key. Copy the script below to a new file and name it encrypt.1sc ( it’s a 010 Editor script )

//010 Encryption script
//--------------------------------------
//--- 010 Editor v3.2 Script File
//
// File: encrypt
// Author: cynosure
// Revision: 1.0.7
// Purpose: tap titans sha-1 checksum savefile encryption
//--------------------------------------
byte key[9];
key[0]=7; key[1]=3; key[2]=2; key[3]=5; key[4]=4; key[5]=2; key[6]=5; key[7]=5; key[8]=3;
int actfile = GetFileNum();
int newfile = FileNew();
FileSelect(actfile);
int siz = FileSize();
int place = 0; int addr = 0; int out = 0; uint data = 0;
while(addr < siz){
FileSelect(actfile);
data = ReadByte(addr++);
FileSelect(newfile);
WriteByte(out, (data + key[out %9]) );
out++;
}
  • Next is the decrypt code which is optional, only if you want to check the sha-1 key encryption

//010 Decryption script
//--------------------------------------
//--- 010 Editor v3.2 Script File
//
// File: decrypt
// Author: cynosure
// Revision: 1.0.7
// Purpose: tap titans sha-1 checksum savefile decryption
//--------------------------------------
byte key[9];
key[0]=7; key[1]=3; key[2]=2; key[3]=5; key[4]=4; key[5]=2; key[6]=5; key[7]=5; key[8]=3;
int actfile = GetFileNum();
int newfile = FileNew();
FileSelect(actfile);
int siz = FileSize();
int place = 0; int addr = 0; int out = 0; uint data = 0;
while(addr < siz){
FileSelect(actfile);
data = ReadByte(addr++);
FileSelect(newfile);
WriteByte(out, (data - key[out %9]) );
out++;
}

Before we begin to mod the save file, let’s take a look on the structure, since I did this mod on Android, I will be using Android file structure as a base in this article. You’ll find the save file in Android/data/com.gamehivecorp.taptitans

ss-taptitans-folder

there are two similar files, the .adat file and .adat.old file, the old file is used by the game as a diff checker to prevent modding on the save file. So we will need to delete this file.

Next is the filesgamedata folder will be containing a live safe if your game is running, so make sure you quit the game and remove it from task manager and empty this folder.

Copy the .adat file to your PC and we will start working on the mod using the 010 Editor. When you open the .adat file you’ll probably see some unstructured codes and hex value like in the screenshot below

ss-taptitans-adat-file-1

Hide the Hex view mode by hitting Ctrl+H, this will make editing the code become easier.

Now the part you need to edit are starting from this line

{\"playerLevel\":\"693\"... 

until the closing bracket before this

","lastUsedTexture":"....

, in my case it’s the

"firstPurchaseMsgShown\":false}

Now, the rule you need to remember when editing the JSON data is the size. The game come with a cheat prevention using Size Diff checker, in order for your mod to work you need to make sure if you add 1 character you also remove 1 character. For example, I have this line

\"playerRelics\":\"0\"

and I want to have 99 relics which means adding 1 extra character, so I need to remove another character from the file, the safest way would be to remove 1 character from the name since I can edit the name whenever I want in the game later.

So let’s change the code into

\"playerRelics\":\"9.99E+97\"

this will give you unlimited relics, since the first relic is “0” and I changed it to “9.99E+97” which mean there are 7 additional characters, I then go and remove 7 character from, so it will be

\"playerName\":\"Sword\"

from

\"playerName\":\"Sword Master\"

After editing the name, here comes the encryption part. Select and Copy the code from

{\"playerLevel\":\"693\"...

up to

"firstPurchaseMsgShown\":false}

might be different depend on yours, used the lastUsedTexture text as a base for the end. Then paste the code in the field here http://www.freeformatter.com/javascript-escape.html, we need to unescape

\"

from the JSON data.

Create a new file in 010 Editor or hit CTRL+N then copy back the unescaped string, Select all the string in this new file and hit CTRL+K, you’ll prompt to encryption window, only check for SHA-1 and hit OK

ss-taptitans-sha-1

Below your editing screen you’ll see the Checksum tab, copy and paste the value of the Checksum from SHA-1 algorithm to a new file, this time we’ll use the encryption script. Block or select all the checksum value and hit CTRL+U this will turn all the letter into lowercase which is a must, then hit F7 and run the encrypt.1sc file (you may need to open this file on the 010 editor first).

Now we have get the encrypted string, copy all this string then go to your .adat file and find lastUsedTexture string, change the value with this new one. This is the key in this save file mod, the lastUsedTexture value storing the encrypted save data to prevent cheating or modding on the save file, by doing our own encryption we pass the texture check.

Last part would be to copy the new .adat file and put it in your com.gamehivecorp.taptitans folder, just make sure you emptied filesgamedata and remove .adat.old file.

You can explore more about the save file data, and play with your own value and experience the game with much more powerful hero :D, good luck with modding the game.

If you’re interested with my save game for Tap Titans, you can download it here

Download Save File

Special thanks to SiNfuL iPhone for tap titans discussions.

49 Comments

  1. I tried your helpful modding way about 3 hours.
    But since I don’t have any knowledge about modding or programming- I can’t figure out errors. (ex. how to run the encrypt.1sc by using F7 and so on)

    Can you give me your fixed-data(unlimited relics) to my email address(lbj6426@naver.com)? T-T
    I shall trespass on your hospitality, then.

      1. I downloaded your game save and pasted it into the documents folder using iFunbox, but all it did was start a new game.

  2. “Below your editing screen you’ll see the Checksum tab, copy and paste the value of the Checksum from SHA-1 algorithm to a new file, this time we’ll use the encryption script. ”

    What do you mean by a new file?

  3. hello
    thanks for the article.
    tried to follow your direction but cannot make my own save file.
    not that easy to try those work for the first time i think.
    can you please make save file for me?..
    just want some relics-about 100~1000- and 20~30k gems will be enough for now. was buy 14k gems last month and dont want to buy again.. waiting for your reply..

    1. Save file added at the end of the tutorial, the relics are around 99.9k, the diamonds are limited but quite a lot, and all the heroes are high level upgraded

  4. can you help me to modding save file..?
    tried to follow your direction but cannot make it.
    waiting for your reply. many thanks

  5. hi i used your method. ive done everything right according to this guide but when i run the game, it’s like im starting a new game. all was lost. im trying everytime but no luck. btw im using ios

    1. If you keep starting a new game after editing the save, there are possibilities that cause this:

      1. Your lastUsedTexture string is incorrect
      2. You still keep the .dat.old file which cause the game to reset all the data since it fails the diff check
      3. You fail to bypass the Size Checker, make sure when you add 1 character, you also remove 1 character from name, then re-encrypt the data for lastUsedTexture
  6. Hey, I tried to follow your instruction but let me list mine and tell me if it’s wrong

    1. Open Save File Directory on the Android
    2. Delete the .OLD.ADAT and empty filegamesdata Folder
    3. Copy the .ADAT to computer for later manipulation with 010 Editor
    4. CTRL+H to make the HEX code gone
    5. Change \”playerRelics\”:\”0\” ==> \”playerRelics\”:\”999\”
    6. Change \”playerName\”:\”Sword Master We\” ==> \”playerName\”:\”Swo Master We\”
    7. Copy the code
    8. Unescape, Copy the new string then replace the content on the .ADAT file”{…}”
    9. Copy the Unescaped string to new file in 010 Editor, CTRL+A, CTRL+K, only check SHA-1 and hit OK
    10. Right Click the Checksum, then Copy, CTRL+N, then paste there, CTRL+A, CTRL+U, F7 Choose encrypt.sc1
    11. Replace the lastUsedTexture
    12. Save, then copy the new .ADAT

    but not working, tell me if something wrong with that Thank’s

  7. hey nackel, is it fine if you upload a save file with just around 10k diamonds? ive been trying to mod my save for 4 hours and it just kept starting as a new game.. thank you very much

  8. Hey, so I managed to get right up to the part where I have to run the encrypt.1sc file… only this file doesn’t exist, even in the 010 Editor Data Folder. The only scripts available to me are:

    -IsASCII.1sc
    -JoinFile.1sc
    -MultiplePaste.1sc
    -Randomize.1sc
    -SplitFile.1sc

    Could you possibly upload your encrypt.1sc file or advise?

    Much appreciated.

  9. Hi, as others have stated, this is not working. After every mod, it will just turn into a new game requesting my username.

    Will you upload a clean game with modded 999999 diamonds?

  10. I’m no techy so I got lost on a few things, so maybe you could do a video tutorial for those that get confused with this stuff like myself?

  11. Hi admin, i found this post on 14 spot in google’s search results.
    I’m sure that your low rankings are caused by hi bounce rate.
    This is very important ranking factor. One of the biggest reason for high bounce rate is
    due to visitors hitting the back button. The higher your
    bounce rate the further down the search results your posts and pages will end
    up, so having reasonably low bounce rate is important for improving your rankings naturally.

    There is very handy wp plugin which can help you. Just search in google for:

    Seyiny’s Bounce Plugin

  12. couldn’t get it to work, tried ALOT. i noticed the last couple of units would be missing from my encrypted string. i.e “「JH” was not there but i noticed all the save files that worked had that at the end of lastusedtexture string.

  13. I am trying to do this with the new weapons and edit how many I have unlocked but it keeps making me start new game am i doing something wrong or is it needing a different encryption with the new update?

  14. I was wondering if you could update a game save file for version 2.0.3.
    I have been following your tutorial and testing different changes and am wondering if they have updating anything to further try and prevent modifying the file since I can’t seem to get it to work. I would love an example to look at if at all possible.

  15. Your save file is changing my whole game.from my frnd code to everything…

    What i need to do before pasting ur save file ??

  16. Hey, finally i success. Thank you so much :D. And by the way, can i ask you, wwhy do you find the encrypt? It is amazing when have it and hack. Thankssss again ^^

  17. So I put the file in my tap Titans folder but it looks like it worked but it looks all glitched and it sends me out of the game. I have a file browser on Android and I put it there and it’s doing weird things on the app

    1. I have the same problem so I put the file in my tap Titans folder but it looks like it worked but it looks all glitched and it sends me out of the game. I have a file browser on Android and I put it there and it’s doing weird things on the app

  18. Shucks. I’m almost 10 months of updates away. Do you think you’ll make an updated file at some point? I know this post was meant to be investigation and report the findings but. I. Well yeah, like the rest I too have come with my hands Palm up. At least I’m up front about it I guess. Cheers.

  19. Hey, looks like I touched something I should have not, could u upload the full tap titans folder? Mine is empty now XD, thanks anyway 😀

  20. Hello

    I try to used this hack but I have some issue with lastUsedTexture. When I check the encryption I obtain 33k798g<?f9k but the end of file is
    "lastUsedTexture":"33k798gg,В

    So I try to hack replace “33k798g<?f9k" copy the file and launch the game but hack doesn't works. Did you have solution ?

  21. everyone just still asking about encrypt.sc1 , its already given above….
    this code

    //010 Encryption script
    //————————————–
    //— 010 Editor v3.2 Script File
    //
    // File: encrypt
    // Author: cynosure
    // Revision: 1.0.7
    // Purpose: tap titans sha-1 checksum savefile encryption
    //————————————–
    byte key[9];
    key[0]=7; key[1]=3; key[2]=2; key[3]=5; key[4]=4; key[5]=2; key[6]=5; key[7]=5; key[8]=3;
    int actfile = GetFileNum();
    int newfile = FileNew();
    FileSelect(actfile);
    int siz = FileSize();
    int place = 0; int addr = 0; int out = 0; uint data = 0;
    while(addr < siz){
    FileSelect(actfile);
    data = ReadByte(addr++);
    FileSelect(newfile);
    WriteByte(out, (data + key[out %9]) );
    out++;
    }

    save to encrypt.sc1 that's all…

  22. Howdy I am so excited I found your webpage, I really found you
    by accident, while I was searching on Aol for something else, Nonetheless I am here now and would just like to say many thanks
    for a fantastic post and a all round exciting blog (I also love the theme/design), I don’t have
    time to browse it all at the minute but I have bookmarked it and also added in your RSS feeds,
    so when I have time I will be back to read a lot more,
    Please do keep up the fantastic job.

Leave a Reply

Your email address will not be published. Required fields are marked *