Jump to content

Question

Posted

currently this game seem like protected. but somehow i manage to extract global-metadata.dat from base.apk in /data/app/ then dump the libil2cpp.so. from dump.cs i found the offset for gold and jewel but somehow i can not edit . i try the script class and field offset finder v4 script but to no avail nothing is work for these two . i try using go-to in Xa region , then used offset calculator for GetGold , edit the value in Dword . nothing happen. do i need to edit in Arm code to make it happen ? somehow before this it used to be working but i forgot how i did . it was several years ago

// Namespace: 
public class DataController : MonoBehaviour // TypeDefIndex: 3989
{
	// Fields
	private spDB dbPlayer; // 0x20
	private spDB dbPuzzle; // 0x28
	private spDB dbItem; // 0x30
	private spDB dbUnitMelee; // 0x38
	private spDB dbUnitRange; // 0x40
	private spDB dbUnitMerge; // 0x48
	private spDB dbUnitSkin; // 0x50
	private spDB dbUnitSkinRedDot; // 0x58
	private spDB dbTuto; // 0x60
	private spDB dbTime; // 0x68
	private spDB dbArea; // 0x70
	public JSONNode Double_StageClearGoldFirst; // 0x78
	public JSONNode Double_StageClearGoldWeightedValue; // 0x80
	public JSONNode Double_StageClearGoldWeightedValueForEachStage; // 0x88
	public JSONNode Double_StageClearGoldWeightedValueForStanddardStage; // 0x90
	public JSONNode Double_RecallGoldFirst; // 0x98
	public JSONNode Double_RecallGoldWeightedValue; // 0xA0
	public bool IsShowPurchaseSuccess; // 0xA8
	public byte[] Byte_DataFromCloud; // 0xB0
	private static GameObject _container; // 0x0
	public static DataController Instance; // 0x8
	public string GameDataFileName; // 0xB8
	public GameData _gameData; // 0xC0

	// Methods
// RVA: 0x1E1056C Offset: 0x1E0C56C VA: 0x1E1056C
	public double GetGold() { }

	// RVA: 0x1E105C4 Offset: 0x1E0C5C4 VA: 0x1E105C4
	public void SetGold(double val) { }
// RVA: 0x1E10894 Offset: 0x1E0C894 VA: 0x1E10894
	public bool AddGold(double price) { }

	// RVA: 0x1E109E4 Offset: 0x1E0C9E4 VA: 0x1E109E4
	public int GetJewel() { }

	// RVA: 0x1E10A3C Offset: 0x1E0CA3C VA: 0x1E10A3C
	public void SetJewel(int val) { }

	// RVA: 0x1E10A98 Offset: 0x1E0CA98 VA: 0x1E10A98
	public bool AddJewel(int price) { }

 

2 answers to this question

Recommended Posts

  • 0
Posted (edited)
14 hours ago, SiamangTunggal said:

currently this game seem like protected. but somehow i manage to extract global-metadata.dat from base.apk in /data/app/ then dump the libil2cpp.so. from dump.cs i found the offset for gold and jewel but somehow i can not edit . i try the script class and field offset finder v4 script but to no avail nothing is work for these two . i try using go-to in Xa region , then used offset calculator for GetGold , edit the value in Dword . nothing happen. do i need to edit in Arm code to make it happen ? somehow before this it used to be working but i forgot how i did . it was several years ago

// Namespace: 
public class DataController : MonoBehaviour // TypeDefIndex: 3989
{
	// Fields
	private spDB dbPlayer; // 0x20
	private spDB dbPuzzle; // 0x28
	private spDB dbItem; // 0x30
	private spDB dbUnitMelee; // 0x38
	private spDB dbUnitRange; // 0x40
	private spDB dbUnitMerge; // 0x48
	private spDB dbUnitSkin; // 0x50
	private spDB dbUnitSkinRedDot; // 0x58
	private spDB dbTuto; // 0x60
	private spDB dbTime; // 0x68
	private spDB dbArea; // 0x70
	public JSONNode Double_StageClearGoldFirst; // 0x78
	public JSONNode Double_StageClearGoldWeightedValue; // 0x80
	public JSONNode Double_StageClearGoldWeightedValueForEachStage; // 0x88
	public JSONNode Double_StageClearGoldWeightedValueForStanddardStage; // 0x90
	public JSONNode Double_RecallGoldFirst; // 0x98
	public JSONNode Double_RecallGoldWeightedValue; // 0xA0
	public bool IsShowPurchaseSuccess; // 0xA8
	public byte[] Byte_DataFromCloud; // 0xB0
	private static GameObject _container; // 0x0
	public static DataController Instance; // 0x8
	public string GameDataFileName; // 0xB8
	public GameData _gameData; // 0xC0

	// Methods
// RVA: 0x1E1056C Offset: 0x1E0C56C VA: 0x1E1056C
	public double GetGold() { }

	// RVA: 0x1E105C4 Offset: 0x1E0C5C4 VA: 0x1E105C4
	public void SetGold(double val) { }
// RVA: 0x1E10894 Offset: 0x1E0C894 VA: 0x1E10894
	public bool AddGold(double price) { }

	// RVA: 0x1E109E4 Offset: 0x1E0C9E4 VA: 0x1E109E4
	public int GetJewel() { }

	// RVA: 0x1E10A3C Offset: 0x1E0CA3C VA: 0x1E10A3C
	public void SetJewel(int val) { }

	// RVA: 0x1E10A98 Offset: 0x1E0CA98 VA: 0x1E10A98
	public bool AddJewel(int price) { }

 

The values that you could edit at those fields for increase gold have become pointers that point to the gold, that's maybe why your old method with the script wasn't working? But once you go to the pointer you can find your gold value at a offset + 0x10. Your old gold value belongs now to the class JSONNum which has more then 30k instances (didn't check in the dump if it was class, might not be a class)...so it's better to find the gold through the class you shared.
 image.thumb.png.9051f30fcc400c63a6c0221d47c570a1.png

Editing on the gold value in region A worked for me, so i assume that the script that ApexGG shared will work as well for patching the methods of that class (if it are the correct methods). But i honestly got no idea if editing methods of this class work as it should since i didn't try modifying those instructions. But i assume it does, give it a try.

Edited by nok1a

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.