https://github.com/radioegor146/native-obfuscator
Java .class to .cpp converter for use with JNI
Currently, fully supports only Java 8. Java 9+ and Android support is entirely experimental
Warning: blacklist/whitelist usage is recommended because this tool slows down code significantly (like do not obfuscate full Minecraft .jar)
Also, this tool does not particularly obfuscate your code; it just transpiles it to native. Remember to use protectors like VMProtect, Themida, or obfuscator-llvm (in case of clang usage)
Currently, fully supports only Java 8. Java 9+ and Android support is entirely experimental
Warning: blacklist/whitelist usage is recommended because this tool slows down code significantly (like do not obfuscate full Minecraft .jar)
Also, this tool does not particularly obfuscate your code; it just transpiles it to native. Remember to use protectors like VMProtect, Themida, or obfuscator-llvm (in case of clang usage)
GitHub
GitHub - radioegor146/native-obfuscator: Java .class to .cpp converter for use with JNI
Java .class to .cpp converter for use with JNI. Contribute to radioegor146/native-obfuscator development by creating an account on GitHub.
❤🔥6❤2
This media is not supported in your browser
VIEW IN TELEGRAM
I made this app specially for my Offline Dex2C project NDK Build Project
Hope you guys will support me a lot ❤️
Hope you guys will support me a lot ❤️
🥰11❤5🤯1
ndklink ( Build Your Native Code ).apk
1.5 MB
ndklink ( Build Your Native Code )
Give me feedback Try it out for yourself and if you see any problems, be sure to let me know. I've made a public version of it available for testing as I'll be using it in a larger project ❣️
Modified NDK - https://news.1rj.ru/str/RevDexChat/113
Give me feedback Try it out for yourself and if you see any problems, be sure to let me know. I've made a public version of it available for testing as I'll be using it in a larger project ❣️
Modified NDK - https://news.1rj.ru/str/RevDexChat/113
❤10
Finally guys done 90% dex2c offline apk ❤️
I have a lot of work to do behind this because I converted the entire dex2c library to C++
I have a lot of work to do behind this because I converted the entire dex2c library to C++
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰11❤🔥5👌3
dex2c-LITE.zip
6.7 MB
Dex2C-LITE Setup Guide
Packages to Install:
About Dex2C-LITE:
This is a lightweight version of Dex2C that works perfectly with Python no need for extra package installations.
It’s an evaluation version without the 📍 Shrink Application Class feature.
Remade by @aantik_mods
The source code I’ve made public for Termux is the best modified version of Dex2C optimized so even beginners can use it easily
How to Use
#1 Install the two required packages in Termux:
#2 Navigate to the Dex2C directory:
#3 Run the Python noscript
#4 Manually add
#5 Use my NDK Builder APK to build the code from this path:
After building, add all generated
#6 Enjoy your lightweight Dex2C build
Coming Soon
Tomorrow, I’ll release the full Dex2C Application, which will be more user-friendly and even easier to use
Packages to Install:
pkg install python
pkg install openjdk-17 -y
About Dex2C-LITE:
This is a lightweight version of Dex2C that works perfectly with Python no need for extra package installations.
It’s an evaluation version without the 📍 Shrink Application Class feature.
Remade by @aantik_mods
The source code I’ve made public for Termux is the best modified version of Dex2C optimized so even beginners can use it easily
How to Use
#1 Install the two required packages in Termux:
python and openjdk-17#2 Navigate to the Dex2C directory:
cd dex2c
#3 Run the Python noscript
python3 dcc_unsigned.py -i /storage/emulated/0/MT2/apks/input.apk -o output.apk
#4 Manually add
antik.smali to your output.apk.#5 Use my NDK Builder APK to build the code from this path:
/dex2c-LITE/project/jni/After building, add all generated
.so files add to your output.apk inside the lib folder.#6 Enjoy your lightweight Dex2C build
Coming Soon
Tomorrow, I’ll release the full Dex2C Application, which will be more user-friendly and even easier to use
😍12❤9🤯2
ndklink Fix .zip
3.9 MB
1❤11🥰2🤯2
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥13❤6👀6
The Challenge of Changing Text in Android App
When modifying an Android app’s native library
You want to replace a small string like
But the original memory space for
How Text Is Stored
Strings like
Instead, the code holds a memory address (pointer) to where that text actually lives
Example :)
That means
So,
You can’t just write a longer string in the same place but you can redirect the program to another location with more space. This is called static patching
Find a New Home :)
Inside the
message, debug string, or readme text that the app never uses Let’s say you find a big help text at
This will be your new home for the custom text
Reroute the Pointer
In the original code
Change that instruction so it points to your new offset
Now the program will look for the string at 0x7788 instead of 0x8334
Open your so file in a hex editor and go to address 0x7788
Replace the old text (
After your new string, you must add a null terminator (
That final
By - @aantik_mods
Alternative --> write replacement string to .rodata and use LineHook to redirect the existing pointer to the new location -- required c++ library <utf8.h>
✅ #RevDex
lib.soWhen modifying an Android app’s native library
lib.so, one of the most common problems you face is this:You want to replace a small string like
"Hello" with a much longer one like "Welcome to Antik’s Mod"But the original memory space for
"Hello" is very limited so if you just overwrite it, the new text overflows into other data and crashes the programHow Text Is Stored
Strings like
"Hello" aren’t stored directly inside the code.Instead, the code holds a memory address (pointer) to where that text actually lives
Example :)
asm
LDR R0, =0x8334
BL printf
That means
“When showing the message, go read the string stored at address 0x8334.”So,
"Hello" is actually stored at lib location 0x8334You can’t just write a longer string in the same place but you can redirect the program to another location with more space. This is called static patching
Find a New Home :)
Inside the
.so file, you can often find large, unused or unimportant text areas called data caves a long helpmessage, debug string, or readme text that the app never uses Let’s say you find a big help text at
Offset : 0x7788 --> "App is Good app for You..."
This will be your new home for the custom text
Reroute the Pointer
In the original code
asm
LDR R0, =0x8334
Change that instruction so it points to your new offset
asm
LDR R0, =0x7788
Now the program will look for the string at 0x7788 instead of 0x8334
Open your so file in a hex editor and go to address 0x7788
Replace the old text (
App is Good app...) with your new oneWelcome to Antik’s Mod
After your new string, you must add a null terminator (
00) Example in hex57 65 6C 63 6F 6D 65 20 74 6F 20 41 6E 74 69 6B 27 73 20 4D 6F 64 00
That final
00 tells the programBy - @aantik_mods
Alternative --> write replacement string to .rodata and use LineHook to redirect the existing pointer to the new location -- required c++ library <utf8.h>
✅ #RevDex
1❤13🤯6🥰4
Antik Mods ESP C++.rar
6 MB
DirectX 9 draw
https://github.com/naxl/directx12offline/releases/tag/v0.1.0
LocalPlayer [ac_client.exe + 0x0017E0A8]
Entity List [ac_client.exe + 0x18AC04]
FOV [ac_client.exe + 0x18A7CC]
PlayerCount [ac_client.exe + 0x18AC0C]
Position X [0x2C]
Position Y [0x30]
Position Z [0x28]
Head Position X [0x4]
Head Position Y [0xC]
Head Position Z [0x8]
Player Camera X [0x34]
Player Camera Y [0x38]
Assault Rifle Ammo [0x140]
Submachine Gun Ammo [0x138]
Sniper Ammo [0x13C]
Shotgun [0x134]
Pistol Ammo [0x12C]
Grenade Ammo [0x144]
Fast fire Assault Rifle [0x164]
Fast fire Sniper [0x160]
Fast fire Shotgun [0x158]
Auto shoot [0x204]
Health Value [0xEC]
Armor Value [0xF0]
Player Name [0x205]
https://github.com/naxl/directx12offline/releases/tag/v0.1.0
LocalPlayer [ac_client.exe + 0x0017E0A8]
Entity List [ac_client.exe + 0x18AC04]
FOV [ac_client.exe + 0x18A7CC]
PlayerCount [ac_client.exe + 0x18AC0C]
Position X [0x2C]
Position Y [0x30]
Position Z [0x28]
Head Position X [0x4]
Head Position Y [0xC]
Head Position Z [0x8]
Player Camera X [0x34]
Player Camera Y [0x38]
Assault Rifle Ammo [0x140]
Submachine Gun Ammo [0x138]
Sniper Ammo [0x13C]
Shotgun [0x134]
Pistol Ammo [0x12C]
Grenade Ammo [0x144]
Fast fire Assault Rifle [0x164]
Fast fire Sniper [0x160]
Fast fire Shotgun [0x158]
Auto shoot [0x204]
Health Value [0xEC]
Armor Value [0xF0]
Player Name [0x205]
1❤🔥2
How to Connect Weapon Class to Player Class Complete Guide
Weapon Class Explained
The Weapon class handles gun bullet count
class Weapon {
private:
int ammo; // Hidden variable
public:
// Setter method to change ammo
void setAmmo(int value) {
ammo = value;
}
// Getter method to read ammo
int getAmmo() const {
return ammo;
}
};
Player Class Connection
Player class contains weapon directly
class Player {
private:
Weapon weapon; // Player OWNS this weapon 0x2C
public:
// Returns weapon's address
Weapon* getWeapon() {
return &weapon;
}
};
Enemy Class Difference
class Enemy {
private:
Weapon* weapon; // Enemy has pointer to weapon 0x2C
public:
Weapon* getWeapon() const {
return weapon;
}
};
Hook Explain
void saferHookedUpdate(void* instance) {
// Check if this is Player (not Enemy)
if (IsPlayerInstance(instance)) {
// Extract weapon from memory offset 0x2C
void* weaponPtr = *(void**)((uint64_t)instance + 0x2C);
// If weapon exists, set ammo to 10000
if (weaponPtr != NULL) {
originalSetAmmo(weaponPtr, 10000);
}
}
// Call original game function
originalUpdate(instance);
}
How It Works In Game
Game updates all characters update each frame CPM Our hook intercepts runs before original update function Checks instance type identifies player vs enemy Sets unlimited ammo only for players 10000 bullets Game continues resumes normal operation
https://news.1rj.ru/str/RevDex/167
https://news.1rj.ru/str/RevDex/168
https://news.1rj.ru/str/RevDex/169
// cocos2d engine 🚂 example here
Guide - @aantik_mods
Some people still don't know about the field Offset I explain 😂👏 See
Example '*
Your update offset is 0x7788.
Your field offset
float get_speed is 0x5
That means the full field address is 0x7788 + 0x5
For example, in hex: 00 66 55 66 C7 88
here C7 is the pointer of your field
Weapon Class Explained
The Weapon class handles gun bullet count
class Weapon {
private:
int ammo; // Hidden variable
public:
// Setter method to change ammo
void setAmmo(int value) {
ammo = value;
}
// Getter method to read ammo
int getAmmo() const {
return ammo;
}
};
Player Class Connection
Player class contains weapon directly
class Player {
private:
Weapon weapon; // Player OWNS this weapon 0x2C
public:
// Returns weapon's address
Weapon* getWeapon() {
return &weapon;
}
};
Enemy Class Difference
class Enemy {
private:
Weapon* weapon; // Enemy has pointer to weapon 0x2C
public:
Weapon* getWeapon() const {
return weapon;
}
};
Hook Explain
void saferHookedUpdate(void* instance) {
// Check if this is Player (not Enemy)
if (IsPlayerInstance(instance)) {
// Extract weapon from memory offset 0x2C
void* weaponPtr = *(void**)((uint64_t)instance + 0x2C);
// If weapon exists, set ammo to 10000
if (weaponPtr != NULL) {
originalSetAmmo(weaponPtr, 10000);
}
}
// Call original game function
originalUpdate(instance);
}
How It Works In Game
Game updates all characters update each frame CPM Our hook intercepts runs before original update function Checks instance type identifies player vs enemy Sets unlimited ammo only for players 10000 bullets Game continues resumes normal operation
https://news.1rj.ru/str/RevDex/167
https://news.1rj.ru/str/RevDex/168
https://news.1rj.ru/str/RevDex/169
// SoldierLocalController->updateStep(float, cpVect, cpVect, float);
void (*orig_updateStepP)(void *instance, float f1, Vector2 v1, Vector2 v2, float f2);
void updateStepP(void *instance, float f1, Vector2 v1, Vector2 v2, float f2) {
if (instance != NULL) {
// Class Linking get Object
void* Weapon = *(void**)((uint64_t)instance + 0x1D0);
if (Weapon != NULL) {
if (isZoom > 0) {
*(float *) ((uint64_t) Weapon + 0x1dc) = (float) isZoom;
}
}
}
return orig_updateStepP(instance, f1, v1, v2, f2);
}
// cocos2d engine 🚂 example here
Guide - @aantik_mods
Some people still don't know about the field Offset I explain 😂👏 See
Example '*
Your update offset is 0x7788.
Your field offset
float get_speed is 0x5
That means the full field address is 0x7788 + 0x5
For example, in hex: 00 66 55 66 C7 88
here C7 is the pointer of your field
1❤5👌3
https://github.com/eirv/SimpleIORedirect
发现一个有趣的项目,听说它可以过签360加固,但是只支持安卓14-15,你可以研究一下😁
发现一个有趣的项目,听说它可以过签360加固,但是只支持安卓14-15,你可以研究一下😁
GitHub
GitHub - eirv/SimpleIORedirect: Android IO redirection implementation, using seccomp user notify mechanism / 使用 seccomp unotify…
Android IO redirection implementation, using seccomp user notify mechanism / 使用 seccomp unotify 的 Android 文件重定向实现 - eirv/SimpleIORedirect
Media is too big
VIEW IN TELEGRAM
I’m building HM Manager, but I ran into a big problem.
I added DEX regex searching, but
Last night, I started doing research to figure out how MT Manager performs regex searches so fast, even on large DEX files 😂👏
After continuous work, I finally managed to build my own **custom disassembler and DEX parser in C++ and here’s the result
Dex Parser Faster Than Ever! 😂👏
I added DEX regex searching, but
dexlib2 is sooo slow 🦥😭Last night, I started doing research to figure out how MT Manager performs regex searches so fast, even on large DEX files 😂👏
After continuous work, I finally managed to build my own **custom disassembler and DEX parser in C++ and here’s the result
Dex Parser Faster Than Ever! 😂
Please open Telegram to view this post
VIEW IN TELEGRAM
👌14❤6❤🔥1
ApiKill @aantik_mods.zip
512.3 KB
ApiKill — @aantik_mods
Internal API Request Block
ApiKill is a simple, effective tool to control internal API requests inside an app. With ApiKill you can block annoying online dialogs, unwanted remote checks, or problematic domains while still allowing specific APIs you need
Online dialog sellers are already jealous of me 😁
The main feature doesn’t need a firewall or VPN 😂 My C++ is fire, dialog sellers can’t compete I don’t care💅
Internal API Request Block
ApiKill is a simple, effective tool to control internal API requests inside an app. With ApiKill you can block annoying online dialogs, unwanted remote checks, or problematic domains while still allowing specific APIs you need
Online dialog sellers are already jealous of me 😁
The main feature doesn’t need a firewall or VPN 😂 My C++ is fire, dialog sellers can’t compete I don’t care
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14🤯7🥰2