Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

Hoạt động tốt Cách để tự làm 1 Mod Menu cho Android game (Game có libil2cpp.so)

shisui003

New member
113 Team
Tham gia
6/7/20
Bài viết
4
Người phát triển
Shisui
Phiên bản
1.0.0
Trạng thái
Chưa bị phát hiện
libil2cpp.so là lib của những game làm từ Unity3D, thường xuất hiện trong các tập tin APK. libil2cpp là thể loại lib có thể được coi là mod game dễ nhất trong tất cả các loại lib game. Thì hôm nay tôi sẽ hướng dẫn các bạn tự tạo ra 1 mod menu apk từ libil2cpp này.
Các yêu cầu sau:
+ 1 chút kiến thức về C++, Hex, ARM
+ Có máy tính riêng
+ IQ Vô cực
Các phần mềm cần dùng:
+ Android Studio | Link: https://developer.android.com/studio
+ APK Easy Tool | Link: https://forum.xda-developers.com/an...tool-apk-easy-tool-v1-02-windows-gui-t3333960
+ Hex Editor (HxD) | Link: https://mh-nexus.de/downloads/HxDSetup.zip
+ IDA Pro | Link: https://drive.google.com/file/d/1dpcxvugSfI1flf15Qvf8sP-D4xSWMxV_/view
+ Chuyển ảnh qua mã Base64 | Link: https://base64.guru/converter/decode/image
+ Notepad++ hoặc các phần mềm code khác
+ Quan trọng nhất: Template Mod Menu | Link: https://github.com/LGLTeam/Android-Mod-Menu
Được rồi bắt đầu đê.
----- Download template Mod Menu: -----
Nhấn vào nút màu xanh Clone or download rồi nhấn Download ZIP


AiSFR2m.png



----- Cài Android Studio: -----
Nếu đã cài rồi thì bỏ qua

----- Cài đặt NDK: -----
Mở Android Studio sẽ thấy bảng này hiện ra

Cy1SQgI.png



Ở góc dưới bên phải, chọn Configure -> SDK Manager

xBP1bCE.png



Chọn Android SDK, tích vào NDK (Side by side) rồi nhấn OK. Phần mềm sẽ tự động tải và cài đặt

FcAd2Px.png



----- Bắt đầu làm Mod Menu -----

Khi đã tải và cài NDK xong, giải nén file Template Mod Menu vừa tải về ra, lưu ý: ko đổi tên folder gì hết

Chọn "Open an existing Android Studio project" ở bảng chào đón người dùng

Tìm đến file vừa giải nén, nhấn OK

3etm4qX.png



Sau khi nhấn OK, Android Studio sẽ kiểm tra Template và sẽ có 1 đợt sync file, code của Gradle. Quá trình sẽ mất đến 5p tùy theo độ khỏe của máy

Khi đã xong thì bắt đầu vào việc với em nó thôi :))

Ở bên trái, bạn sẽ thấy có cột Project. Mục thường là Android

YT71Y6B.png



Mình sẽ giải thích cho các bạn về các file trong Template như sau:

FloatingModMenuService.java:
Code chính của Mod Menu. Bạn không cần tùy chỉnh nhiều trừ khi bạn muốn thêm hoặc trang trí nó khác đi. Các dòng code được chú thích ở bên cạnh các dấu (//...)

MainActivity.java:
Không cần động vào cái này nhiều.


StaticActivity.java:
Khởi tạo bởi OnCreate của game
Không cần động đến cái này nhiều

main.cpp
Trong file này, bạn chủ yếu edit icon mod, các features, credit và thực hiện mã của bạn cho KittyMemory hoặc MS Hooking.

- Phần tiêu đề (Title): Chữ to

- Phần Heading (Heading): Chữ bé

- Delay: Số thời gian cần để hiển thị Menu. Thời gian cần được tính theo milliseconds. Ví dụ 4000 ms là 4 secs

- Icon: Hình ảnh Icon của Mod menu được dịch sang mã Base64

- IconSize: Kích cỡ hình ảnh Icon Mod menu

- Toast: Chữ hiển thị ở góc dưới màn hình

- Changes: Thay đổi các mục trong menu. Các mục phải được đếm từ 0

- getFeatureList: Ở đây các bạn thêm phần cần Mod

Cách dùng:

Code:
Toggle_[feature name]
SeekBar_[feature name]_[min value]_[max value]
Spinner_[feature name]_[Items e.g. item1_item2_item3]
Button_[feature name]
Button_OnOff_[feature name]
InputValue_[feature name]
Ví dụ:

Code:
 Toggle_God mode
Spinner_Weapons_AK47_9mm_Knife
Button_OnOff_God mode
Đừng quên đếm các mục từ số 0 và ghi nhớ chúng

- hack_thread:
Thêm các mã hack vào KittyMemory hoặc Hooking. Tôi ko dạy đâu nhaaaaaaaa. Yêu cầu ở bên trên rồi đó.

- JNI_OnLoad:
Khởi tạo khi load libs

Android.mk
Trong file này, bạn có thể sửa tên lib trong dòng LOCAL_MODULE
Khi sửa tên lib, hãy sửa tên lib ở System.loadLibrary("") dưới mục OnCreat trong FloatingModMenuService.java
Nó phải có chung tên thì mới load lib được.

Cách dùng KittyMemory:
Code:
Code:
MemoryPatch::createWithHex([Tên lib, [offset], "[hex. Có hoặc không dấu cách]");
[Struct].get_CurrBytes().Modify();
[Struct].get_CurrBytes().Restore();

[Struct].get_TargetAddress();
[Struct].get_PatchSize();
[Struct].get_CurrBytes().c_str();
Ví dụ như trong github ông này: MJx0/KittyMemory

Cách dùng Hook:
ARM64:
Code:
Code:
A64HookFunction((void *) getAbsoluteAddress([Lib Name], [offset]), (void *) [function], (void **) &[old function]);
ARMv7/x86:
Code:
Code:
MSHookFunction((void *) getAbsoluteAddress([Lib Name], [offset]), (void *) [function], (void **) &[old function]);

----- Test Mod menu -----

Bật giả lập bất kỳ hoặc kết nối điện thoại vào máy tính, nhấn nút màu xanh như trong ảnh để test

ZegjeM8.png


----- Khởi tạo Mod menu cho game -----

Sau khi đã test xong, build project thành APK.

Build -> Build Bundle(s) / APK(s) -> Build APK(s)

Nếu ko có lỗi gì xảy ra thì OKE, đã xong

WpSKV1L.png



Nhấn vào locate để hiện vị trí apk.

wBTPSLi.png



Decompile app-debug.apk bằng SBennyAPKTool đã cho ở mục đầu tiên. Decompile game cần mod nữa

Vào thư mục decompile của game, mở Androidmanifest.xml
Thêm quyền này vào

XML:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
XOxLU91.png



Thêm phần service bên dưới tag application

XML:
<service
android:name="uk.lgl.modmenu.FloatingModMenuService"
android:enabled="true"
android:exported="false"/>
vHADRPI.png



Lưu file AndroidManifest.xml (Ctrl + S)

Giờ ta tìm phần MainActivity, nó thường ở dưới tag application. Tên của nó thường rất khác tùy theo các app. Nếu nhìn thấy android:name="android.intent.action.MainActivity" sẽ biết ngay đó là phần MainActivity


7DzU8d0.png



hoặc mở trong APK Easy Tool, bạn sẽ thấy ngay

ohp0zk1.png



Trong trường hợp này, phần Main sẽ ở com/funcube/loa/MainActivity.smali. Mở đến file (game đã decompile)/smali/com/funcube/loa/ và bạn sẽ thấy MainActivity.smali. Nếu game dùng MultiDex (nhiều file .dex), sẽ khó để tìm phần loz này hơn

Mở MainActivity.smali, tìm phần OnCreate và paste code này vào

Code:
invoke-static {p0}, Luk/lgl/modmenu/StaticActivity;->Start(Landroid/content/Context;)V
7CxTCl8.png



Lưu file lại

Copy mod menu từ file smali của app-debug.apk tới file smali của game. Ví dụ, của tôi là uk.lgl.modmenu, Tôi sẽ copy file "uk" từ app-debug (app-debug\smali\uk) tới file đã decompile của game (tên game)\smali


aO6eEab.png



Lưu ý với game có nhiều file smali. Nếu file MainActivity.smali nằm ở smali_classes2, thì copy file mod menu vào file smali_classes2

Copy file lib đã mod (Ví dụ như libLGLTeam.so) từ app-debug.apk tới file libs của game. Copy đúng file .so vào các file như
armeabi-v7a là của armeabi-v7a, arm64-v8a là của arm64-v8a, vân vân và meimei
Đặt nhầm thì ăn đầu dick thôi


oZq1Wq7.png



Giờ thì Compile và Sign APK

Nếu Compile fail thì search gg

Nếu Mod menu hiện và hack được thì chúc mừng nka

Cảm ơn đã đọc cái này. Có gì cần giúp thì cmt bên dưới nhaaaaaaaaaaaaaaa <3 =D
 
Top Bottom