Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

libSea3

Version NDK Platform Architecture

一个功能强大的 Android 内存操作与网络通信静态库

功能特性快速开始Driver 系统自动构建示例代码


📖 简介

libSea3 是一个专为 Android 平台设计的通用静态库,提供了完整的内存读写、网络通信、加密算法等功能。采用模块化 Driver 架构,支持多种内存访问方式,适用于游戏辅助、性能分析、逆向工程等场景。

🎯 核心优势

  • 🚀 Driver 架构:模块化设计,轻松切换不同的内存读写方式
  • 🔧 多平台支持:同时支持真机 (ARM64) 和模拟器 (x86_64)
  • 高性能:优化的内存访问,支持批量操作和指针链
  • 🛠️ 易于集成:只需几行代码即可完成内存操作
  • 🤖 自动构建:GitHub Actions 自动化编译和发布

✨ 功能特性

内存操作

  • ✅ 多种 Driver 支持(syscall、pread64、kernel 等)
  • ✅ 指针链自动解析
  • ✅ 模块基址获取
  • ✅ 批量读写优化
  • ✅ 类型安全的模板方法

网络通信

  • ✅ 自定义 GET/POST 请求
  • ✅ 内置 cURL 支持
  • ✅ 多种网络验证算法
  • ✅ 无需手机环境依赖

加密与安全

  • ✅ 多种加密算法集成
  • ✅ 数据安全传输
  • ✅ 验证机制

开发辅助

  • ✅ 丰富的工具函数
  • ✅ 类型安全的接口
  • ✅ 详细的错误处理
  • ✅ 完善的日志系统

🚀 快速开始

环境要求

  • Android NDK r27+
  • CMake 3.10+ 或 ndk-build
  • Android API Level 21+
  • C++17 支持

编译项目

# 克隆仓库
git clone https://github.com/AYssu/libSea3.git
cd libSea3

# 使用 ndk-build 编译
export ANDROID_NDK_HOME=/path/to/ndk
ndk-build

# 编译特定架构
ndk-build APP_ABI=arm64-v8a
ndk-build APP_ABI=x86_64

# 或使用一键构建脚本
./一键构建脚本.sh

基础使用

#include "smemory.h"
#include "driver/driver_syscall.h"

using namespace pointer;

int main() {
    // 1. 获取目标进程 PID
    auto pid = smemory::get_package_pid("com.example.game");
    
    // 2. 初始化 Driver
    static auto driver = new syscall_driver();
    driver->set_pid(pid);
    
    // 3. 设置读写回调
    smemory::set_read<uintptr_t>([&](uintptr_t addr, void *data, size_t size) {
        return driver->read(addr, data, size);
    });
    
    smemory::set_write<uintptr_t>([&](uintptr_t addr, void *data, size_t size) {
        return driver->write(addr, data, size);
    });
    
    // 4. 获取模块基址
    auto base = smemory::get_module_base_str("libil2cpp.so", 1, "Xa");
    
    // 5. 读取数据
    int value = read_int(base + 0x1234);
    std::cout << "读取的值: " << value << std::endl;
    
    // 6. 写入数据
    write_int(base + 0x1234, 999);
    
    return 0;
}

🔌 Driver 系统

libSea3 采用可插拔的 Driver 架构,支持多种内存访问方式:

可用的 Driver

Driver 文件 适用场景 性能
syscall_driver driver/driver_syscall.h 真机 ARM64,使用 process_vm_readv ⭐⭐⭐⭐⭐
pread_driver driver/driver_pread.h 模拟器 x86_64,通过 /proc/pid/mem ⭐⭐⭐⭐
kernel_driver driver/driver_*.h 内核驱动方式 ⭐⭐⭐⭐⭐

Driver 使用示例

// 方式 1: 使用 syscall (真机推荐)
#include "driver/driver_syscall.h"
auto driver = new syscall_driver();

// 方式 2: 使用 pread64 (模拟器推荐)
#include "driver/driver_pread.h"
auto driver = new pread_driver();

// 方式 3: 根据平台自动选择
#ifdef __x86_64__
    #include "driver/driver_pread.h"
    auto driver = new pread_driver();
#else
    #include "driver/driver_syscall.h"
    auto driver = new syscall_driver();
#endif

Driver 接口

所有 Driver 都实现了统一的基类接口:

class driver_base {
public:
    virtual bool set_pid(pid_t pid) = 0;
    virtual bool read(uintptr_t address, void* buffer, size_t size) = 0;
    virtual bool write(uintptr_t address, void* buffer, size_t size) = 0;
    
    // 模板方法
    template <typename T>
    T read(uintptr_t address);
    
    template <typename T>
    bool write(uintptr_t address, T value);
};

🤖 GitHub Actions 自动构建

项目配置了完整的 CI/CD 流程,支持自动化构建和发布。

触发方式

1. 手动触发(推荐)

在 GitHub 仓库页面:

  1. 进入 Actions 标签
  2. 选择 基址修改在线构建 workflow
  3. 点击 Run workflow
  4. 填写构建参数(所有参数都有默认值)

2. Tag 触发

# 创建并推送 tag 即可触发构建
git tag v1.0.0
git push origin v1.0.0

构建参数

参数 默认值 说明
package_name com.example.app 目标应用包名
module libil2cpp.so 目标模块名称
memory Xa 内存区域标识
module_index 1 模块索引
pointer_chain (空) 指针链,用 + 分隔,如 0x10+0x20
modify_mode 读取 操作类型:读取/修改/读取并修改/修改冻结
value_type int 数据类型:int/float
modify_value 999 修改的值
platform 真机 64 平台:真机 64/模拟器 64
rw_type syscall 读写类型:syscall/prw64

构建输出

构建完成后会生成:

  • libs/arm64-v8a/memory - ARM64 可执行文件
  • libs/x86_64/memory - x86_64 可执行文件

📚 示例代码

指针链读取

// 获取模块基址
auto base = smemory::get_module_base_str("libil2cpp.so", 1, "Xa");

// 定义指针链
std::vector<uintptr_t> offsets = {0x10, 0x20, 0x30, 0x40};

// 解析指针链
uintptr_t final_addr = pointer::get_pointer64(base, offsets);

// 读取最终地址的值
int value = read_int(final_addr);

批量操作

// 批量读取
std::vector<int> values(10);
for (int i = 0; i < 10; i++) {
    values[i] = read_int(base + 0x1000 + i * 4);
}

// 批量写入
for (int i = 0; i < 10; i++) {
    write_int(base + 0x1000 + i * 4, i * 100);
}

类型安全操作

// 支持多种数据类型
float health = read_float(addr);
double money = read_double(addr);
int64_t exp = read_long(addr);

write_float(addr, 999.99f);
write_double(addr, 123456.789);
write_long(addr, 999999999LL);

📁 项目结构

libSea3/
├── driver/              # Driver 实现
│   ├── driver_base.h    # Driver 基类
│   ├── driver_syscall.h # syscall 实现
│   ├── driver_pread.h   # pread64 实现
│   └── ...
├── include/             # 头文件
│   ├── smemory.h        # 内存操作主接口
│   ├── smmap.h          # 内存映射
│   └── ...
├── jni/                 # NDK 构建配置
│   ├── Android.mk       # ndk-build 配置
│   └── Application.mk   # 应用配置
├── lib/                 # 预编译静态库
│   ├── arm64-v8a/
│   └── x86_64/
├── .github/             # GitHub Actions
│   └── workflows/
│       └── memory.yml   # 自动构建配置
├── main.cpp             # 示例程序
├── memory.cpp           # 内存操作模板
└── README.md

🔧 编译选项

Android.mk 配置

# 优化级别
LOCAL_CFLAGS := -std=c++17 -O3 -s -fvisibility=hidden

# 头文件路径
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../include $(LOCAL_PATH)/..

# 架构支持
APP_ABI := arm64-v8a x86_64

# 平台版本
APP_PLATFORM := android-21

🐛 常见问题

Q: 为什么 x86_64 模拟器上 syscall 不工作?

A: x86_64 Android 模拟器通常禁用了 process_vm_readv 系统调用。请使用 pread_driver 替代。

Q: 如何切换不同的 Driver?

A: 修改 include 和 driver 初始化代码:

//
#include "driver/driver_syscall.h"
auto driver = new syscall_driver();

// 改为
#include "driver/driver_pread.h"
auto driver = new pread_driver();

Q: 编译时出现换行符警告?

A: 项目已包含 .gitattributes 文件自动处理换行符。如果仍有问题:

# 转换所有源文件
find . -name "*.cpp" -o -name "*.h" | xargs dos2unix

Q: 如何调试 GitHub Actions 构建?

A: 查看构建日志中的 "生成的 memory.cpp" 部分,确认参数替换是否正确。


🤝 贡献

我们欢迎各种形式的贡献!

如何贡献

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

贡献指南

  • Bug 报告:使用 Issue 报告 bug
  • 功能建议:提出新功能需求或改进建议
  • 代码规范:遵循项目的代码风格
  • 测试:确保所有测试通过

📄 许可证

本项目采用部分开源许可

  • 开源部分:示例代码、头文件接口、Driver 实现
  • 🔒 闭源部分:核心静态库 (lib/ 目录下的 .a 文件)

使用条款

  1. 开源部分遵循 MIT 许可证,可自由使用和修改
  2. 闭源的核心库仅供学习和个人使用
  3. 商业使用需获得授权,请联系作者
  4. 禁止逆向工程、反编译或破解核心库

如需商业授权或有其他疑问,请通过邮箱联系:1773714466@qq.com


📞 联系方式


🌟 致谢

感谢所有为 libSea3 做出贡献的开发者!

如果这个项目对你有帮助,欢迎给个 ⭐ Star!


Made with ❤️ by AYssu

About

内存读写 网络验证 内存映射工具

Resources

Stars

29 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages