ethan fixy

This commit is contained in:
Your Name 2025-02-23 20:24:34 -06:00
parent e5ecdf5ab4
commit 50aecae0e1
13 changed files with 251 additions and 92 deletions

1
.gitignore vendored
View file

@ -1,2 +1,3 @@
docs_build/ docs_build/
*:Zone.Identifier *:Zone.Identifier
venv/

View file

@ -1,16 +0,0 @@
# About
LL Hax is a community created by Caret. The sole purpose of creating this community was to take notes and do research on hacking the SIFAC game. Then when SIF was getting EoS, Caret made sure that the community could be used for working on that, which followed SIFAS.
Currently, the LL Hax community resides in a cozy discord server, but Caret also set up a matrix server as a back up, just in case (desipte unlikely-ness).
### Discord Server
[https://discord.gg/VnhnvdW8CG](https://discord.gg/VnhnvdW8CG)
### Matrix Server
Matrix is a decentralized messaging system that enables secure communication and collaboration across platforms.
[https://matrix.to/#/#ll-hax:m.sif.moe](https://matrix.to/#/#ll-hax:m.sif.moe)
Check out a list of clients here:
[https://matrix.org/ecosystem/clients/](https://matrix.org/ecosystem/clients/)

27
docs/contributing.md Normal file
View file

@ -0,0 +1,27 @@
# Contributing (To the docs repo)
This repo for the documentation here is open source, so please make your edits there:
`git clone https://codeberg.org/carette/ll-hax-docs.git`
[https://codeberg.org/carette/ll-hax-docs](https://codeberg.org/carette/ll-hax-docs)
DM/ping me (@caretchara) on [Discord](https://discord.gg/VnhnvdW8CG) if you need it to be updated (the public instance).
## Using conda
```sh
conda create --name ll-hax-docs python=3.8.2
conda activate ll-hax-docs
pip install mkdocs mkdocs-material
mkdocs serve
```
## Using venv
```sh
python3 -m venv venv
source venv/bin/activate
pip install mkdocs mkdocs-material
mkdocs serve
```

View file

@ -1,16 +1,24 @@
# Welcome # Welcome
This mkdocs instance includes all documentation related to the terms of Love Live game hacking. I'd like to keep all the important information in one place for easy access and easy contribution for other languages. This mkdocs instance includes all documentation related to the terms of Love Live game hacking.
This repo for the documentation here is open source, so please make your edits there: ## About
LL Hax is a community created by [Caret](https://caret.rs/). The original purpose of creating this community was to take notes and do research on hacking SIFAC. Then when SIF was getting EoS, Caret opened up the community to those users, which led to SIFAS and SIF2.
`git clone git@codeberg.org:carette/ll-hax-docs.git` Currently, the LL Hax community resides in a cozy discord server, but Caret also set up a matrix server as a back up, just in case (desipte unlikely-ness).
[https://codeberg.org/carette/ll-hax-docs](https://codeberg.org/carette/ll-hax-docs) ### Discord Server
[https://discord.gg/VnhnvdW8CG](https://discord.gg/VnhnvdW8CG)
DM me on [Discord](https://discord.gg/VnhnvdW8CG) if you need it to be updated (the public instance). ### Matrix Server
Matrix is a decentralized messaging system that enables secure communication and collaboration across platforms.
[https://matrix.to/#/#ll-hax:m.sif.moe](https://matrix.to/#/#ll-hax:m.sif.moe)
Check out a list of clients here:
[https://matrix.org/ecosystem/clients/](https://matrix.org/ecosystem/clients/)
# Notable Users ## Notable Users
Below is a list of notable users who have made contributions ranging from a few helpful messages to entire archival projects of games. This list is not in any particular order. If you would like your name removed, added or updated in anyway (as I've likely forgotten or made a mistake), please make a pull request. Below is a list of notable users who have made contributions ranging from a few helpful messages to entire archival projects of games. This list is not in any particular order. If you would like your name removed, added or updated in anyway (as I've likely forgotten or made a mistake), please make a pull request.
- CursedBlackCat - CursedBlackCat

View file

@ -1,5 +1,6 @@
(the following was copied from the fandom wiki) (the following was copied from the fandom wiki)
Love Live! School idol festival (ラブライブ!スクールアイドルフェスティバル Rabu raibu! Sukūru Aidoru Fesutibaru, LLSIF) was a rhythm game released for iOS and Android, based on the Love Live! franchise. It was published by Bushiroad and developed by KLab Inc. and was released on April 16, 2013 for iOS and June 6, 2013 for Android devices. Love Live! School idol festival (ラブライブ!スクールアイドルフェスティバル Rabu raibu! Sukūru Aidoru Fesutibaru, LLSIF) was a rhythm game released for iOS and Android, based on the Love Live! franchise. It was published by Bushiroad and developed by KLab Inc. and was released on April 16, 2013 for iOS and June 6, 2013 for Android devices.
An English version was released on May 12, 2014 under the title "School Idol Festival" at version 1.6. A Taiwanese version was released on May 22, 2014 under Mobimon Inc. at version 1.2. A Chinese version was released on June 12, 2014 under MariyGames at version 1.0. A Korean version was released on July 1, 2014 under NHN Entertainment Corp. at version 1.1. The Korean version was shut down and merged with the Global version on August 10, 2016. The Traditional Chinese version was shut down and merged with the Global version as of May 17, 2017. The Japanese Version was merged with the Global Version on June 10, 2021 and the Korean version & Traditional Chinese options was removed. An English version was released on May 12, 2014 under the title "School Idol Festival" at version 1.6. A Taiwanese version was released on May 22, 2014 under Mobimon Inc. at version 1.2. A Chinese version was released on June 12, 2014 under MariyGames at version 1.0. A Korean version was released on July 1, 2014 under NHN Entertainment Corp. at version 1.1. The Korean version was shut down and merged with the Global version on August 10, 2016. The Traditional Chinese version was shut down and merged with the Global version as of May 17, 2017. The Japanese Version was merged with the Global Version on June 10, 2021 and the Korean version & Traditional Chinese options was removed.
@ -8,6 +9,8 @@ An arcade version was announced to be in production on November 27, 2015 and was
A successor to the game Love Live! School idol festival 2 MIRACLE LIVE! was announced on September 25, 2022, also featuring Nijigasaki High School Idol Club and Liella!. A successor to the game Love Live! School idol festival 2 MIRACLE LIVE! was announced on September 25, 2022, also featuring Nijigasaki High School Idol Club and Liella!.
On January 31, 2023, it was announced that the game's service would be shut down on March 31, 2023. [^1] On January 31, 2023, it was announced that the game's service would be shut down on March 31, 2023.[^1]
Looking to setup a private server? Continue onto [Private Servers](private-servers.md). Looking to setup a private server? Continue onto [Private Servers](private-servers.md).
[^1]: https://love-live.fandom.com/wiki/Love_Live!_School_idol_festival

View file

@ -1,11 +1,12 @@
These steps aren't needed unless you want to host your server somewhere other than the same device, so either on a seperate server/computer. These steps aren't needed unless you want to host your server somewhere other than the same device, so either on a seperate server/computer.
Prerequisites: ### Prerequisites:
- [apktool](https://apktool.org/) - [apktool](https://apktool.org/)
- [libhonoka](https://github.com/DarkEnergyProcessor/libhonoka/releases/) - [libhonoka](https://github.com/DarkEnergyProcessor/libhonoka/releases/)
- [zipalign](https://developer.android.com/tools/zipalign) (part of the android sdk) - [uber-apk-signer](https://github.com/patrickfav/uber-apk-signer)
- [apksigner](https://developer.android.com/tools/apksigner) (part of the android sdk)
- A keystore. For your convinience you can download [this keystore](https://codeberg.org/arina999999997/nozomi/raw/branch/master/sifkey.keystore) with the password `123456`. ### Steps:
1. Download the [modified lovelive sif apk](https://cdn.sif.moe/lovelive-community.apk) ([jp](https://pixeldrain.com/u/8vx6azHr)) 1. Download the [modified lovelive sif apk](https://cdn.sif.moe/lovelive-community.apk) ([jp](https://pixeldrain.com/u/8vx6azHr))
2. Run `apktool d lovelive-community.apk` to decompile the apk. 2. Run `apktool d lovelive-community.apk` to decompile the apk.
@ -16,7 +17,13 @@ Prerequisites:
7. Replace the `assets/AppAssets.zip/config/server_info.json` file with the new one you patched. 7. Replace the `assets/AppAssets.zip/config/server_info.json` file with the new one you patched.
8. Get the md5sum of `AppAssets.zip` and replace `assets/version` with the new md5sum. 8. Get the md5sum of `AppAssets.zip` and replace `assets/version` with the new md5sum.
9. Run `apktool b lovelive-community` to re-build the apk. 9. Run `apktool b lovelive-community` to re-build the apk.
10. Run `zipalign -f 4 lovelive-community/dist/<apk name> LLSIF_patched.apk`. 10. Run `uber-apk-signer -a lovelive-community/dist/<apk name>.apk LLSIF_patched.apk`.
11. Sign the apk by running `apksigner sign -ks sifkey.keystore LLSIF_patched.apk`.
**uber-apk-signer will sign the APK with a debug keystore. You should sign with your own keystore if you are planning to distribute this!**
Assuming you did it correctly, your newly signed apk is ready to install and run. Assuming you did it correctly, your newly signed apk is ready to install and run.
### Web based patcher
I compiled libhonoka to WebAssembly and made it an easy GUI to use: [https://ethanaobrien.github.io/sif-patcher/](https://ethanaobrien.github.io/sif-patcher/)
You will still need to follow step 10 from above.

View file

@ -1,15 +1,23 @@
These steps are required for iOS users looking to play sif. These steps are required for iOS users looking to play sif.
Prerequisites: ### Prerequisites:
- linux/macos/wsl2
- [libhonoka](https://github.com/DarkEnergyProcessor/libhonoka/releases/) - linux/macos/wsl2
- [libhonoka](https://github.com/DarkEnergyProcessor/libhonoka/releases/)
1. Download the [modified lovelive sif ipa](https://mega.nz/file/R1dQhLCL#mANiHWyDQY8ZmzkFcMadLTpKLpaWT7r0jiQE4wQ_Mqk)
2. Run `unzip Application.ipa` to unzip the app. ### Steps:
3. Use libhonoka to decrypt `server_info.json`. (`honoka2 server_info.json`) located at `Payload\LoveLive.app\ProjectResources\config\`
4. Edit the json file to point to your server. 1. Download the [modified lovelive sif ipa](https://mega.nz/file/R1dQhLCL#mANiHWyDQY8ZmzkFcMadLTpKLpaWT7r0jiQE4wQ_Mqk)
5. Re-encrypt the json file by running `honoka2 -e -j server_info.json`. 2. Run `unzip Application.ipa` to unzip the app.
6. Run `zip -qr "Application.resigned.ipa" Payload` to re-zip the ipa. 3. Use libhonoka to decrypt `server_info.json`. (`honoka2 server_info.json`) located at `Payload\LoveLive.app\ProjectResources\config\`
7. Use [sideloadly](https://sideloadly.io/) to install the ipa. 4. Edit the json file to point to your server.
5. Re-encrypt the json file by running `honoka2 -e -j server_info.json`.
Assuming you did it correctly, you should be able to open the app and play sif. 6. Run `zip -qr "Application.resigned.ipa" Payload` to re-zip the ipa.
7. Use [sideloadly](https://sideloadly.io/) to install the ipa.
Assuming you did it correctly, you should be able to open the app and play sif.
### Web based patcher
I compiled libhonoka to WebAssembly and made it an easy GUI to use: [https://ethanaobrien.github.io/sif-patcher/](https://ethanaobrien.github.io/sif-patcher/)
Then just use [sideloadly](https://sideloadly.io/) to install the ipa.

View file

@ -1,46 +1,13 @@
Special thanks to AuahDark and hentaku for being the gods that carried us this far. If it wasn't for these two (and many others in the community), we would not have the game to play anymore! Special thanks to AuahDark and hentaku for being the gods that carried us this far. If it wasn't for these two (and many others in the community), we would not have the game to play anymore!
Currently there are a few methods of playing SIF in a semi-online state, but you are the hoster of this server. There are however public CDN servers (hosting the game files like musics and story files). This is also self-hostable but there is no written guide for it at the moment. Currently there are a few methods of playing SIF in a semi-online state, but you are the hoster of this server. There are however public CDN servers (hosting the game files like musics and story files). This is also self-hostable but there is no written guide for it at the moment.
## Setup for Android
Retrieve the APK file. There are many locations for this, but the main requirement is that it's patched to work with the server we'll be setting up. Try getting it at the locations below: Both iOS and Android are supported. Follow the guide for your platform below:
- [https://cdn.sif.moe/lovelive-community.apk](https://cdn.sif.moe/lovelive-community.apk) <br>
- [https://pixeldrain.com/u/8vx6azHr](https://pixeldrain.com/u/8vx6azHr)
Android: **[Setup for Android](sif-android.md)**
The differences of the ones above are JP and Global. Global has the following done to it:
iOS: **You must use NPPS4** (unless you modify LLSIF@home). See [this guide](https://gist.github.com/MikuAuahDark/eabf54e9db3f5004e3ccd9a72f0d79d5#npps4-in-pclaptop), and [patch the ipa](ipa-patching.md).
- Automatic in-game language selection between English and Japanese based on system language or Android 13 per-app language setting.
- Runs natively in Android emulator. All binaries supported by Android, including x86-64, is available.
- Activates debug mode which show little bit of more information in-game.
- Backtrace, AppsFlyer, and Google Play is neutralized.
- Backtrace error is printed to logcat.
- Uses RSA private key from tungnotpunk/LLSIF@Home which should be compatible with LLSIF@Home and NPPS4.
- AppAssets.zip is patched to load from localhost:51376. This means it's compatible with LLSIF@Home and NPPS4.
Note: It does NOT contain patch to neutralize X-Message-Sign check. If you can't get XMS verification working, you need to patch it yourself. Well, you should make your private server generates correct XMS though.
Note2: It's recommended to launch the game in English for the first time. Otherwise, when you launch the game in Japanese for the first time, switching to English will erase all your game data (excluding your account). This logic is in the Lua script of the game. Help on neutralizing this behavior is welcome.
How to generate X-Message-Sign:
- [NPPS4](https://github.com/DarkEnergyProcessor/NPPS4/blob/b24b4e2a71be3c268c069a49bd3fae2bb25d7feb/npps4/util.py#L37-L42)
- [LLSIF@Home](https://codeberg.org/dic1911/LLSIF.local/src/commit/e7e780258dca86c2f1a77577897fad23298fe9c7/handler/util.js#L18-L34)
After the APK is retrieved and installed, then you should install the private server.
## Local server using LLSIF@Home
1. Install Termux (I recommend to download from [F-Droid](https://f-droid.org/en/packages/com.termux/), [direct link for latest release atm](https://f-droid.org/repo/com.termux_118.apk)) and open it. **Do not download from google play**. Termux on google play is outdated and will not work.
2. Run this command(s) inside of `Termux`:
```curl http://ll.sif.moe/android | bash```
***OR*** (if the command above fails do the commands below)
```wget http://ll.sif.moe/android```
```bash android```
(curl is broken currently, this will be one command if curl is fixed)
3. After it is done and it shows you the link to the discord/matrix server. Enter `exit` and re-launch termux.
4. You can run `runserver` to start the private server.
4. After this is done, you should be able to launch the game and it should just work. Message in the discord or matrix if help is needed.
## Local server using NPPS4
- Please refer to [this guide](https://gist.github.com/MikuAuahDark/eabf54e9db3f5004e3ccd9a72f0d79d5)
[^1]: https://love-live.fandom.com/wiki/Love_Live!_School_idol_festival

61
docs/sif/sif-android.md Normal file
View file

@ -0,0 +1,61 @@
# Setup for Android
## Download the APK (Android Package)
Retrieve the APK file. There are many locations for this, but the main requirement is that it's patched to work with the server we'll be setting up. Try getting it at the locations below:
- [https://cdn.sif.moe/lovelive-community.apk](https://cdn.sif.moe/lovelive-community.apk)
- [https://ethanthesleepy.one/public/lovelive/sif/lovelive-community.apk](https://ethanthesleepy.one/public/lovelive/sif/lovelive-community.apk)
The apk has been modified to do the following:
- Automatic in-game language selection between English and Japanese based on system language or Android 13 per-app language setting.
- Runs natively in Android emulator. All binaries supported by Android, including x86-64, is available.
- Activates debug mode which show a little bit more information in-game.
- Backtrace, AppsFlyer, and Google Play is neutralized.
- Backtrace error is printed to logcat.
- Uses RSA private key from tungnotpunk/LLSIF@Home which should be compatible with LLSIF@Home and NPPS4.
- AppAssets.zip is patched to load from localhost:51376. This means it's compatible with LLSIF@Home and NPPS4.
This apk is signed with the following cert hash. This can be verified with an app like appverifier.
`07:31:46:BE:D1:B2:13:E6:00:57:DA:4C:05:4F:A1:9C:41:AA:99:77:E2:A8:E8:26:93:CB:84:54:E6:C1:8E:71`
Note: It does NOT contain patch to neutralize X-Message-Sign check. If you can't get XMS verification working, you need to patch it yourself. You should make your private server generate the correct XMS, though.
Note2: It's recommended to launch the game in English for the first time. Otherwise, when you launch the game in Japanese for the first time, switching to English will erase all your game data (excluding your account). This logic is in the Lua script of the game. Help on neutralizing this behavior is welcome.
How to generate X-Message-Sign:
- [Python](https://github.com/DarkEnergyProcessor/NPPS4/blob/b24b4e2a71be3c268c069a49bd3fae2bb25d7feb/npps4/util.py#L37-L42)
- [NodeJS](https://codeberg.org/dic1911/LLSIF.local/src/commit/e7e780258dca86c2f1a77577897fad23298fe9c7/handler/util.js#L18-L34)
- [Rust](https://github.com/ethanaobrien/sif-server/blob/4dbd8d837ebb1d497420359c340541e8c8c69316/src/router/global.rs#L73-L92)
After the APK is retrieved and installed, then you should install the private server.
## Modifying the app to point to your PC
Please see [APK patching](apk-patching.md).
## Seting up the private server
There are currently 2 recommended private servers for SIF:
- NPPS4: Written in Python. This server implements progression and attempts to emulate the official server as closely as possible. Gacha works.
- LLSIF@Home: Written in JavaScript using NodeJS. This server gives you all cards, and all songs are unlocked. There is no progression, and gacha does not work. **This method is recommended for those that are less-techsavvy.**
## Setting up LLSIF@Home
1. Install Termux
2. Run this command(s) inside of `Termux`:
```
curl http://ll.sif.moe/android | bash
```
***OR*** (if the command above fails do the commands below)
```
wget http://ll.sif.moe/android
bash android
```
(curl is broken currently, this will be one command if curl is fixed)
3. After it is done and it shows you the link to the discord/matrix server. **Enter `exit` and re-launch termux.**
4. You can run `runserver` to start the private server.
4. After this is done, you should be able to launch the game and it should just work. Message in the discord or matrix if help is needed.
## Setting up NPPS4
- Please refer to [this guide](https://gist.github.com/MikuAuahDark/eabf54e9db3f5004e3ccd9a72f0d79d5)

View file

@ -0,0 +1,12 @@
(the following was copied from the fandom wiki)
Love Live! School idol festival 2 MIRACLE LIVE! (ラブライブスクールアイドルフェスティバル2 MIRACLE LIVE! Rabu raibu! Sukūru Aidoru Fesutibaru 2 MIRAKURU RAIBU!, LLSIF 2 MIRACLE LIVE!) was a rhythm game and the sequel to the game Love Live! School idol festival, based on the Love Live! franchise. The game was announced on September 25, 2022 and was officially released on April 15, 2023 with the Global, Korean, and Traditional Chinese versions following on February 1, 2024. The original release date was set for December 2023, but delays in development pushed back the release of the game.
## The users perspective
SIF2 was a funny game. Global got an EOS and release date in the same announcement, and the game was incredibly unstable the entire time. This was mainly because they cheaped out on the server (very cheaped out) which caused the connection experience with global to be terrible. JP was okay afaik, but still had its fair share of issues.
Wanting to setup your own on-device server? Check [Easy install](easy-install.md).
Wanting to learn more and setup your own local server? Check [Private Servers](private-servers.md)

17
docs/sif2/easy-install.md Normal file
View file

@ -0,0 +1,17 @@
Both iOS and Android are supported. Follow the guide for your platform below:
## Android
Download the latest release of the [EW Android app](https://git.ethanthesleepy.one/ethanaobrien/ew-android/releases). This app will walk you through the setup, tell you what to download, and run the server for you.
This apk is signed with the following cert hash. This can be verified with an app like appverifier.
`18:A6:C1:5E:13:B7:9C:D3:A6:A3:39:59:2C:A9:6F:AD:04:9B:E8:E7:7A:02:9E:D7:4A:0A:5B:87:6E:F0:85:7D`
## iOS
1. Use Sideloadly to install [the global ipa](https://ethanthesleepy.one/public/lovelive/sif2/sif2-gl.ipa) or [the JP ipa](https://ethanthesleepy.one/public/lovelive/sif2/sif2-jp.ipa).
2. Set the asset url in system settings (under sif2 app) to `https://sif2.sif.moe` *(no / at the end)*
3. Setup a server on your computer using the latest ew release: [https://git.ethanthesleepy.one/ethanaobrien/ew/releases](https://git.ethanthesleepy.one/ethanaobrien/ew/releases)
4. Plug http://<your computer ipv4 address here> into settings (example: `http://192.168.1.123` *no / at the end*)
You can now open the app and play, if you did it right......

View file

@ -0,0 +1,61 @@
# Private Servers
## There are 3 servers
- EW (ew, why?): [source](https://git.ethanthesleepy.one/ethanaobrien/ew), [mirror](https://github.com/ethanaobrien/ew)
- Edelstein (in development): [source](https://github.com/Arasfon/Edelstein)
- alive-serv (in development): [source](https://github.com/miraclealive/alive-serv) (I found this while googling)
## Development stuff
### Asset tree
Sif2 uses unity assetbundles to distribute assets. They also verify the asset hashes, yayyy!!!! (sarcasm).
The initial request containing hashes, filenames, and assetbundle sizes has the name of `387b0126300c54515911bffb6540982d.unity3d`
Files are at `<FileHash>/<FileName>.ext`
### Masterdata
The masterdata is shipped under filename `6572ca8348bc566b8cf01d43c4cc1b58.unity3d`. Once extracted, all files were encrypted.
You can decrypt the masterdata with the following python function:
```py
def decrypt_mst(bin_file):
salt = bin_file[16:32]
pbk = hashlib.pbkdf2_hmac(
"sha1", "3559b435f24b297a79c68b9709ef2125".encode("utf-8"), salt, 1000
)
key = pbk[:16]
iv_length = bin_file[32] # = 16
iv = bin_file[36:36 + iv_length]
data = bin_file[36 + iv_length:]
cipher = Cipher(
algorithms.AES(key), modes.CBC(iv), backend=default_backend()
)
decryptor = cipher.decryptor()
decrypted = decryptor.update(data) + decryptor.finalize()
return decrypted[:-decrypted[-1]]
```
All files are then binary serialized. I'll document that part later. Maybe...
### Modification
Please see the [SIF2 asset modification repository](https://git.ethanthesleepy.one/ethanaobrien/sif2-asset-modification). You will need to download SIF2 assets for the language of your choice.
### Downloading assets
Assets can be found on archive.org:
- JP: [https://archive.org/details/lovelive-sif2-jp-assets](https://archive.org/details/lovelive-sif2-jp-assets)
- GLOBAL: [https://archive.org/details/lovelive-sif2-gl-assets](https://archive.org/details/lovelive-sif2-gl-assets)
### Changing the server URL
TODO...

View file

@ -14,8 +14,11 @@ nav:
- Private (self hostable) servers: sifas/private-server.md - Private (self hostable) servers: sifas/private-server.md
- Easy install: sifas/easy-install.md - Easy install: sifas/easy-install.md
- Patching the apk: sifas/apk-patching.md - Patching the apk: sifas/apk-patching.md
- SIF2: sif2/README.md - SIF2:
- About: about.md - SIF2 - Introduction: sif2/README.md
- Private (self hostable) servers: sif2/private-servers.md
- Easy install: sif2/easy-install.md
- Contributing: contributing.md
theme: theme:
name: material name: material
language: en language: en