ll-hax-docs/search/search_index.json
2025-02-23 20:27:29 -06:00

1 line
No EOL
57 KiB
JSON

{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Home","text":""},{"location":"#welcome","title":"Welcome","text":"<p>This mkdocs instance includes all documentation related to the terms of Love Live game hacking.</p>"},{"location":"#about","title":"About","text":"<p>LL Hax is a community created by Caret. 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.</p> <p>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).</p>"},{"location":"#discord_server","title":"Discord Server","text":"<p>https://discord.gg/VnhnvdW8CG</p>"},{"location":"#matrix_server","title":"Matrix Server","text":"<p>Matrix is a decentralized messaging system that enables secure communication and collaboration across platforms. </p> <p>https://matrix.to/#/#ll-hax:m.sif.moe</p> <p>Check out a list of clients here: https://matrix.org/ecosystem/clients/</p>"},{"location":"#notable_users","title":"Notable Users","text":"<p>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.</p> <ul> <li>CursedBlackCat</li> <li>tungnotpunk</li> <li>hentaku</li> <li>AuahDark</li> <li>rayfirefist</li> <li>varnotfound</li> <li>asesidaa</li> <li>BocuD</li> <li>gam</li> <li>chikachi0801</li> <li>CPPO</li> <li>Formula91</li> <li>Shiz</li> <li>cosplayerkyo</li> <li>merkusberkus</li> </ul>"},{"location":"contributing/","title":"Contributing","text":""},{"location":"contributing/#contributing_to_the_docs_repo","title":"Contributing (To the docs repo)","text":"<p>This repo for the documentation here is open source, so please make your edits there:</p> <p><code>git clone https://codeberg.org/carette/ll-hax-docs.git</code></p> <p>https://codeberg.org/carette/ll-hax-docs</p> <p>DM/ping me (@caretchara) on Discord if you need it to be updated (the public instance).</p>"},{"location":"contributing/#using_conda","title":"Using conda","text":"<pre><code>conda create --name ll-hax-docs python=3.8.2\nconda activate ll-hax-docs\npip install mkdocs mkdocs-material\nmkdocs serve\n</code></pre>"},{"location":"contributing/#using_venv","title":"Using venv","text":"<pre><code>python3 -m venv venv\nsource venv/bin/activate\npip install mkdocs mkdocs-material\nmkdocs serve\n</code></pre>"},{"location":"pugu/","title":"Puchiguru","text":""},{"location":"pugu/#puchiguru","title":"Puchiguru","text":"<p>Puchiguru Love Live! (\u3077\u3061\u3050\u308b\u30e9\u30d6\u30e9\u30a4\u30d6\uff01 Puchiguru Rabu raibu!) was a game released for iOS and Android, based on the Love Live! franchise. It was developed and published by Pokelabo, Inc. and was released on April 24, 2018 for both iOS and Android devices. The game's service was terminated on May 31, 2019.^1</p> <p>Puchiguru (as of 2023) has a private server hosted by <code>CursedBlackCat</code>.</p>"},{"location":"pugu/#discord","title":"Discord","text":"<p>https://discord.gg/S64Yryk</p> <p>(Copied from the Discord)</p> <p>Private server APK: https://pokenesos.com/</p> <p>IOS Method:</p> <p>https://pokenesos.com/ios</p> <p>(Copied from Reddit by <code>CursedBlackCat</code>)</p> <p>Puchiguru download links for Android and iOS! iOS Link</p> <p>iOS App Store Download Link Android Links</p> <p>Android Google Play Download Link</p> <p>Android APK Download Link (APKpure)</p> <p>Android QooApp Link</p> <p>Please note that you will not be able to play the game until the server goes live at 12PM noon on April 24, JST. A countdown timer until then can be found here. </p>"},{"location":"sif/","title":"SIF - Introduction","text":"<p>(the following was copied from the fandom wiki)</p> <p>Love Live! School idol festival (\u30e9\u30d6\u30e9\u30a4\u30d6\uff01\u30b9\u30af\u30fc\u30eb\u30a2\u30a4\u30c9\u30eb\u30d5\u30a7\u30b9\u30c6\u30a3\u30d0\u30eb Rabu raibu! Suk\u016bru 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.</p> <p>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 &amp; Traditional Chinese options was removed.</p> <p>An arcade version was announced to be in production on November 27, 2015 and was made available for play on December 6, 2016. A new game titled Love Live! School Idol Festival ALL STARS was announced to be in production on September 21, 2017, and was released on September 26, 2019. Both games will continue to run concurrently alongside each other.</p> <p>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!.</p> <p>On January 31, 2023, it was announced that the game's service would be shut down on March 31, 2023.^1</p> <p>Looking to setup a private server? Continue onto Private Servers.</p>"},{"location":"sif/apk-patching/","title":"Patching the apk","text":"<p>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.</p>"},{"location":"sif/apk-patching/#prerequisites","title":"Prerequisites:","text":"<ul> <li>apktool</li> <li>libhonoka</li> <li>uber-apk-signer</li> </ul>"},{"location":"sif/apk-patching/#steps","title":"Steps:","text":"<ol> <li>Download the modified lovelive sif apk (jp)</li> <li>Run <code>apktool d lovelive-community.apk</code> to decompile the apk.</li> <li>Unzip <code>config/server_info.json</code> from <code>assets/AppAssets.zip</code>.</li> <li>Use libhonoka to decrypt <code>server_info.json</code>. (<code>honoka2 server_info.json</code>)</li> <li>Edit the json file to point to your server.</li> <li>Re-encrypt the json file by running <code>honoka2 -e -j server_info.json</code>.</li> <li>Replace the <code>assets/AppAssets.zip/config/server_info.json</code> file with the new one you patched.</li> <li>Get the md5sum of <code>AppAssets.zip</code> and replace <code>assets/version</code> with the new md5sum.</li> <li>Run <code>apktool b lovelive-community</code> to re-build the apk.</li> <li>Run <code>uber-apk-signer -a lovelive-community/dist/&lt;apk name&gt;.apk LLSIF_patched.apk</code>.</li> </ol> <p>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!</p> <p>Assuming you did it correctly, your newly signed apk is ready to install and run.</p>"},{"location":"sif/apk-patching/#web_based_patcher","title":"Web based patcher","text":"<p>I compiled libhonoka to WebAssembly and made it an easy GUI to use: https://ethanaobrien.github.io/sif-patcher/ You will still need to follow step 10 from above.</p>"},{"location":"sif/ipa-patching/","title":"Patching the ipa","text":"<p>These steps are required for iOS users looking to play sif.</p>"},{"location":"sif/ipa-patching/#prerequisites","title":"Prerequisites:","text":"<ul> <li>linux/macos/wsl2</li> <li>libhonoka</li> </ul>"},{"location":"sif/ipa-patching/#steps","title":"Steps:","text":"<ol> <li>Download the modified lovelive sif ipa</li> <li>Run <code>unzip Application.ipa</code> to unzip the app.</li> <li>Use libhonoka to decrypt <code>server_info.json</code>. (<code>honoka2 server_info.json</code>) located at <code>Payload\\LoveLive.app\\ProjectResources\\config\\</code></li> <li>Edit the json file to point to your server.</li> <li>Re-encrypt the json file by running <code>honoka2 -e -j server_info.json</code>.</li> <li>Run <code>zip -qr \"Application.resigned.ipa\" Payload</code> to re-zip the ipa.</li> <li>Use sideloadly to install the ipa.</li> </ol> <p>Assuming you did it correctly, you should be able to open the app and play sif.</p>"},{"location":"sif/ipa-patching/#web_based_patcher","title":"Web based patcher","text":"<p>I compiled libhonoka to WebAssembly and made it an easy GUI to use: https://ethanaobrien.github.io/sif-patcher/ Then just use sideloadly to install the ipa.</p>"},{"location":"sif/private-servers/","title":"Private (self hostable) servers","text":"<p>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!</p> <p>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.</p> <p>Both iOS and Android are supported. Follow the guide for your platform below:</p> <p></p> <p>Android: Setup for Android</p> <p>iOS: You must use NPPS4 (unless you modify LLSIF@home). See this guide, and patch the ipa.</p>"},{"location":"sif/sif-android/","title":"Sif android","text":""},{"location":"sif/sif-android/#setup_for_android","title":"Setup for Android","text":""},{"location":"sif/sif-android/#download_the_apk_android_package","title":"Download the APK (Android Package)","text":"<p>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:</p> <ul> <li>https://cdn.sif.moe/lovelive-community.apk</li> <li>https://ethanthesleepy.one/public/lovelive/sif/lovelive-community.apk</li> </ul> <p>The apk has been modified to do the following:</p> <ul> <li>Automatic in-game language selection between English and Japanese based on system language or Android 13 per-app language setting.</li> <li>Runs natively in Android emulator. All binaries supported by Android, including x86-64, is available.</li> <li>Activates debug mode which show a little bit more information in-game.</li> <li>Backtrace, AppsFlyer, and Google Play is neutralized.</li> <li>Backtrace error is printed to logcat.</li> <li>Uses RSA private key from tungnotpunk/LLSIF@Home which should be compatible with LLSIF@Home and NPPS4.</li> <li>AppAssets.zip is patched to load from localhost:51376. This means it's compatible with LLSIF@Home and NPPS4.</li> </ul> <p>This apk is signed with the following cert hash. This can be verified with an app like appverifier. <code>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</code></p> <p>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.</p> <p>How to generate X-Message-Sign: - Python - NodeJS - Rust</p> <p>After the APK is retrieved and installed, then you should install the private server.</p>"},{"location":"sif/sif-android/#modifying_the_app_to_point_to_your_pc","title":"Modifying the app to point to your PC","text":"<p>Please see APK patching.</p>"},{"location":"sif/sif-android/#seting_up_the_private_server","title":"Seting up the private server","text":"<p>There are currently 2 recommended private servers for SIF:</p> <ul> <li>NPPS4: Written in Python. This server implements progression and attempts to emulate the official server as closely as possible. Gacha works.</li> <li>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.</li> </ul>"},{"location":"sif/sif-android/#setting_up_llsifhome","title":"Setting up LLSIF@Home","text":"<ol> <li>Install Termux</li> <li>Run this command(s) inside of <code>Termux</code>:</li> </ol> <pre><code>curl http://ll.sif.moe/android | bash\n</code></pre> <p>OR (if the command above fails do the commands below)</p> <pre><code>wget http://ll.sif.moe/android\nbash android\n</code></pre> <p>(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 <code>exit</code> and re-launch termux. 4. You can run <code>runserver</code> 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.</p>"},{"location":"sif/sif-android/#setting_up_npps4","title":"Setting up NPPS4","text":"<ul> <li>Please refer to this guide</li> </ul>"},{"location":"sif2/","title":"SIF2 - Introduction","text":"<p>(the following was copied from the fandom wiki)</p> <p>Love Live! School idol festival 2 MIRACLE LIVE! (\u30e9\u30d6\u30e9\u30a4\u30d6\uff01\u30b9\u30af\u30fc\u30eb\u30a2\u30a4\u30c9\u30eb\u30d5\u30a7\u30b9\u30c6\u30a3\u30d0\u30eb2 MIRACLE LIVE! Rabu raibu! Suk\u016bru 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.</p>"},{"location":"sif2/#the_users_perspective","title":"The users perspective","text":"<p>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.</p> <p>Wanting to setup your own on-device server? Check Easy install.</p> <p>Wanting to learn more and setup your own local server? Check Private Servers</p>"},{"location":"sif2/easy-install/","title":"Easy install","text":"<p>Both iOS and Android are supported. Follow the guide for your platform below:</p>"},{"location":"sif2/easy-install/#android","title":"Android","text":"<p>Download the latest release of the EW Android app. This app will walk you through the setup, tell you what to download, and run the server for you.</p> <p>This apk is signed with the following cert hash. This can be verified with an app like appverifier. <code>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</code></p>"},{"location":"sif2/easy-install/#ios","title":"iOS","text":"<ol> <li>Use Sideloadly to install the global ipa or the JP ipa.</li> <li>Set the asset url in system settings (under sif2 app) to <code>https://sif2.sif.moe</code> (no / at the end)</li> <li>Setup a server on your computer using the latest ew release: https://git.ethanthesleepy.one/ethanaobrien/ew/releases</li> <li>Plug http:// into settings (example: <code>http://192.168.1.123</code> no / at the end) <p>You can now open the app and play, if you did it right......</p>"},{"location":"sif2/private-servers/","title":"Private (self hostable) servers","text":""},{"location":"sif2/private-servers/#private_servers","title":"Private Servers","text":""},{"location":"sif2/private-servers/#there_are_3_servers","title":"There are 3 servers","text":"<ul> <li>EW (ew, why?): source, mirror</li> <li>Edelstein (in development): source</li> <li>alive-serv (in development): source (I found this while googling)</li> </ul>"},{"location":"sif2/private-servers/#development_stuff","title":"Development stuff","text":""},{"location":"sif2/private-servers/#asset_tree","title":"Asset tree","text":"<p>Sif2 uses unity assetbundles to distribute assets. They also verify the asset hashes, yayyy!!!! (sarcasm).</p> <p>The initial request containing hashes, filenames, and assetbundle sizes has the name of <code>387b0126300c54515911bffb6540982d.unity3d</code></p> <p>Files are at <code>&lt;FileHash&gt;/&lt;FileName&gt;.ext</code></p>"},{"location":"sif2/private-servers/#masterdata","title":"Masterdata","text":"<p>The masterdata is shipped under filename <code>6572ca8348bc566b8cf01d43c4cc1b58.unity3d</code>. Once extracted, all files were encrypted.</p> <p>You can decrypt the masterdata with the following python function:</p> <pre><code>def decrypt_mst(bin_file):\n salt = bin_file[16:32]\n pbk = hashlib.pbkdf2_hmac(\n \"sha1\", \"3559b435f24b297a79c68b9709ef2125\".encode(\"utf-8\"), salt, 1000\n )\n key = pbk[:16]\n\n iv_length = bin_file[32] # = 16\n iv = bin_file[36:36 + iv_length]\n data = bin_file[36 + iv_length:]\n\n cipher = Cipher(\n algorithms.AES(key), modes.CBC(iv), backend=default_backend()\n )\n decryptor = cipher.decryptor()\n decrypted = decryptor.update(data) + decryptor.finalize()\n return decrypted[:-decrypted[-1]]\n</code></pre> <p>All files are then binary serialized. I'll document that part later. Maybe...</p>"},{"location":"sif2/private-servers/#modification","title":"Modification","text":"<p>Please see the SIF2 asset modification repository. You will need to download SIF2 assets for the language of your choice.</p>"},{"location":"sif2/private-servers/#downloading_assets","title":"Downloading assets","text":"<p>Assets can be found on archive.org:</p> <ul> <li>JP: https://archive.org/details/lovelive-sif2-jp-assets</li> <li>GLOBAL: https://archive.org/details/lovelive-sif2-gl-assets</li> </ul>"},{"location":"sif2/private-servers/#changing_the_server_url","title":"Changing the server URL","text":"<p>TODO...</p>"},{"location":"sifac/","title":"SIFAC","text":""},{"location":"sifac/#sifac","title":"SIFAC","text":"<p>Love Live! School idol festival ~after school ACTIVITY~ (\u30e9\u30d6\u30e9\u30a4\u30d6\uff01\u30b9\u30af\u30fc\u30eb\u30a2\u30a4\u30c9\u30eb\u30d5\u30a7\u30b9\u30c6\u30a3\u30d0\u30eb ~after school ACTIVITY~) is an arcade version of Love Live! School idol festival. It was first announced to be in production on November 27, 2015 and was made available for play on December 6, 2016.</p> <p>Aqours was first announced to be added to the game on October 20, 2017. Aqours was added to the game with the Love Live! School Idol Festival: After School Activity Next Stage update on December 6, 2018. It was announced on October 26, 2020 that the game will receive a final update on November 10, 2020. No new songs or cards will be added passed that point, essentially ending support for the arcade version.</p> <p>On October 10th 2020, it was announced that a port to the Playstation 4, titled Love Live! School idol festival ~after school ACTIVITY~ WaiWai! Home Meeting!! was in development. This version of the game was also announced with English language support, notably being the first iteration of the game to be released outside of Japan and in another language. It was released worldwide on March 24th 2021.</p>"},{"location":"sifac/#how_to_play","title":"How to Play","text":"<p>Obtaining the game files for this is gray area due to the copyright restriction playing an old arcade game entails. If you agree with me, you'd think this is total BS and want to play things that are considered dead or EoS even after the matter. Archival and preservation are the main motivators here, not money or business!</p> <ol> <li>I do not suggest looking on a certain site called nyaa.si or of similar origin as it will contain the borderline illegal method of getting the game</li> <li>Once the game files are obtained. (From a dump of the arcade machine or of other methods) extract them or decrypt the virtual hard disk (ask around for help if you need this method).</li> <li>The binary you want to run will be <code>ll3.exe</code>, but don't run it yet! There are some command line arguments that you can run it with to change how it acts:</li> </ol>"},{"location":"sifac/#cli_arguments","title":"CLI Arguments","text":"<p><code>-highquality</code>: Runs the game with higher quality graphics. Not really sure if this makes a huge difference or not. </p> <p><code>-centralmode</code>: Enables a specific game mode designed for the gacha version, where players obtain randomized virtual items.</p> <p><code>-windowmode</code> or <code>-singlemode</code>: Runs the game in a resizable window instead of full-screen mode, useful for debugging or testing.</p> <p><code>-sh</code> (screen height): Sets the desired vertical size or resolution of the game window.</p> <p><code>-sw</code> (screen width): Sets the desired horizontal size or resolution of the game window.</p> <p><code>-wx</code>: Controls the horizontal position of the game window, specifying where the left edge of the window will be positioned.</p> <p><code>-wy</code>: Controls the vertical position of the game window, specifying where the top edge of the window will be positioned.</p>"},{"location":"sifac/#running_the_game","title":"Running The game","text":""},{"location":"sifac/#offline_mode","title":"Offline Mode","text":"<ol> <li>Once you've setup a <code>.bat</code> script in that directory to run the game, open it. Example below: <p><code>bat ll3.exe -singlemode -sw 1920 -sh 1080 -highquality</code></p> </li> <li>Launch the batch file and the game should open. Ensure you have the correct patched file(s) for the functionality you want to unlock. By default, the game will be capable of running in 'Free Play' mode (activate through the test configuration page). This allows for some gameplay (play up to a certain amount of songs per session, not all songs are unlocked). The machine can scan cards if a user has them. From my understanding, it doesn't need a network to do this. </li> </ol>"},{"location":"sifac/#online_mode_currently_being_worked_on","title":"Online Mode (currently being worked on)","text":"<p>For online mode, you will need some more files (which I don't believe are easy to get via the site you should not go to). Here is a download link for this file structure:</p> <p>../files/system.zip</p> <p>Next, make a <code>D:\\</code> drive (you can partition your <code>C:\\</code> drive) and directory to have the following file tree:</p> <pre><code>(Assume this is under the `D:\\` root)\n\u251c\u2500\u2500 system\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 CmdFile\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 log\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 Log.txt\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 DUA\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 data\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 decrypt\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 download\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 event\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 news\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 1524476664.png\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 1554282603.png\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 unpack\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 work\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 option.txt\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 Service\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 NesysService.exe\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 update.log\n</code></pre> <p>(The most important file is the <code>NesysService.exe</code> as this is what the game uses to call between the game server and the game)</p> <p>After that step, edit your arcade machine's hosts file:</p> <p>Usually under: <code>C:\\Windows\\System32\\drivers\\etc\\hosts</code></p> <pre><code>127.0.0.1 cert.nesys.jp\n127.0.0.1 cert3.nesys.jp\n127.0.0.1 data.nesys.jp\n127.0.0.1 proxy.nesys.jp\n127.0.0.1 nesys.taito.co.jp\n127.0.0.1 fjm170920zero.nesica.net\n</code></pre> <p>MAKE SURE NOT TO ADD HASHTAGS TO THESE LINES! (If its the same PC, just leave it as <code>127.0.0.1</code> if its a different PC on your network, replace it with the IP address)</p> <p>Once your computer resolves the domains to where ever you host the game server, we need to add some registry entries to enable the NesysService to run.</p> <p>Run the following file:</p> <p>../files/runme.reg</p> <p>Finally, you'll need to make nesys an actual Windows service (one that you would find in <code>services.msc</code>). Download and run this command to add it (assuming your <code>service</code> directory is found in <code>D:\\</code>). This is all tested for <code>D:\\</code>.</p> <p>../files/nesys.bat</p> <p>If you don't want to create a service, you're also able to run <code>NesysService.exe</code> in powershell or cmd. Just follow these steps:</p> <ul> <li>Make sure you open powershell or cmd as administrator</li> <li>Run this first (so you can debug it if it gives you an error):</li> <li><code>chcp 932</code></li> <li>Then run the exe as so:</li> <li><code>D:\\system\\Service\\NesysService.exe -app</code></li> </ul> <p>If it outputs the following then you're good to go!</p> <p></p> <p>If it outputs something else, then you didn't install the registry values correctly!</p> <p>(todo, add a picture here as an example)</p>"},{"location":"sifac/#certificates","title":"Certificates","text":"<p>The last step to this would be adding certificates. It is not an easy process, but asesidaa made a script that should do it for you.</p> <p>You can find the script to install the scripts in here: https://github.com/asesidaa/LLServer/tree/master/LLServer/Certificates</p> <p>Make sure to run the script as administrator. (you might need to enable powershell script running exception)</p> <p>Enter this command in an administrator powershell window:</p> <p><code>set-executionpolicy remotesigned</code></p> <p>If the script doesn't work, you just need to have the certs in the 'Personal' store and the 'Root Trust ...' store (I forget the full name). After that you shouldn't get any nesys HTTP errors (it should just connect).</p> <p>(On Japanese Locale, I think the 'Personal' store is also called the 'My' store)</p> <p>If the server isn't compiled already, you'll need Visual Studio Community edition, link for easy access here. Make sure you set it up with basic .NET functionality. (It should install the things it needs if you don't select the right one so don't worry too much).</p> <p>Then if you haven't already, download the LLServer repo: https://github.com/asesidaa/LLServer/archive/refs/heads/master.zip</p> <p>To run that, all you need to do is open the <code>.sln</code> file in Visual Studio. Then click the green <code>HTTPS</code> button!</p>"},{"location":"sifac/#network_interfaces","title":"Network Interfaces","text":"<p>NesysService will require you to have a single interface enabled (and the other ones disabled) in order for it to connect correctly. Make sure you only have one network interface enabled like the picture below:</p> <p></p>"},{"location":"sifac/#patched_binary","title":"Patched Binary","text":"<p>Lastly you will need the patched binary with the correct public key. This key is used to confirm that it's talking to the right server. </p> <p>Download it here:</p> <p>../files/ll3.exe</p> <p>FYI, you will need to replace the original binary with this one. </p> <p>Please message <code>@caretchara</code> on the Discord if anything here needs changes!</p>"},{"location":"sifas/","title":"SIFAS - Introduction","text":"<p>(the following was copied from the fandom wiki)</p> <p>Love Live! School Idol Festival ALL STARS (\u30e9\u30d6\u30e9\u30a4\u30d6\uff01\u30b9\u30af\u30fc\u30eb\u30a2\u30a4\u30c9\u30eb\u30d5\u30a7\u30b9\u30c6\u30a3\u30d0\u30eb ALL STARS Rabu raibu! Suk\u016bru Aidoru Fesutibaru ALL STARS) was a rhythm action game developed for mobile platforms, based on the Love Live! and related franchises. It is published by Bushiroad and developed by KLab Inc., and was released on September 26, 2019. It was first announced at Tokyo Game Show 2017 on September 21, 2017. Prior to the announcement, it was first introduced and teased on March 30, 2017 as the PERFECT Dream Project in conjunction with SIF's 4th year anniversary. Love Live! School Idol Festival ALL STARS was designed with \"the greatest, best idol game\" as its concept. Characters from \u03bc\u2019s, Aqours and Nijigasaki High School Idol Club appear within this game.</p> <p>On April 30, 2023, it was announced that the game's service would be shut down on June 30, 2023.</p>"},{"location":"sifas/#some_random_forewords","title":"Some random forewords","text":"<p>SIFAS, whether you liked it or not, was unjustly killed in favor of a bad \"sequel\". SIFAS die and bring with it things like fully animated navigator, stories, costume, and of course the main selling point of the game - 3DMV. With SIFAS gone, the only way to officially watch 3DMV is through the Link Live app (doesn't have other groups), or through some metaverse VR stuff that you have to pay for (per concert).</p> <p>Luckily for us, the community managed to preserve most if not all of the beloved aspects of the game. Thanks to various community members, there are works done and being done so that with a bit of tinkering, you can install and play SIFAS.</p> <p>Wanting to setup your own local server? Check Easy install.</p> <p>Wanting to learn more and setup your own local server? check Private Server</p>"},{"location":"sifas/apk-patching/","title":"Patching the apk","text":"<p>The original 3.12 clients are designed to only serve as a EOS notice. Howerver, the functionalities are still (mostly) there, so we can patch it to work.</p> <p>This docs will outline the necessary steps and how to do them, should you need to make your own clients. This docs assume we start with a stock clients. You can get these by dumping the app from Google Playstore or from other apk distribution sites.</p>"},{"location":"sifas/apk-patching/#patching_android_binary","title":"Patching android binary","text":"<p>Note that some of these steps will not be necessary depending on what you started with and what you want to do.</p> <p>Also note that some commands might become outdated after the tools are updated. If this is the case, try getting the specific version used or try to adapt the command yourself.</p>"},{"location":"sifas/apk-patching/#unpacking_the_apk","title":"Unpacking the apk","text":"<p>The first step is to unpack the apk so we can modify it.</p> <p>We will do this with apktool, version <code>2.9.3</code> to be exact.</p> <p>We can either use the wrapper or .jar directly. Of course, java will be necessary.</p> <p>Open up a terminal (command prompt) in the same directory(folder) as the <code>.apk</code> and run the following:</p> <pre><code>apktool d LLAS_GL_3.12.0.apk\n</code></pre> <p>After unpacking, you should have a folder that has the same name as the <code>.apk</code> except for the extension, so <code>LLAS_GL_3.12.0</code> in our case.</p> <p>The <code>LLAS_GL_3.12.0.apk</code> is just the file name, here it refer to LLAS, GL, version 3.12.0, but you can rename the apk to pretty much anything.</p> <p>After that, you can do the relevant modifcation, then finally repack it</p>"},{"location":"sifas/apk-patching/#packing_the_binary_to_unlock_the_game_features","title":"Packing the binary to unlock the game features","text":"<p>By default, the game only show the EOS screen. Helpfully for us, the developer left in everything, and the EOS screen is triggered by a check function. To make the game work, we need to patch away this check. Furthermore, some feature are also time-sensitive, so they requires or will require other check later on.</p>"},{"location":"sifas/apk-patching/#easy_way_out","title":"Easy way out","text":"<p>You can use these clients that has the binary patch in them, and do the later modification step if necessary.</p>"},{"location":"sifas/apk-patching/#directly_edit_the_binaries","title":"Directly edit the binaries","text":"<p>The file we need to patch is <code>libil2cpp.so</code>, we can find it in <code>LLAS_GL_3.12.0/lib/arm64-v8a/</code> (64 bit), or <code>LLAS_GL_3.12.0/lib/armeabi-v7a/</code> (32 bit).</p> <p>We will need to change some specific bytes in the <code>libil2cpp.so</code> file to make the client work.</p> <p>Tool and the relevant patch for editing is here. Either build the tool and run it with the relevant patch, or make the edit manually using any binary editor.</p>"},{"location":"sifas/apk-patching/#doing_things_properly","title":"Doing things properly","text":"<p>If we want to make other binary modification, then we have to understand things properly. This is a very indepth topic, so here is a summary and resource to get started:</p> <ul> <li>SIFAS uses <code>il2cpp</code> with <code>Unity</code>. This means that their higher level code eventually get compiled to <code>C/C++</code> code, and then machine code (<code>.so</code>).</li> <li>This is done for better performance, but it also allow us to use the various reverse engineer tools that are developed for <code>il2cpp</code>.</li> <li>More precisely, Il2CppInspector and Il2CppDumper can read the project and provide more information.</li> <li>So we can setup <code>libil2cpp.so</code> inside Ghidra, and see what the code is doing more easily.</li> <li>After that, we can analyse the code and see what the game is actually doing, and then perform the relevant modification.</li> <li>The prepade patch explains what we need to do, you can look at the same address in Ghidra to see the difference.</li> <li>If you want to do modification, it might be better to directly patch the binary rather than doing the modification in Ghidra then exporting it.</li> </ul>"},{"location":"sifas/apk-patching/#patching_the_rsa_key_and_the_server_address","title":"Patching the RSA key and the server address","text":"<p>The RSA key and server address are stored in the <code>global-metadata.dat</code> of the <code>apk</code>. So in our case, we can find it at <code>LLAS_GL_3.12.0/assets/bin/Data/Managed/Metadata/global-metadata.dat</code>.</p> <p>In short, this is just the way the game stores string literals, and we need to edit the relevant strings:</p> <ul> <li>The server address is the URL or the IP of the server, it's just the address that the client connect to.</li> <li> <p>The RSA key is used in communication between the client and the server.</p> <ul> <li>The client has the public key, and the server has the private key.</li> <li>Because we don't have the private key for the public key that come with the client, we have to generate our own private-public key pairs</li> <li>And then we have to change the public key for the client.</li> </ul> </li> </ul>"},{"location":"sifas/apk-patching/#using_the_metadata_string_editor_gui","title":"Using the MetaData String Editor GUI","text":"<p>First download MetaData String Editor.</p> <p>It is written in C#, and the <code>.exe</code> need Windows to run.</p> <p>To change the address string, open the tool, then press the top left button and open up the <code>global-metadata.dat</code> file. You can find it in:</p> <p>You will see many strings. Search for the current values using the textbox at the top. Double click on the string, click on the popup thing, and you will see another window pop up. You can edit that data to any other data. You will need to change:</p> <ul> <li> <p>The server address:</p> <ul> <li>For gl client, the original address is \"https://gl-real-prod-8f2jln5l4evlw5l1.llas.bushimo.jp/ep3120\"</li> <li>For jp client, the original address is \"https://jp-real-prod-v4tadlicuqeeumke.llas.bushimo.jp/ep3120\"</li> <li>For elichika's clients, the original address is \"http://127.0.0.1:8080\" or \"http://localhost:8080\".</li> <li> <p>You can change the address to anything you want, but keep in mind the following:</p> <ul> <li>Do not have <code>/</code> at the end of the address.</li> <li>For <code>https</code>, you might run into problems with trust certificate if you don't set things up properly.</li> <li>The RSA key:</li> </ul> </li> <li> <p>Both gl and jp clients user the same original RSA key, the prefix is: \"v2VElqvCwrhdiXJ\" <li> <p>Elchika's RSA key is: </p> <p><code>&lt;RSAKeyValue&gt;&lt;Modulus&gt;1r6QjkBr1hIGrgq95ZEEDnXqCYa+81hvhejsGoUcfCZ/kkngBuUbq8/rqRfoFVEZOmDRG8DKrhtfFoWQyftqycCrQj8ELQeGCQJFtdXg+eljb3HDP8Zzzh+9YXJHNIswCYfMFYXlBHP90QniFfZqfERVSqK9V1uJU8EyxHMismU=&lt;/Modulus&gt;&lt;Exponent&gt;AQAB&lt;/Exponent&gt;&lt;/RSAKeyValue&gt;</code> - The key is in XML format, so if you want to use your own RSA keys then you have to convert it.</p> </li> <p>After editing the data, click the bottom right button to change it. After that, click the middle button on the top left of the program. Save the metadata as some other file, as you can't overwrite to the current file. After that you can close the tool, remove the original <code>global-metadata.dat</code> and rename the new file to <code>global-metadata.dat</code>. </p>"},{"location":"sifas/apk-patching/#using_the_metadata_string_editor_cli","title":"Using the MetaData String Editor CLI","text":"<p>Instead of the GUI, you can use the Metadata String Editor CLI that can replace string or edit strings by ids.</p> <p>It also come with the relevant patches for SIFAS.</p>"},{"location":"sifas/apk-patching/#changing_the_package_name_app_name_and_icon","title":"Changing the package name, app name, and icon","text":"<p>Aside from changing metadata and binary, we can also change a few things about the app itself.</p>"},{"location":"sifas/apk-patching/#changing_the_package_name","title":"Changing the package name","text":"<p>If you want to keep multiple clients, either for testing or for playing on multiple servers, you will have to change the package name as android systems don't allow multiple apps with the same package name.</p> <p>To do this, you need to change the manifest file at <code>LLAS_GL_3.12.0/AndroidManifest.xml</code>.</p> <p>Assume the package name is <code>com.klab.lovelive.allstars.global</code>, and we want to change it to <code>com.klab.lovelive.allstars.global.mod</code>, then we have to change every instance of <code>com.klab.lovelive.allstars.global</code> to <code>com.klab.lovelive.allstars.global.mod</code> except for the instance that say <code>com.klab.lovelive.allstars.global.GlobalUnsafeMainActivity</code>.</p>"},{"location":"sifas/apk-patching/#changing_the_app_name","title":"Changing the app name","text":"<p>To change the app name, you will have to change the field <code>\"app_name\"</code> to what you want in <code>LLAS_GL_3.12.0/res/values/strings.xml</code>.</p>"},{"location":"sifas/apk-patching/#changing_the_app_icon","title":"Changing the app icon","text":"<p>You can also modify the icon in <code>LLAS_GL_3.12.0/res/mipmap...</code>. Note that this depend on your DPI, so you might have to edit them all.</p>"},{"location":"sifas/apk-patching/#repacking_the_apk","title":"Repacking the apk","text":"<p>First, use apktool to build the <code>.apk</code>:</p> <pre><code>apktool b LLAS_GL_3.12.0\n</code></pre> <p>After <code>apktool</code> is done, you can find the output <code>.apk</code> at <code>LLAS_GL_3.12.0/dist/LLAS_GL_3.12.0.apk</code></p> <p>However, this <code>.apk</code> is not completed, we need to sign it before it can be installed in standard devices.</p> <p>The easiest way to do this is to use the uber-apk-signer. If you know how to do it in other ways (i.e. with apksigner), feel free to do so.</p> <p>Download uber-apk-signer-.jar, then run: <pre><code>java -jar uber-apk-signer-&lt;version&gt;.jar -a LLAS_GL_3.12.0/dist/LLAS_GL_3.12.0.apk\n</code></pre> <p>You can find the output apk in the same folder as the input one:</p> <pre><code>LLAS_GL_3.12.0/dist/LLAS_GL_3.12.0-aligned-debugSigned.apk\n</code></pre> <p>After this, you can install that <code>.apk</code>. If you already have a version of SIFAS, you might get an error saying that the signature doesn't match. You can uninstall the old version or change the client package name to have a different app entirely.</p>"},{"location":"sifas/apk-patching/#patching_android_client_to_new_address_with_frida","title":"Patching Android client to new address with frida","text":"<p>It's possible to use frida to change the address and avoid having to patch the <code>.apk</code>, as demonstated by <code>sarah</code> in the LL Hax discord. If you don't want to use the above patching process, you might want to try that.</p>"},{"location":"sifas/easy-install/","title":"Easy install","text":"<p>This section discuss some easy way to setup the game and play, as well as some common way to set things up.</p>"},{"location":"sifas/easy-install/#servers","title":"Servers","text":"<ul> <li>elichika original server.</li> <li>elichika fork recommended server.</li> </ul>"},{"location":"sifas/easy-install/#clients","title":"Clients","text":""},{"location":"sifas/easy-install/#android","title":"Android","text":"<ul> <li>Download one of the elichika compatible clients and install it.</li> <li>Modify that or make your own if necessary.</li> </ul>"},{"location":"sifas/easy-install/#ios_setup","title":"iOS setup","text":"<ul> <li>You can download the <code>ipa</code> files from here (or from here if you need http enabled)</li> <li>Enable developer mode under settings -&gt; privacy &amp; security - very bottom. Older iOS versions may not have this option and do not need to worry about it.</li> <li>Use sideloadly to install the <code>ipa</code>.</li> <li>Open settings and navigate to the settings for the installed app. You can configure the server url there.</li> <li>Note that at the moment it appears the global <code>ipa</code> files do not work. The reason is unknown.</li> </ul>"},{"location":"sifas/easy-install/#or","title":"Or","text":""},{"location":"sifas/easy-install/#setting_up_and_installing_with_altstore","title":"Setting Up and Installing with AltStore","text":"<ul> <li>AltStore is an alternative app store for iOS devices with a User friendly interface. Which features on device signing.</li> <li>You can download AltStore from here.</li> <li>Follow the instructions below to install AltStore on your iOS device and install the SIFAS client from here (or from here if you need http enabled).</li> </ul>"},{"location":"sifas/easy-install/#macos","title":"macOS:","text":"<p>Open the downloaded .dmg file. Drag AltServer to your Applications folder. Open AltServer from your Applications folder.</p>"},{"location":"sifas/easy-install/#windows","title":"Windows:","text":"<p>Open the downloaded .zip file. Run the Setup.exe installer. Open AltServer from your Start menu or desktop.</p> <ol> <li>Connect your iOS device to your computer via USB. Ensure your device is unlocked and tap \"Trust\" on the prompt that appears on your device.</li> <li>Install Mail Plug-in (macOS Only) Open the Mail app. Go to Mail -&gt; Preferences. Click on the Manage Plug-ins button at the bottom. Enable the AltPlugin.mailbundle.</li> <li>Install AltStore on Your iOS Device</li> </ol>"},{"location":"sifas/easy-install/#macos_1","title":"macOS:","text":"<p>Click the AltServer icon in the menu bar. Choose Install AltStore and select your connected iOS device.</p>"},{"location":"sifas/easy-install/#windows_1","title":"Windows:","text":"<p>Click the AltServer icon in the system tray. Choose Install AltStore and select your connected iOS device. Enter your Apple ID credentials when prompted (these are sent directly to Apple for authentication).</p> <ol> <li>Trust AltStore on Your iOS Device Open the Settings app on your iOS device. Go to General -&gt; Device Management (or Profiles &amp; Device Management). Find your Apple ID under the \"Developer App\" section. Tap on your Apple ID and then tap \"Trust.\"</li> <li>Open AltStore You should now see AltStore on your iOS device.</li> </ol>"},{"location":"sifas/easy-install/#install_sifas_love_live_school_idol_festival_all_stars","title":"Install SIFAS (Love Live! School Idol Festival ALL STARS)","text":"<ul> <li>install the SIFAS client from here (or from here if you need http enabled).</li> <li>Open AltStore on your iOS device.</li> <li>Tap the + icon in the top left corner of AltStore.</li> <li>Navigate to the location where you saved the SIFAS IPA file (default is the \"Downloads\" folder) and select it.</li> <li>AltStore will begin the installation process. You may need to enter your Apple ID credentials again. Launch SIFAS:</li> <li>Once the installation is complete, you can open SIFAS from your home screen.</li> <li>If you need to change the server URL, you can do so in the app settings.</li> </ul>"},{"location":"sifas/easy-install/#altstore_and_altserver_notes","title":"AltStore and AltServer Notes","text":"<ul> <li>Altserver must be running at least once on your computer every 7 days to keep the app signed.</li> <li>Altstore will automatically resign the app every 7 days as long as Altserver is running on your computer. You can also do it manually in Altstore by going to the \"My Apps\" tab and tapping the \"X days\" button next to the app.</li> </ul>"},{"location":"sifas/easy-install/#setups","title":"Setups","text":"<p>These are types of setup, choose one that suit you, or adapt one to your usage.</p>"},{"location":"sifas/easy-install/#forked_elichika_-_android_with_termux","title":"(Forked) Elichika - Android with Termux","text":"<p>The server can run inside Termux, on the same phone or emulator that you want to play SIFAS on. After downloading all of the game files, you can play anywhere anytime even without internet.</p> <ul> <li>Download one of these clients and install it.</li> <li>Then follow this guide.</li> </ul> <p>If that doesn't work, you might have one of the following problems:</p> <ul> <li>If you can't install the <code>.apk</code> then you're out of luck, you will need to find a device (emulator) that is compatible, or make one yourself from a compatible stock client.</li> <li>If anything happen before you run the server binary, your Termux has problem. Make sure you followed Install the guide and installed the correct Termux.</li> <li>If you are sure you have done things correctly, it might be the case that your device is too new or just have some weird restriction. If this happens, it's probably easier to just use another device that works.</li> </ul> <p>If you are not using <code>elichika</code>, you can still use this setup as long as your code can run inside Termux.</p>"},{"location":"sifas/easy-install/#external_server_internet_or_lan_play_on_phone","title":"External server (Internet or LAN), play on phone","text":"<p>The server run on your PC (Windows / Linux / MacOS), or some external machine.</p> <p>You play on your phone or emulator. The clients need to be able to reach the server, either through LAN or the Internet.</p> <ul> <li>If you are using Android clients, patch them to point to the correct address.</li> <li>If you are using IOS clients, change set settings to point to the correct address.</li> </ul> <p>Generally, if you are using someone else's server then they should provide you with a client that you just need to install, or walk you through how to do this in details.</p>"},{"location":"sifas/easy-install/#server_on_pc_play_on_android_phone_through_adb","title":"Server on PC, play on android phone, through adb","text":"<p>In the case that you want to run server on PC but play on android phone (for development), and you can't get static IP/port, you can rely on adb.</p> <ul> <li>Download a client and install it.</li> <li>Enable developer options, and turn on <code>adb</code>.</li> <li>Connect your phone to your pc, accept the USB debugging and run:</li> </ul> <pre><code>adb reverse tcp:8080 tcp:8080\n</code></pre> <ul> <li>This map http://127.0.0.1:8080 in your phone to http://127.0.0.1:8080 in your PC, allow the app to connect to the server. Change the port if necessary.</li> <li>If you don't want to have your phone plugged in to your computer, debug the phone through <code>tcpip</code> mode. If you are going to do this, it's good to have a static IP for your phone, then you can make a script that connect to your phone and run the server, for convinience.</li> </ul>"},{"location":"sifas/easy-install/#server_on_pc_play_on_android_emulator","title":"Server on PC, play on android emulator","text":"<p>If you want to play on an emulator and don't want to use Termux, you can use either <code>adb</code>, or you can bridge the network so your emulator get treated as a device in your LAN. The details on how to do this depend on the emulator, so you should look it up yourself.</p>"},{"location":"sifas/private-server/","title":"Private (self hostable) servers","text":""},{"location":"sifas/private-server/#disclaimers","title":"Disclaimers","text":"<p>The information presented by the authors of this documentation were either background knowledge, knowledge provided by community members, or knowledge learned from works published by community members.</p> <p>The authors try to make sure that the information presented is correct. However, there might be incorrect info, or outdated info.</p> <p>The authors try to acknowledge and credit the community members who share knowledge, develop tools, host resources, or helped in any other way, but there might be some missing credit. If that were the case, please know that it is not intended by the authors, and please contact the authors for proper credit.</p> <p>The knowledge, tools, resources used by this documentation are acquired and presented with a good faith basis. While the authors try to ask creators for permission to use or feature their works, some works was used or featured without explicit permission. If you have problem with your works being mentioned / features, or your name being credited, please contact the authors to sort things out.</p>"},{"location":"sifas/private-server/#intents","title":"Intents","text":"<p>This documentation will go somewhat in depth to the technical side, so for experienced audience, it can serve as a quick introduction to the working of the game and server. Do note that the provided packages might not work for you, however, the details explanation should give you want you need to get things working. Regardless, feel free to reach out to the community, both to help resolve your situation and to help make the documentation better.</p> <p>This documentation will be about hosting and playing your own SIFAS server, more precisely, how to do so in general. For specific implementations of private server, we will only provide link to them or their documentation. This documentation will also discuss only the GL (Global) and JP (Japanese) version, although there exist private server for CN (Chinese) version as well.</p> <p>This documentation assume that you have some background knowledge related to the topic discussed. If this is your first time doing something like this, you will have to search up relevant information, or reach out to the community for help. </p>"},{"location":"sifas/private-server/#convention","title":"Convention","text":"<p>As there are multiple platforms for both client and server, we use the following terms to refer to them:</p> <ul> <li>Client: The game/app itself. This is what you will use to play the game.</li> <li>Server: The program that serve the necessary data for client(s) to function. This was Klab/MYNET/Bushiroad responsibility, but we will have to run our own server now that they have stoped supporting the game. The server often run in another machine, but there are setup that run the client and server on the same machine for android.</li> <li>Android/iOS/android/ios: The platform that the client run on. You should know what your platform is.</li> <li>Window/Linux/MacOS/Android: The platform that the server will run on.</li> </ul>"},{"location":"sifas/private-server/#preparing_the_client","title":"Preparing the client","text":""},{"location":"sifas/private-server/#clients_version","title":"Clients version","text":"<p>We will be using the 3.12 clients:</p> <ul> <li>If you can't recall, these are released after the game is dead.</li> <li>The only functionality is to show a \"SIFAS EoS, thanks for playing SIFAS\" message, or so it seems.</li> <li>The truth is that, none of the original functionality was deleted, but the crack-proof is removed.</li> <li>Which mean that if we patch the starting screen away, we have access to a superior version of the app.</li> <li>You can learn how to do so here.</li> </ul>"},{"location":"sifas/private-server/#premade_clients","title":"Premade clients","text":""},{"location":"sifas/private-server/#android","title":"Android","text":"<p>You can download the apks from here. This should work with both 32 bit and 64 bit devices.</p> <p>These clients connect to http://127.0.0.1:8080, and is mainly designed to work for elichika. However, you can modified them to work for other servers if necessary (see patching apks for details).</p>"},{"location":"sifas/private-server/#patching_ios_client_to_new_address","title":"Patching ios client to new address","text":"<p>The <code>.ipa</code> files do not need to be patched thanks to tri.angle in the discord server. You can just sideload the app and change the server url in setting.</p> <p>You can download the <code>ipa</code> files from here. These <code>.ipa</code> files do not enable http servers by default, you will need to modify <code>Info.plist</code> using ProperTree and enable <code>NSAllowsArbitraryLoads</code>, or for your convinience a pre-patched <code>ipa</code> with http support enabled can be downloaded here.</p> <p>Note: currently the global version indefinitely loads for no apparent reason. It may not work.</p>"},{"location":"sifas/private-server/#preparing_the_server","title":"Preparing the server","text":"<p>You need to pick an implemtentation or make your own.</p>"},{"location":"sifas/private-server/#elichika_servers","title":"Elichika servers","text":"<p>elichika is a SIFAS private server written by <code>YumeMichi</code> (<code>.yumemichi</code> on discord).</p> <p>However, it's recommended to use the forked elichika that are much easier to setup and has more features and more to come. Refer to the github repository for server-specific details.</p>"},{"location":"sifas/private-server/#other_servers","title":"Other servers","text":"<p>Currently there are no public \"non-elichika\" private server implementation that we know of. If you are working on your own implementation and want to share it, please reach out to the LL Hax discord.</p>"},{"location":"sifas/private-server/#operating_the_server","title":"Operating the server","text":"<p>These are some knowledge necessary to operate the server.</p>"},{"location":"sifas/private-server/#patching_the_database","title":"Patching the database","text":"<p>The client will download the database directly from your server after it successfully connected.</p> <p>The details on how to patch them is complicated and contains weird cryptography stuff.</p> <p>The forked elichika handle this automatically, you can look into how it does that for details.</p>"},{"location":"sifas/private-server/#providing_a_cdn_server","title":"Providing a CDN server","text":"<p>A CDN (content distribution network) server is where the game(app) will download the necessary files (i.e. songs, stories). No matter what server implementation you use, you will need a CDN host.</p> <p>More precisely, the client will request the link to download assets at <code>/asset/getPackUrl</code>, and you will have to response with the correct link to download them. There is no restriction to where the client will download the file from, so you can link to any server.</p>"},{"location":"sifas/private-server/#online_cdn","title":"Online CDN","text":"<p>Thanks to <code>sarah</code> (<code>sarayalth</code>) from the LL Hax discord, there is a CDN that we can use to avoid hosting our own files.</p> <p>The server is at https://llsifas.catfolk.party/static or https://llsifas.imsofucking.gay/static.</p> <p>You can get the files in <code>static/2d61e7b4e89961c7</code> for GL files or <code>static/b66ec2295e9a00aa</code> for JP files.</p>"},{"location":"sifas/private-server/#self_hosted_cdn","title":"Self hosted CDN","text":"<p>If you don't want to use the online CDN, you can download the data and host it yourself.</p> <p>The data is around 20GB for both GL and JP server (around 40GB for both).</p> <p>One way to get them is from archive.org. The direct downloading speed is not that great, so be prepared to leave your machine on for a very long time. If you don't want that, download using the <code>.torrent</code>, it would be much appreciated if you also host the files once downloaded. Do note that there are risks associated with torrenting, but that topic will not be discussed here.</p> <p>Another way to get them is from extracting the downloaded game files or download the files yourself from the online CDN.</p> <p>You can also try to extract the relevant files from a client where you have the file downloaded. To extract the files, use this youtube tutorial, or any other methods you know.</p>"}]}