Jump to content

Welcome, Guest!

Sign In or Create my Account to gain full access to our forums. By registering with us, you'll be able to discuss, share and private message with other members of our community.
Red16

tool iOS Modmenu Template for Theos!

Recommended Posts

 r16Menu Template for Theos!

Sample Menu UI look.

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

 Get from GitHub here

Hidden Content
You'll be able to see the hidden content once you reply to this topic.

 

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.

Edited by Red16

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...