Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

ispointer/ExternalMenu

Open more actions menu

Repository files navigation

External Memory Menu (Socket Based)

A high-performance external memory read/write system for Android using a native socket server + client bridge.

This project demonstrates how to:

  • Run a native executable (server_arm, server_arm64, etc.)
  • Communicate with it from libmem.so
  • Perform safe external memory read/write using process_vm_readv / writev

Architecture Overview

pcp image


How It Works ??

1. Server (Native Executable)

The server_arm / server_arm64 is a standalone binary.

What it does

  • Opens socket on 127.0.0.1:8080
  • Waits for client request
  • Reads/Writes memory of target process

Entry:

int main() {
    runServer();
}

2. Communication Protocol

struct Request {
    char package[64];
    char lib[64];
    uint64_t offset;
    uint32_t mode;   // 0 = READ, 1 = WRITE
    uint32_t size;
    uint8_t data[128];
};

struct Response {
    uint32_t success;
    uint8_t data[128];
};

3. Client Side (libmem.so)

All read/write goes through:

runClientRaw(...)

Flow:

  1. Connect to server
  2. Send Request
  3. Receive Response
  4. Return data

4. Memory Read / Write

READ

Read<int>(0x80C5B0);

Internally

Read -> runClientRaw -> socket -> server -> process_vm_readv

WRITE

Write<int>(0x80C5B0, 999);

Internally

Write -> runClientRaw -> socket -> server -> process_vm_writev

5. Server Memory Access

Inside server:

syscall(SYS_process_vm_readv, ...)
syscall(SYS_process_vm_writev, ...)

Direct kernel-level memory access No injection needed External cheat method


6. PID + Base Address

PID:

Mem::GetPid("com.fingersoft.hillclimb");

Base:

Mem::GetBase(pid, "libgame.so");

Final Address

address = base + offset

7. Asset Execution (Important)

Server is stored inside:

assets/server_arm64
assets/server_arm

Then extracted & executed:

extractAsset(...)
chmod 777
su -c ./server_lgl

Runs as daemon Auto-start via JNI


Features

  • External memory R/W (no injection)
  • Multi ABI support
  • Socket-based communication
  • Works with root (su)
  • Fast syscall-based memory access

Requirements

  • Root access (required)
  • SELinux permissive:
setenforce 0


Credits

  • Aantik Mods
  • External Memory Concept inspired by native Linux debugging

Future Improvements

  • Multi-threaded server
  • Encryption (anti detection)
  • Persistent socket (faster)
  • Dynamic offset resolver

License

Educational purposes only. Use responsibly.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.