Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

11 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

โšก PALLADIUM

Android Terraria Mod Menu Framework

Android
C++
Java
NDK

๐ŸŽจ Dynamic Island UI
๐Ÿ”’ Anti-Detection
โšก Zero-Latency


Features

  • Memory Patching
  • Pattern Scanning
  • Library Dump
  • Signature Bypass
  • Lua 5.4 Scripting Engine
  • Script Encryption (AES-256-CBC)
  • UI Run on 60-90-120-144-165 ++
  • Patch offset with kernel level ( non root )

๐Ÿ“ฑ Target Device

  • Android Version: 10.0+ (API 29)
  • Architecture: ARM64 (arm64-v8a) only

๐Ÿ› ๏ธ Required Tools & Downloads



Android Studio
Ladybug+



NDK
r29



CMake
4.1.2+



JDK
17+

Installation Notes

  • Android Studio: Install via JetBrains Toolbox or official installer
  • NDK: Install through Android Studio โ†’ SDK Manager โ†’ SDK Tools
  • CMake: Usually bundled with NDK, but can install separately
  • JDK: Eclipse Temurin (Adoptium) recommended for best compatibility

๐Ÿš€ Quick Start

Step 1: Clone Repository

git clone --recursive https://github.com/UnrealMultiple/TerrariaModify.git
cd TerrariaModify

Step 2: Configure SDK Paths

Create local.properties in project root:

macOS / Linux:

sdk.dir=/home/username/Android/Sdk
ndk.dir=/home/username/Android/Sdk/ndk/29.0.14033849

Windows:

sdk.dir=C:\\Users\\Username\\AppData\\Local\\Android\\Sdk
ndk.dir=C:\\Users\\Username\\AppData\\Local\\Android\\Sdk\\ndk\\29.0.14033849

Step 3: Build Project

# Make gradlew executable
chmod +x gradlew

# Build debug APK
./gradlew assembleDebug

# Or build release (requires keystore setup)
./gradlew assembleRelease

Build Outputs

Variant Location
Debug APK app/build/outputs/apk/debug/app-debug.apk
Release APK app/build/outputs/apk/release/app-release.apk
Native Library app/build/intermediates/cmake/release/obj/arm64-v8a/libTerrariaModify.so

๐Ÿ“– Documentation

๐ŸŽจ Feature System (Pipe Protocol)

Features are defined as strings in palladium.cpp using the pipe-delimited format:

MenuOption{
        .pages{
            PageOption{
                .id = 0,
                .title = "็ŽฉๅฎถๅŠŸ่ƒฝ",
                .icon = "icons/func1.png",
                .items = {
                    TitleItem{
                        .label = "Player"
                    },
                    CheckItem{
                        .label = "ไธŠๅธๆจกๅผ",
                        .id = 100
                    },
                    CheckItem{
                        .label = "ๆ— ้™ๅฌๅ”ค",
                        .id = 101
                    },
                    CheckItem{
                        .label = "ๆ— ้™่Œƒๅ›ด",
                        .id = 102,
                    }
                }
            }
        }
    };

Format Specification:

Type Item Parameters Returns
PAGE PageOption page index, icon, title N/A
CHECK CheckItem page, label, unique id boolean
SLIDER SlderItem page, label, min, max, id integer
SPINNER SpinerItem page, label, options, id index
INPUT InputTextItem page, label, id string
BUTTON ButtonItem page, label, callback name trigger

Handling Callbacks:

JNIEXPORT void JNICALL
Java_zig_cheat_qq_native_1bridge_StealthJNI_Callback(
    JNIEnv *env, 
    jclass clazz,
    jint id,           // Feature ID
    jboolean check,    // Toggle value
    jint value,        // Slider/Spinner integer
    jfloat value2,     // Float value (optional)
    jstring value3     // String value (optional)
) {
    switch (id) {
        case 1: config.Hackmap = (bool)check; break;
        case 2: config.AimbotRange = (int)value; break;
        case 3: config.EspStyle = (int)value; break;
        case 4: {
            const char* name = env->GetStringUTFChars(value3, nullptr);
            strncpy(config.PlayerName, name, sizeof(config.PlayerName));
            env->ReleaseStringUTFChars(value3, name);
            break;
        }
    }
}

๐Ÿ’พ Memory Patching Guide

Basic Setup:

#include "KittyMemory/KittyInclude.hpp"

ElfScanner g_il2cppElf;

void main_thread() {
    // Wait for target library with retry
    while(!(g_il2cppElf = ElfScanner::findElf("libil2cpp.so")).isValid()) {
        std::this_thread::sleep_for(100ms);
    }
    
    uintptr_t base = g_il2cppElf.base();
    
    // Your patches here
    apply_patches(base);
}

Patch Types:

// 1. NOP Instruction (ARM64)
// Replace instruction with NOP (0xD503201F)
MemoryPatch::createWithHex(base + 0x123456, "D503201F").Modify();

// 2. NOP Multiple Instructions
MemoryPatch::createWithHex(base + 0x123456, "D503201F D503201F D503201F").Modify();

// 3. Modify Float Value
float newDamage = 9999.0f;
KittyMemory::writeMemory(base + 0x789ABC, &newDamage, sizeof(float));

// 4. Modify Integer
int32_t newAmmo = 999;
KittyMemory::writeMemory(base + 0xDEF000, &newAmmo, sizeof(int32_t));

// 5. Hook Function
void* orig_function = nullptr;

void my_hook_function() {
    // Your code here
    
    // Call original
    ((void(*)())orig_function)();
}

DobbyHook(
    (void*)(base + 0xFEDCB0),
    (void*)my_hook_function,
    (void**)&orig_function
);

// 6. Pattern Scan
uintptr_t patternAddr = KittyMemory::findHexFirst(
    "libil2cpp.so",
    "00 00 00 00 ?? ?? ?? ?? FF FF",  // ? = wildcard
    base,
    size
);

Restoring Patches:

// Store patches for restoration
std::vector<MemoryPatch> patches;

patches.push_back(MemoryPatch::createWithHex(base + 0x123456, "D503201F"));
patches[0].Modify();  // Apply

// Later...
patches[0].Restore();  // Restore original

Auto-Initialization:

// This runs automatically when library loads
__attribute__((constructor))
void init() {
    std::thread(main_thread).detach();
}

๐Ÿ“„ License

โš ๏ธ This project is provided for educational and research purposes only.

By using this software, you agree to:

  • Comply with all applicable laws in your jurisdiction
  • Respect the terms of service of target applications
  • Use responsibly and ethically

The authors assume no liability for misuse of this software.


Stars Forks


Built with precision. Use with responsibility.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages