Skip to content

Instantly share code, notes, and snippets.

class StringLiteralExtractor {
constructor(gameName, moduleName, version, verbose = false, limitStrings = true) {
this.gameName = gameName;
this.moduleName = moduleName;
this.version = version;
this.verbose = verbose;
this.limitStrings = limitStrings;
this.stringLiteralCount = 0;
this.mdl = Process.findModuleByName(this.moduleName);
this.metadataRva = '';
import argparse
import os
import re
import lief
from adb_shell.adb_device import AdbDeviceTcp,_AdbTransactionInfo
from adb_shell.auth.sign_pythonrsa import PythonRSASigner
from adb_shell.auth.keygen import keygen
def get_device(port,host):
adb_device = AdbDeviceTcp(host, port)

Downloading

  • Get latest version from Github actions from here , if you dont have account you can use site like nightly.link to download it
  • Extract zip file somewhere
chrome_bBlpF4CYiz.webm.mov

Running

  • open AssetStudioGUI then click on Options -> specify game and pick your game name , for games like GI you might have to disable shader in Options -> Export Options check Disable Shader

VIDEOS MIGHT OUTDATED BUT TEXT IS NOT

this guide is not meant to help with leaking or feeding your paywall or any stupid things you might do to ruin experience for other people

Downloading

  • Get latest version from Github Actions not releases from here , if you dont have account you can use site like nightly.link to download it , Latest build or this fork if main repo expired here or mine

if GI 4.6+ use this fork on your own risk here

  • Extract zip file somewhere
chrome_bBlpF4CYiz.webm.mov
@Modder4869
Modder4869 / Program.cs
Created June 30, 2023 16:53
N-INNOCENCE
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
string filePath = @"A"; // Replace with the path to your encrypted file
string password = "4fTrch#60b<3aO48Vb";
string destinationFilePath = "path_to_decrypted_file";
string salt = Path.GetFileName(filePath);
byte[] saltBytes = Encoding.UTF8.GetBytes(salt);
import requests
import io
import struct
import zipfile
import binascii
import re
import sys
import os
from tqdm import tqdm
#copied from https://betterprogramming.pub/how-to-know-zip-content-without-downloading-it-87a5b30be20a
#half copied from https://github.com/SilentNightSound/GI-Model-Importer/tree/main/Tools
from heapq import merge
import bpy
# copy model mesh from
mod_character='Sucrose'
# export as
original_character='Yanfei'
#after exporting into Yanfei folder u will get Sucrose on Yanfei
# Contributed by Zekium and Modder4869 from Discord - huge thanks to him!
import bpy
# ImportHelper is a helper class, defines filename and
# invoke() function which calls the file selector.
from bpy_extras.io_utils import ImportHelper
from bpy.props import StringProperty, BoolProperty, EnumProperty
from bpy.types import Operator
import os
# Contributed by Zekium and Modder4869 from Discord - huge thanks to him!
import bpy
# ImportHelper is a helper class, defines filename and
# invoke() function which calls the file selector.
from bpy_extras.io_utils import ImportHelper
from bpy.props import StringProperty, BoolProperty, EnumProperty
from bpy.types import Operator
import os
import bpy
# make sure to append shader first or uncomment the following lines and change path
# with bpy.data.libraries.load(
# "D:\Xodd\Blender-miHoYo-Shaders\miHoYo - Genshin Impact.blend"
# ) as (data_from, data_to):
# data_to.materials = data_from.materials
def findDressMaterialName(matName):
for material in bpy.data.materials: