OccvltSvc

Newbie
Feb 27, 2021
16
44
So it also looks like other side scrolling games where you have a sword and a gun?
Yes, it looks like it.
Not gonna claim that character idle pose with slightly bend legs and toes turned inwards, blocky levels, abundance of jump-through platforms, gun-and-sword at the same time, collectable pass cards and abilities, - none of this can be called "distinct trademark feature", i think any game can easily have any of those on their own. But this time there is a whole lot of similarities at the same time, just thought would be funny to point out.

by the way, may i ask, who are the girls from your signature gif?
is first girl from ebisen works castle evil?
second and third girls no clue
i am only sure about blue guardian margaret lol
Yes, true!
First from castle evil by Ebisen (i think i saw this name in the game credits here, but was while ago, no so sure right now, and also not gonna play through it again just to confirm, lol).

Next are from RePureAria and tobihime (i believe is called). Both are super fun games.

And the other one is correct too!
A real metroid-alike, nice looking and well made, also ryona and no actual sexual scenes, but very painful game to play. Let it stay in a shady corner i say.
 
Last edited:

another58

Newbie
Feb 13, 2023
36
12
how to avoid those enemies... jump out of nowhere?
how to counter the last boss's AOE tracking booms?
game is not that hard without these nonsense
 

strikingnerd99

New Member
Jun 6, 2024
4
3
what the heck is this game?? this is the this is the most frustrating shit i ever played in my entire life, i am ok with difficulty, but it should be also fun, this game seems made only to annoy and frustrate the player until he push alt+f4. If you get hit you fly away for the whole corridor, if an enemy grab you it makes you lose half of your life, and now i have to defend another girl who somtimes even kill herself, some enemies even oneshot you. This is such a disappointment because the art and the gameplay are great, but is way too annoying
 

wicontagion

New Member
Jan 20, 2024
5
2
what the heck is this game?? this is the this is the most frustrating shit i ever played in my entire life, i am ok with difficulty, but it should be also fun, this game seems made only to annoy and frustrate the player until he push alt+f4. If you get hit you fly away for the whole corridor, if an enemy grab you it makes you lose half of your life, and now i have to defend another girl who somtimes even kill herself, some enemies even oneshot you. This is such a disappointment because the art and the gameplay are great, but is way too annoying
random envirokills go brrrrrr
 

Sternenklair

New Member
May 2, 2023
9
17
dark souls but imagine that every hit makes you fly half-neighbor and everyone can still kick you while you're down

bad skill design:
dash is the last skill you unlock (in a dark souls platformer)

bugged:
both machines on 1st lvl and 4(?) bugs when you restart the map, their timing becomes all wonky

unfair:
insta-kill traps out of the blue, enemies dashing half of the map to grab you, hostage npc with 0 survival skills

weird character design(?):
wearing a bunny suit with work boots

overall, I like the character design a little, would be cooler with high-heels or something else, and I like the combo system as well. however, I wouldn't re-play nor recommend to anyone
 

BlackElite

Well-Known Member
Sep 18, 2018
1,464
935
Damn, anyone got any cheats working with this one? Like, damn it's hard. I don't mind a difficult game, but hard without any rewards is just plain boring
 

OccvltSvc

Newbie
Feb 27, 2021
16
44
Decreased/increased value ain't working too. I think I messed up the unknown init value, so yeah... You got any leads?
Perhaps slightly another approach is required.
If we use some other tool like dnSpy and try to search for the answers, we can see some values are defined as "ObscuredInt".
01.png
Well, at least name implies that we can expect it to be int - that's something.
This "obscuredint" struct has its own values like encrypted value and a key. Encryption done simply by XOR-ing two values.
02-dnSpy-OIDef.png
So we should search for a pair of 4 byte values, they will look similar except maybe 1-2 lowest bytes. Also every time value is updated, both key and value got changed.
What i did is a search with CE for unknown 4 bytes value, then rescan every time health got changed.
03.png
Now here is something we can look at.
We know that character has 123 Hp (7B hex).
04.png
05-123Hex.png
If we xor two found values we will get 0x4B26746D xor 0x4B267416 = 0x7B. Looks good!
Lets "assume" that first value is a key and second is a "encrypted Hp", lets change secod value to (255 is max hp)= 0xFF xor 0x4B26746D = 0x4B267492
It does not update immediately
06.png
but after in-game update it looks alright
07.png
notice, that after getting hit again both key and hp value are changed.
08.png

Additionally we can botch "GenerateKey" function inside ACTk.runtime.dll (will be automatically loaded as dependency) with dnSpy.
09-botching.png
Lets make it so it will always return 0x55555555
10-botching.png
Now we can perform aob scan with CE (assuming initial hp is 255). There are two results - first is a struct for current Hp and the second one with max Hp.
11.png
If we look at memory, we will see there are lots of "55" values all over the place!
12.png

That was for fun, alternatively you can edit player_data class and replace "ObscuredInt" with just an int and do normal search with CE, but i have not tried this yet. UPD: scratch that, it does not properly compile back (or at least i'm not gonna spend even more time figuring that out).
Also note that i have never wrote anything with yucky C# or did anything with that 'unity' thing.
Have a nice values hunting!
 
Last edited:

BlackElite

Well-Known Member
Sep 18, 2018
1,464
935
Perhaps slightly another approach is required.
If we use some other tool like dnSpy and try to search for the answers, we can see some values are defined as "ObscuredInt".
View attachment 4533408
Well, at least name implies that we can expect it to be int - that's something.
This "obscuredint" struct has its own values like encrypted value and a key. Encryption done simply by XOR-ing two values.
View attachment 4533410
So we should search for a pair of 4 byte values, they will look similar except maybe 1-2 lowest bytes. Also every time value is updated, both key and value got changed.
What i did is a search with CE for unknown 4 bytes value, then rescan every time health got changed.
View attachment 4533426
Now here is something we can look at.
We know that character has 123 Hp (7B hex).
View attachment 4533430
View attachment 4533428
If we xor two found values we will get 0x4B26746D xor 0x4B267416 = 0x7B. Looks good!
Lets "assume" that first value is a key and second is a "encrypted Hp", lets change secod value to (255 is max hp)= 0xFF xor 0x4B26746D = 0x4B267492
It does not update immediately
View attachment 4533435
but after in-game update it looks alright
View attachment 4533437
notice, that after getting hit again both key and hp value are changed.
View attachment 4533452

Additionally we can botch "GenerateKey" function inside ACTk.runtime.dll (will be automatically loaded as dependency) with dnSpy.
View attachment 4533460
Lets make it so it will always return 0x55555555
View attachment 4533462
Now we can perform aob scan with CE (assuming initial hp is 255). There are two results - first is a struct for current Hp and the second one with max Hp.
View attachment 4533464
If we look at memory, we will see there are lots of "55" values all over the place!
View attachment 4533467

That was for fun, alternatively you can edit player_data class and replace "ObscuredInt" with just an int and do normal search with CE, but i have not tried this yet. UPD: scratch that, it does not properly compile back (or at least i'm not gonna spend even more time figuring that out).
Also note that i have never wrote anything with yucky C# or did anything with that 'unity' thing.
Have a nice values hunting!
I don't think this is just a slightly different approach, but well at least I got a new lead now. I'll take some time to process everything you've typed, since I'm not a quick learner in this type of task, but I'll try it. So yeah, what was the app you used to check on the lines? DnSpy? What's that? Do I need to get it or brute forcing through CE is enough? And obviously I'll try to disable the thing that obscures the numbers since a lot of games had that... If I can disable it here then I might be able to do similar things in other games.
...
So yeah, thanks for the findings you post here, I'll try to learn it.
 
  • Like
Reactions: OccvltSvc

OccvltSvc

Newbie
Feb 27, 2021
16
44
Do I need to get it or brute forcing through CE is enough?
Yes, you most certainly can brute force through CE.
DnSpy? What's that?
I ... cannot give you comprehensive answer to that, however
that i learned about here, on f95z forums. I use it as a tool to drill for information inside unity-made games when just using CE is not enough.
You can sometimes see somebody posting 'mods' for unity games here and there that require replacing "assemblyCSharp" - i'm pretty sure they used dnSpy to make them.
I used dnSpy to modify "ACTk.Runtime.dll" but the only thing that it helps me is to find required values in a single scan.
But you don't need it to find some values of interest, rescanning changing values is enough. You can see in a first image values are defined as static ("public static obscureint blah" and so) so once game loaded they most likely will not disappear on level transition, restart or other event.
They are two similar looking values next to each other, you can see them in memory view layered next to each other (they are just data structs with 5 or more variable plus padding), once you found them you can read them by xor-ing those pairs, overwrite them by xor-ing desired value with first one and writing result into second (10000 hp or 1000 ranged damage - regular stuff). Use windows calculator for that.
With dnSpy disassembly it just easier to see layout.

As for disabling it, i did not managed to do so; took a quick look and estimated it would require some of code editing, so lets see if you or somebody can come up with a trick for this task.

Hope that will help.
 
  • Like
Reactions: BlackElite

baligerantturtles

New Member
Dec 1, 2024
9
1
That was for fun, alternatively you can edit player_data class and replace "ObscuredInt" with just an int and do normal search with CE, but i have not tried this yet. UPD: scratch that, it does not properly compile back (or at least i'm not gonna spend even more time figuring that out).
Also note that i have never wrote anything with yucky C# or did anything with that 'unity' thing.
Have a nice values hunting!
holy shit im so high felt like i relearned java all over again
 

wicontagion

New Member
Jan 20, 2024
5
2
Perhaps slightly another approach is required.
If we use some other tool like dnSpy and try to search for the answers, we can see some values are defined as "ObscuredInt".
View attachment 4533408
Well, at least name implies that we can expect it to be int - that's something.
This "obscuredint" struct has its own values like encrypted value and a key. Encryption done simply by XOR-ing two values.
View attachment 4533410
So we should search for a pair of 4 byte values, they will look similar except maybe 1-2 lowest bytes. Also every time value is updated, both key and value got changed.
What i did is a search with CE for unknown 4 bytes value, then rescan every time health got changed.
View attachment 4533426
Now here is something we can look at.
We know that character has 123 Hp (7B hex).
View attachment 4533430
View attachment 4533428
If we xor two found values we will get 0x4B26746D xor 0x4B267416 = 0x7B. Looks good!
Lets "assume" that first value is a key and second is a "encrypted Hp", lets change secod value to (255 is max hp)= 0xFF xor 0x4B26746D = 0x4B267492
It does not update immediately
View attachment 4533435
but after in-game update it looks alright
View attachment 4533437
notice, that after getting hit again both key and hp value are changed.
View attachment 4533452

Additionally we can botch "GenerateKey" function inside ACTk.runtime.dll (will be automatically loaded as dependency) with dnSpy.
View attachment 4533460
Lets make it so it will always return 0x55555555
View attachment 4533462
Now we can perform aob scan with CE (assuming initial hp is 255). There are two results - first is a struct for current Hp and the second one with max Hp.
View attachment 4533464
If we look at memory, we will see there are lots of "55" values all over the place!
View attachment 4533467

That was for fun, alternatively you can edit player_data class and replace "ObscuredInt" with just an int and do normal search with CE, but i have not tried this yet. UPD: scratch that, it does not properly compile back (or at least i'm not gonna spend even more time figuring that out).
Also note that i have never wrote anything with yucky C# or did anything with that 'unity' thing.
Have a nice values hunting!
Wow, thanks for small CE hex tutorial.
 
  • Like
Reactions: OccvltSvc

OccvltSvc

Newbie
Feb 27, 2021
16
44
Wow, thanks for small CE hex tutorial.
thanks, glad there is some usefulness in all that posting

holy shit im so high felt like i relearned java all over again
ah right, about that part, normally i does not make any sense to replace whole structure with simple variable - it's kinda embarrassing even - i just thought if they made substitute for something, maybe i can simply use this something. When try to edit class it will complain about existing references; fine, it creates new token, so i edit existing field and although it compiles fine the game just crashes on start (ok, i have no idea of what i' doing).

While there is maybe nothing wrong with microsoft-java managed c#, we are on CE territory here and, maybe i had some successful experience using disassembly tricks before, i had none on unity made games.
Nope, don't wanna deal with it (CE not the best tool for this job anyway)

Here we have it, a bunch of nerd droppings in the most appropriate place for it - right in the middle of colossal pile of half of the half-ass baked pirated porn projects.
(well, this one looks like it has some value in it, that's probably why i'm here)
 
Last edited:
2.40 star(s) 5 Votes