-
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
- 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)
Đổ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];
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"];
- Me ( fahlnbg )
- Joey
- MJx0
- For KittyMemory
- dogo
- For SCLAlertView
- nongshifu
- For IGG