/FAHMenu-iOS-Mod-Menu

Đây là một menu mod cho iOS đã jailbreak.

Primary LanguageObjective-C

FAHMenu Mod Menu for Theos

Giao diện người dùng mẫu của Menu:


Tính năng:

  • Giao diện và dễ sử dụng

  • Menu có thể tùy chỉnh & biểu tượng hình ảnh nút

  • 5 loại Công tắc :

    • Công tắc Offset
    • Công tắc Memory
    • Công tắc nhiều chuyển đổi
    • Công tắc nhập liệu
    • Công tắc thanh trượt
  • Backend Offset Patcher Switch dựa trên KittyMemory

    • Không cần patch bytes gốc
    • Hỗ trợ MSHookMemory
    • Patch Bytes không giới hạn kí tự
  • Mã hoá các offset và bytes khi hoàn thành code

  • Công tắc Memory dựa trên IGG


Cài đặt:

  • Bước 1: Cần cài Theos vào iOS
  • Bước 2: Tải FAHMenu Mod Menu về Đường dẫn : /var/theos/templates/ios

LƯU Ý :

  • Cần cài đặt file libFAHMenu để Tweak được hoạt động
  • Khi cần làm 1 project mới thì chạy lệnh : "/var/theos/bin/nic.pl" và điền thông tin Mod.
  • Với iGG thì range mặc định là 0x10000000 tới 0x16000000 (có thể tuỳ chỉnh) và Near range mặc định là 0x100 (không thể tuỳ chỉnh)

Cài đặt menu:

Đổi ảnh cho menu

Tải ảnh lên https://www.browserling.com/tools/image-to-base64 và chuyển đổi nó sang mã base64. Copy mã đó thay vào trong file baseicon.h

Set một framework để có thể chạy

Có thể set trong hàm trong Tweak.xm (Nếu app bạn làm có Framework, còn không thì bỏ qua)

[UIPatch setFrameworkName:"UnityFramework"];

Các cài đặt khác

// Có thể có hoặc không
[menu setTitle:@"@@APPNAME@@ Mod Menu"];
[menu setIconMenu:MenuIcon];
[menu setMainColor:[UIColor redColor]];
[menu setCredits:@"@@APPNAME@@ Mod Menu by @@USER@@!"];


// Bắt buộc phải có 
[menu initMenu]; 

Cách dùng menu:

Mã hoá

Bạn nên mã hóa các offset,mã hexes và NSStrings. Dưới đây, có thể thấy cú pháp cho mỗi loại chuỗi.

Offsets:

ENCRYPTOFFSET("0x10047FD90")

Hexes:

ENCRYPTHEX("0x00F0271E0008201EC0035FD6")

NSStrings:

NSSENCRYPT("Copperplate-Bold")

Patching mà không cần chuyển đổi

patchOffset(ENCRYPTOFFSET("0x1002DB3C8"), ENCRYPTHEX("0xC0035FD6"));
patchOffset(ENCRYPTOFFSET("0x10020D2D4"), ENCRYPTHEX("0x00008052C0035FD6"));
// Bạn có thể viết theo ý 
patchOffset(ENCRYPTOFFSET("0x10020D3A8"), ENCRYPTHEX("0x00F0271E0008201EC0035FD6"));
// hoặc  
patchOffset(ENCRYPTOFFSET("0x10020D3A8"), ENCRYPTHEX("00F0271E0008201EC0035FD6"));
// hoặc có khoảng trắng
patchOffset(ENCRYPTOFFSET("0x10020D3A8"), ENCRYPTHEX("00 F0 27 1E 00 08 20 1E C0 03 5F D6"));

Công tắc Offset:

[menu addToggleItem:NSSENCRYPT("Hack On") offsets:{
                                          ENCRYPTOFFSET("0x3962580"),                                     
                                          ENCRYPTOFFSET("0x1002CB3B0"),
                                          ENCRYPTOFFSET("0x1002CB3B8")
                                       } bytes:{
                                          ENCRYPTHEX("0x340080D2"),
                                          ENCRYPTHEX("0xC0035FD6"),
                                          ENCRYPTHEX("0x00F0271E0008201EC0035FD6")
                                       }];

Công tắc nhập liệu:

[menu addTextfieldItem:@" Test Textfield 2"];

Công tắc thanh trượt:

[menu addSliderItem:@"Test Slider 1"  minValue:0 maxValue:100];

Công tắc nhiều chuyển đổi:

[menu addIndexItem:@"Test" item:@[@"10", @"20", @"40", @"80", @"120", @"140"]];

Công tắc Memory:

[menu addToggleMemoryItem:@"Test" range:{ENCRYPTOFFSET("0x100000000"),
                                         ENCRYPTOFFSET("0x160000000")
                                       } search:@[
                                         NSSENCRYPT("A|B|C"),
                                         NSSENCRYPT("A1|B1|C1"),
                                         .....
                                         NSSENCRYPT("An|Bn|Cn")
                                       ]];
Ví dụ: NSSENCRYPT("Scan|I32|250"),
       NSSENCRYPT("Near|Float|0.066"),
       NSSENCRYPT("Write|I64|1.002")

A: Scan, Near hoặc Write

B: Double, Float, I8, I16, I32, I64, U8, U16, U32 hoặc U64

C: Giá trị cần tìm hoặc thay thế

Kiểm tra trạng thái công tắc:

 BOOL isOn = [menu isItemOn:@"Switch Name Goes Here"];

if(isOn) {
  //Linh tinh
}

Nhận giá trị của:

float abc = [menu getSliderValue:@"Switch Name Goes Here"];
NSString *abb = [menu getTextfieldValue:@"Switch Name Goes Here"];
float aaa = [menu getIndexValue:@"Switch Name Goes Here"];

Credits: