We datamined the global-metadata.dat dumped from the 0.37.1 APK today and we have some bad news to report. We are sorry, but there are no references to a Ditto easter egg in the 0.37.1 APK. 

Layman explanation: there is no Ditto easter egg reference in the game (yet). Nothing, not even a vague network request, nothing. There are only placeholders in Pokedex and general game settings.

Ditto Easter Egg is not present in the game (yet)

In fact, there are no references to anything related to Ditto except for Pokemon name and Pokemon Family Name. Heck, there are even more references to Legendary Pokemon than there are for Ditto:

  • POKEMON_CLASS_LEGENDARY
  • ITEM_EFFECT_CAP_CHANCE_LEGEND
  • ACTIVITY_CATCH_LEGEND_POKEMON

Here are some answers to frequent questions people ask when Ditto is mentioned:

Q: LIES! YOU ARE HIDING THE EASTER EGG SO YOU CAN GET IT?

A: Well, we’re not but feel free to run the same test we did if you are convinced otherwise:

  1. Download a File explorer for Android
  2. Navigate toAndroid/data/com.nianticlabs.pokemongo/files/il2cpp/Metadata/ and extract the global-metadata.dat
  3. Open it in a hex editor, we used HxD
  4. Start digging

Q: This file contains no Sparky/Rainer/Pyro or Pikachu starter references, yet all of them work! Boom, debunked!

A: Eh, we wish if this was so easy… Pikachu starter is obtained as a result of server side messages named SpawnPokemonNearPlayer and GetGoodSpawnLocations that the client receives from the server periodically. A similar thing happens for Eeveelutions trick, just the message is called OnEvolution.

Sorry, but both easter eggs are completely server side and you should not look for them inside global-metadata.dat.

Q: Well yes, you just said it may be server-side and thus not in the local game code?

A: Every server side request has an accompanying handler inside the global-metadata.dat, including Fort (Gym) battles, item usage, Pikachu jumping from the ground to your shoulder, obtaining Egg candy bonus etc.. There are no client side handlers for Ditto related messages, not even one. So no, it is not hidden on the server side – there is no magic unlock Ditto mechanism hidden in the binary, if there is no message handler that action is not possible and that’s the end of it.

The only possibility for Ditto to be a server side easter egg is if it is obtained from evolutions, spawns or distance walked. It’s safe to assume that given the number of times each of these actions has happened worldwide, that it’s not on the server side.

Q: Wait, why should there be any references in the file?

A: The global-metadata.dat contains a compressed version of the source code metadata, including the names of all constants, method signatures and non obfuscated client code. There is more hidden in the binary, but it’s mostly media resources. Every other client action is visible in the .dat file, including network messages, protobuff handlers etc.

For example, the “Pikachu jumps on your shoulder” Easter Egg is fully visible and readable from the dumped hex code, given that the code references two types of Pikachu buddy (groundPikachu and shoulderPikachu):

If there was a Ditto easter egg hidden in the source code, global-metadata.dat would show it – either through method calls, method signatures or constant names.

Q: But Ditto has 2 moves in GAME_MASTER (Pound and Struggle)?

A: Yes, so do Zapdos, Moltres, Articuno, Mew and Mew Two. Every function in the source code that references Pokemon moves expect the Pokemon to have a Quick and a Charge move. These parameters are NOT optional, which suggests that Ditto’s moves are merely placeholder moves. Same goes for legendary Pokemon.

But don’t take our word on it, here’s a full dump of the extracted text:

Q: But Hanke said there is a way to obtain Ditto on TechCrunch event?

A: No, he jokingly said that the host will definitely get Ditto as a hardcore player. We wish he said something else, but John is an elusive guy.

Data mining methodology

We used HxD hex editor to extract strings and methods from the .dat file. Afterwards, we used Sublime Text editor to reformat the text and break it into new lines. Find option was used to count occurrences of strings.