Jump to content

7 posts in this topic

Recommended Posts

Posted

Hi guys, for those who don't know what beatstar is, it is a music game made in unity. (which uses UnityFramework).
I came across this Android mod that allows users to do many things including mainly unlocking all the songs in the catalog and importing custom songs created by them or other people in their discord server. So I would like to bring this mod to iOS, to start I wanted to do something simple like changing the color of the Perfect+ to purple, just like in the android mod.

The mod should support non-jailbroken iOS, so searching online I came across only one solution namely H5GG. (Not counting the others that require the application to be launched from a mac with a debugger) I would like to specify that I already have a js script that works perfectly when launched via frida with frida-server from a jailbroken device. But this script does not work with H5GG unfortunately, I am sending you a part to make you understand the nature of the script

 

const assembly = Il2Cpp.Domain.assembly("Assembly-CSharp").image;
      const RakshaModel = Il2Cpp.Domain.assembly('RakshaModel').image;
      const metalogic = Il2Cpp.Domain.assembly('MetaLogic').image;
      const spaceape = Il2Cpp.Domain.assembly('SpaceApe.Rpc').image;
      const unity = Il2Cpp.Domain.assembly('SpaceApe.UnityAssets').image;
[...]

Il2Cpp.perform() => {
assembly.class("BeatStar.RhythmGame.RhythmGameColours").method("GetLaneColourForScore").implementation = function(scoreType) {
              let result = this.method('GetLaneColourForScore').invoke(scoreType);
              if (scoreType.toString() == 'APLUS') {
                  result.field('r').value = 205;
                  result.field('g').value = 0;
                  result.field('b').value = 205;
                  result.field('a').value = 1;
              }
              return result;
          };

As you can see it uses "frida-il2cpp-bridge".


The best I have been able to achieve is to get H5GG to show alerts of to the console.logs before "Il2Cpp.perform() => {" but then unfortunately I get this error.

Given the complexity of the whole mod that has nothing to do with this very simple function, I would like to work through js since working through offsets would be suicide. If anyone knows how to solve this problem or knows some other solution I am all ears. 
Thanks in advance.

Posted (edited)
7 hours ago, matteozappia said:

Hi guys, for those who don't know what beatstar is, it is a music game made in unity. (which uses UnityFramework).
I came across this Android mod that allows users to do many things including mainly unlocking all the songs in the catalog and importing custom songs created by them or other people in their discord server. So I would like to bring this mod to iOS, to start I wanted to do something simple like changing the color of the Perfect+ to purple, just like in the android mod.

The mod should support non-jailbroken iOS, so searching online I came across only one solution namely H5GG. (Not counting the others that require the application to be launched from a mac with a debugger) I would like to specify that I already have a js script that works perfectly when launched via frida with frida-server from a jailbroken device. But this script does not work with H5GG unfortunately, I am sending you a part to make you understand the nature of the script

 

const assembly = Il2Cpp.Domain.assembly("Assembly-CSharp").image;
      const RakshaModel = Il2Cpp.Domain.assembly('RakshaModel').image;
      const metalogic = Il2Cpp.Domain.assembly('MetaLogic').image;
      const spaceape = Il2Cpp.Domain.assembly('SpaceApe.Rpc').image;
      const unity = Il2Cpp.Domain.assembly('SpaceApe.UnityAssets').image;
[...]

Il2Cpp.perform() => {
assembly.class("BeatStar.RhythmGame.RhythmGameColours").method("GetLaneColourForScore").implementation = function(scoreType) {
              let result = this.method('GetLaneColourForScore').invoke(scoreType);
              if (scoreType.toString() == 'APLUS') {
                  result.field('r').value = 205;
                  result.field('g').value = 0;
                  result.field('b').value = 205;
                  result.field('a').value = 1;
              }
              return result;
          };

As you can see it uses "frida-il2cpp-bridge".


The best I have been able to achieve is to get H5GG to show alerts of to the console.logs before "Il2Cpp.perform() => {" but then unfortunately I get this error.

Given the complexity of the whole mod that has nothing to do with this very simple function, I would like to work through js since working through offsets would be suicide. If anyone knows how to solve this problem or knows some other solution I am all ears. 
Thanks in advance.

Hi there, what were you trying to load when you get that error screen? 
 

I didn’t know how to load Frida-il2cpp-script to H5GG, did tried a bit earlier but not successful. I then build my own library. 

Did you try my enhanced menu? You can find it here

 

 

from what I read those thing are something could be doable with my menu in similar way, of course I didn’t try it yet.

but I guess you can’t do that change implementation part. That would likely need a Jailbroken device.

Updated by Happy Secret
Posted

Something like this?
dNlj8eeF_o.jpeg

My JSPlug-in doesn’t natively support colour, you will need to r g b a separately with respective float number.

say, purple is (127, 17, 224) -> 

r = 127/255 = 0.498

g = 17/255 = 0.0666

b = 224/255 = 0.8784

a = just ignore it, no need to change. Or you can use same formula as above.

Suggest you to try with UI first. Before you go test with JavaScript. You can do the colour change all by H5GG Enhanced Menu UI.

1. Use Unity Static Analyzer to search for “RhythmGameColours”, you need to do this at the game start (in side the song play)

2. Click on the pink cell

3. Look for the Yellow field (rhythmGameColours), click on the Address pointer Value

4. Look for laneColoursBScore field, click on the Address pointer Value

5. Look for _entries field, click on the Address pointer Value

6. The 4 bytes at offset 2c is the R colour of the Perfect+, offset 30 is the G colour, offset 34 is the B colour

7. To change value, click on 2c, highlight it with yellow. Click the pencil button on top. Change data type to F32, type in 0.498, then click edit.

8. same for G and B.

  • Like 1
Posted
1 hour ago, Happy Secret said:

Something like this?
dNlj8eeF_o.jpeg

My JSPlug-in doesn’t natively support colour, you will need to r g b a separately with respective float number.

say, purple is (127, 17, 224) -> 

r = 127/255 = 0.498

g = 17/255 = 0.0666

b = 224/255 = 0.8784

a = just ignore it, no need to change. Or you can use same formula as above.

Suggest you to try with UI first. Before you go test with JavaScript. You can do the colour change all by H5GG Enhanced Menu UI.

1. Use Unity Static Analyzer to search for “RhythmGameColours”, you need to do this at the game start (in side the song play)

2. Click on the pink cell

3. Look for the Yellow field (rhythmGameColours), click on the Address pointer Value

4. Look for laneColoursBScore field, click on the Address pointer Value

5. Look for _entries field, click on the Address pointer Value

6. The 4 bytes at offset 2c is the R colour of the Perfect+, offset 30 is the G colour, offset 34 is the B colour

7. To change value, click on 2c, highlight it with yellow. Click the pencil button on top. Change data type to F32, type in 0.498, then click edit.

8. same for G and B.

That's exactly what I want to do. I tried via UI but when i search for RhythmGameColours I got an alert saying "Cannot Found Object of this Type", i'm using Version 1.9.1a downloaded from your post. maybe I'm doing something wrong? Btw can you send me or post here your js script so I can take a look at it?

Posted
3 hours ago, matteozappia said:

That's exactly what I want to do. I tried via UI but when i search for RhythmGameColours I got an alert saying "Cannot Found Object of this Type", i'm using Version 1.9.1a downloaded from your post. maybe I'm doing something wrong? Btw can you send me or post here your js script so I can take a look at it?

I didn’t make the js script. 
 

remember to do the search inside a game (go in pulse it, then go search).

This games keep Garbage collect the related object when outside game. You won’t be able to locate.

Remember to use the UA button, not Unity Button, it has more friendly UI and features. 

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 would like to place cookies on your device to help make this website better. The website cannot give you the best user experience without cookies. You can accept or decline our cookies. You may also adjust your cookie settings. Privacy Policy - Guidelines