Jump to content

iOS Modmenu Template for Theos!


114 posts in this topic

Recommended Posts

Updated (edited)

 r16Menu Template for Theos!

Sample Menu UI look.

AEB6-DB02-AA9-B-4977-91-E7-B6007799-CC2-

 Get from GitHub here

Hidden Content

React or reply to this topic to see the hidden content & download link. 👀

 

Features:
      * Customizable UI
      * Customizable menu logo
      * 7 different switchs:
      * Patcher
      * Patch
      * Regular switch
      * Textfield Switch wide or right
      * Slider Switch
      * Index switch
      * Hook Swith

     * Patcher and Patch switch is based on KittyMemory
       * Original bytes are required
       * Supports MSHookMemory
       * Write unlimited bytes to a offset

Encryption:

  • I did not include encryption you will have to make your own to encrypt nsstrings.

Installation:

  • Download the modmenu template paste in /var/theos/templates/ios/theos

Usage:
Open r16Logo.h and paste your own menu image <https://www.base64-encode.org/>

menu.r16Logo = @"YOUR BASE 64 Here"; //for both menu and button will implement button and logo searperatly later

 

Using a custom framework:

You can set this in the function startAuthentication() inside Tweak.xm but this is not requierd. Dont worry about it skip_

menu.frameworkNamed = @"UnityFramework";

 

Patching variables:

//call these inside ur own custom functions
*(int*)[UIKeyPatch address:@"0x78" ptr:ptr] = 999;
*(bool*)[UIKeyPatch address:@"0x32" ptr:ptr] = true;
*(float*)[UIKeyPatch address:@"0x56" ptr:ptr] = 999.0f;


Hooking methods:

//toggle on or off
[r16Hook toggleHook:true 
    address:@"0x101C0E5F0" 
    with:(void *)PlayerMoveC_Update 
    original:(void **)&orig_PlayerMoveC_Update];
                
//without toggle
[r16Hook hook:@"0x10276FB26"
    with:(void *)Player_Update 
    original:(void **)&_Player_Update];
    
//shmoos
HOOK(@"0x102517FB251", Player_Update, orig_Player_Update);
HOOK_NO_ORIG(@"0x102517FB251", Player_Update);

Patching a plain offset:

[UIKeyPatch offset:@"0x104361010" byte:@"0xC0035FD6"];
[UIKeyPatch offset:@"0x104361010" byte:@"0x000080D2C0035FD6"];

// You can write as many bytes as you want to an offset i think
[UIKeyPatch offset:@"0x104361010" byte:@"0x00F0271E0008201E000080D2C0035FD6"];


Patcher switch:

[menu addPatcher:@"Custom Patch #1"]; //custom offsetpatcher switch live

Patch Switch:

[menu addPatch:@"Godmode"
      description:@"" 
  	offsets:@[@"0x101C350C8"]
        hexPatches:@[@"C0035FD6"]];
	//or
[menu addPatch:@"Godmode"
      description:@"" 
  	offsets:@[@"0x101C350C8", @"0x101C35052"]
        hexPatches:@[@"0xC0035FD6", @"0xC0035FD6"]];

Plain Switch:

[menu addSwitch:@"Mana" 
    description:@"Infinite mana"];


Textfield Switch Right:

[menu addTextfieldRight:@"Set Weapon:" 
        description:@""];


Textfield Switch Wide:

[menu addTextfieldWide:@"Chat Spam:" 
          description:@""];


Slider Switch: 

[menu addSlider:@"Custom Fov"
     description:@"" 
             initialValue:1.00 
             minValue:1.00 
             maxValue:200.00];    


Index Switch:

[menu addIndexSwitch:@"Pick Damage" 
    description:@"" 
    items:@[@"10", @"20", @"40", @"80", @"120", @"140"]];


Hook Switch: 

//adding one hook
[menu addHookNamed:@"Aimbot"
    description:@"" 
    hook:@[[r16Hook hook:@"0x10276FB26"
    with:(void *)Player_Update 
    original:(void **)&_Player_Update]]];
    
//adding infinte :)
[menu addHookNamed:@"Aimbot"
    description:@"" 
    hook:@[
        [r16Hook hook:@"0x10276FB26"
            with:(void *)Player_Update 
            original:(void **)&_Player_Update], 
        [r16Hook hook:@"0x10276FB26"
            with:(void *)Player_Update 
            original:(void **)&_Player_Update], 
        [r16Hook hook:@"0x10276FB26"
            with:(void *)Player_Update 
            original:(void **)&_Player_Update]]
    ];


Checking if a switch is on:

bool manaOn = [menu getSwitchOnForSwitch:@"Mana"];
    
if(manaOn) {
  //stuff
}
    
//checking directly:
if([menu getSwitchOnForSwitch:@"Mana"]) {
//stuff
}

//using index string-arrays start at 0
if([menu getIndexForString:@"Pick Damage"] == 1/*20*/){
//do stuff
}
if([menu getIndexForString:@"Pick Damage"] == 0/*10*/){
//do stuff
}


Getting value from textfield and slider:

//textfield
int userValue = [menu getInt:@"Switch Name"];
NSString *userValue3 = [menu getNSString:@"Switch Name"];

//slider
float userValue1 = [menu getFloat:@"Switch Name"];

 

Credits:
   * @Red16
   * @TheArmKing
       * For helping meh and ideas ;-;
   *Ruit
       *[KittyMemory](https://github.com/MJx0/KittyMemory)

Contact:
If you find a bug in this beta version hit me up
Don't spam me please.

Updated by Red16
  • Like 222
  • Winner 21
  • Thanks 22
  • Haha 7
  • Agree 23
  • Informative 9
Guest
This topic is now closed to further replies.
×
  • Create New...

Important Information

We would like to place cookies on your device to help make this website better. The website cannot give you the best user experience without cookies. You can accept or decline our cookies. You may also adjust your cookie settings. Privacy Policy - Guidelines