📖 Tutorial How to hack Unity Android Games when there's no Assembly-Csharp.dll (libil2cpp.so method)

Sbenny.com is trusted by 1,323,903 happy users since 2014.
Register

Gourov

Dimitri Petrenko
✌️ Community Team
Member for 5 years
there is no libs folder I searched it and looked for it not there
most probably split apks. Download from here .
Code:
https://apkcombo.com/apk-downloader/
 

temcha

Lurker Lv0️⃣
Member for 3 years
Guys, the whole tutorial is pointed at modding SO file. What if my goal is to change global-metadata.dat file itself. It contains string (at least I'm able to find it via notepad++) which I need to change. How can I modify this file?
 

Legacy

⭐???? ?? ??????⭐
Verified 18+ user
Member for 4 years
Guys, the whole tutorial is pointed at modding SO file. What if my goal is to change global-metadata.dat file itself. It contains string (at least I'm able to find it via notepad++) which I need to change. How can I modify this file?
Open the metadata using hxd, find the string offset and modify it directly.
 

temcha

Lurker Lv0️⃣
Member for 3 years
Open the metadata using hxd, find the string offset and modify it directly.
Thank you, now it's at least clear how to do it.
However now I'm able to only change some specific characters. When I tried to change whole string to another one with smaller length, it broke app completely.
So I can replace it with same length strings only.
Another question to those who may know:
there are tools like UABE/utinyripper, they allow to extract resources from the game. But what if I need to simply replace one image with another? Is there any simple way of doing it?
 
Last edited:

Legacy

⭐???? ?? ??????⭐
Verified 18+ user
Member for 4 years
there are tools like UABE/utinyripper, they allow to extract resources from the game. But what if I need to simply replace one image with another? Is there any simple way of doing it?
Personally, I have never tried that, but try using UABE and UnityEX. Both of these are commonly used to achieve what you aim to do.
 

Gourov

Dimitri Petrenko
✌️ Community Team
Member for 5 years

Sudipto

Lurker Lv0️⃣
Member for 3 years
then either its mono backend or split apks or non unity.
It's unity, I was able to open up the project in unity after extracting with UTinyripper, most things was there (I have used unity for more than a year now) so I doubt it's split apk as you say. This is the game if you are interested in taking a look "My Foxy Girlfriend"
(I mean most things but without the scripts of course) this is my first time trying this but I read a lot of tutorials already. This game seems to be a lot more difficult than the norm.

Edit: and yes, there is no Assembly-CSharp.dll either
 

Gourov

Dimitri Petrenko
✌️ Community Team
Member for 5 years
It's unity, I was able to open up the project in unity after extracting with UTinyripper, most things was there (I have used unity for more than a year now) so I doubt it's split apk as you say. This is the game if you are interested in taking a look "My Foxy Girlfriend"
(I mean most things but without the scripts of course) this is my first time trying this but I read a lot of tutorials already. This game seems to be a lot more difficult than the norm.

Edit: and yes, there is no Assembly-CSharp.dll either
Download from here. Chose default , arm7 , default and download apk.
Code:
https://apkcombo.com/apk-downloader/
 

Sudipto

Lurker Lv0️⃣
Member for 3 years
Download from here. Chose default , arm7 , default and download apk.
Code:
https://apkcombo.com/apk-downloader/
Thank you so much!!!

I also want to ask, could you direct my to some resources I can read to learn about that ARM opcodes or whatever it's called? The values I want to change are method arguments and I can't find any suitable method just returning int32 which is what's covered here.
 

Gourov

Dimitri Petrenko
✌️ Community Team
Member for 5 years
Thank you so much!!!

I also want to ask, could you direct my to some resources I can read to learn about that ARM opcodes or whatever it's called? The values I want to change are method arguments and I can't find any suitable method just returning int32 which is what's covered here.
Well I don't know much about arm. What you exactly want to do ?
 

Sudipto

Lurker Lv0️⃣
Member for 3 years
Well I don't know much about arm. What you exactly want to do ?
well here we see how to modify the values returned by a function that returns an int32, but the game I'm trying to hack does not have any function like that for that value I want to modify. It just has public properties and set methods with an int argument. Like SetPoints(int point) or soemthing like that
 

Gourov

Dimitri Petrenko
✌️ Community Team
Member for 5 years
well here we see how to modify the values returned by a function that returns an int32, but the game I'm trying to hack does not have any function like that for that value I want to modify. It just has public properties and set methods with an int argument. Like SetPoints(int point) or soemthing like that
Ok ... On Arm arguments comes with R register. First Arg as R1 , 2nd one as R2 and so on. If you want modify it , just return a value on the register that getting the value of R1. Or Maybe xerf and set R1 a value for R1. Or try storing value on the field. Its kinda advance topics. Better start with basics. And if you on Discord can add me Gourov #4039.
 

notjesus

Lurker Lv0️⃣
Member for 3 years
Very impressive guide. You're the best
I have a question

You said below
01 00 A0 E3 = MOV R0, 1 = ldc.i4.1

It's hex code, arm assembly and opcode
so ldc.i4.1 = MOV R0, 1 and I can change this asm code at the Online ARM to Hex convert
Perfect!! except one thing

How do you know opcode ldc.i4.1 is MOV R0, 1.
I know opcode and can make some function or edit code but I don't know how to convert to ARM asm code
Please tip to me
 

Gourov

Dimitri Petrenko
✌️ Community Team
Member for 5 years
Very impressive guide. You're the best
I have a question

You said below
01 00 A0 E3 = MOV R0, 1 = ldc.i4.1

It's hex code, arm assembly and opcode
so ldc.i4.1 = MOV R0, 1 and I can change this asm code at the Online ARM to Hex convert
Perfect!! except one thing

How do you know opcode ldc.i4.1 is MOV R0, 1.
I know opcode and can make some function or edit code but I don't know how to convert to ARM asm code
Please tip to me
Its not about converting its about return type. On IL opcodes Idc.i4 returns integers. Idc.i4.1 returns 1 or true. On Arm MOV returns int thats why MOV R0 , #1 returns 1 or true. I dont think you can convert IL to Arm. rather than you should learn Arm.
 

Daniel

Hunter of Sbennytopia
From the Hell
Verified 18+ user
The Cleaner 🧹
Member for 3 years
Download from here. Chose default , arm7 , default and download apk.
Code:
https://apkcombo.com/apk-downloader/
Best site out there
 

Zweinsr

Novice Lv1️⃣
Member for 3 years
Hello, thanks for the thread. It's easy to follow but i don't know why but i can't install the apk
Step one to seven , done
Screenshot (394).png
Screenshot (391).png
First I checked the arm code first
Screenshot (395).png

I tried to experiment a bit as I only want to change the value and I'm not sure if the crit calculation stop only from there so i didn't input the ret. But wait folks, don't raise the pitchforks yet for not following the guide as I did that as my next attempt.
Screenshot (398).png

I copied it to HxD and save the lib then i move it to my apk.
For my signer, I used One Click Signer.
I tried the excactly same as the tutorial when inputing the arm in the example after using the converter but still "App not installed".
 
Top