Android逆向|Xposed日志查看器

admin 2026-04-13 04:00:53 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍一款专为Android逆向设计的Xposed模块日志查看器,支持UDP实时接收、WebSocket推送、多级过滤和敏感数据检测。项目采用Python开发,提供完整部署指南和Xposed模块集成代码,具备SQLite数据存储和响应式Web界面。文档包含详细的功能演示、环境配置和实用技巧,适用于安全研究人员进行移动应用逆向分析。 综合评分: 85 文章分类: 移动安全,安全工具,逆向分析,WEB安全,安全开发


cover_image

Android逆向 | Xposed日志查看器

原创

辰星安全实验室 辰星安全实验室

安全老辰sec

2025年6月16日 08:01 江苏

在小说阅读器读本章

去阅读

| | | — | | 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。 工具来自网络,安全性自测,如有侵权请联系删除。本次测试仅供学习交流使用,如若非法他用,与平台和本文作者无关,需自行负责! |

建议大家把辰星安全设为星标”,因为公众号现在只对常读和星标的公众号才能展示大图推送,否则可能就看不到了啦!

0x01 项目介绍

一个现代化的Xposed模块日志实时查看器,采用大厂设计风格,支持UDP日志接收、WebSocket实时推送、多级过滤和搜索功能。专为Android逆向工程师和安全研究人员设计。

0x02 主要功能

✨ 功能特性

🚀 核心功能

  • 📡 实时日志监控

  • UDP服务器接收Xposed模块日志,支持多客户端同时连接

  • ⚡ WebSocket推送

  • 浏览器实时显示新日志,无需刷新页面

  • 🎯 智能分级

  • 自动识别INFO/WARN/ERROR/DEBUG级别,支持自定义标签

  • 🔍 多维过滤

  • 按级别、关键词、时间范围、来源IP过滤

  • 🔒 敏感数据检测

  • 自动识别手机号、Token、OpenID等敏感信息并高亮

  • 💾 数据持久化

  • SQLite数据库存储,支持历史查询和数据导出

🎨 界面设计

  • 🏢 大厂设计风格

  • 参考蚂蚁金服/阿里云设计语言,简洁专业

  • 📱 响应式布局

  • 完美适配桌面和移动端设备

  • 📊 实时统计

  • 日志数量、连接状态、缓冲区监控一目了然

  • 🌙 护眼体验

  • 优化的代码查看界面,长时间使用不疲劳

🔧 技术特性

⚡ 高性能

  • ⚡ 高性能

  • 异步处理架构,轻松处理大量日志数据

  • 🔗 多客户端

  • 支持多个Xposed模块同时连接,互不干扰

  • 🛡️ 容错处理

  • 网络异常自动重连,数据不丢失

  • 🧠 内存优化

  • 智能缓冲区管理,避免内存溢出

0x03 功能演示

🖥️ 主控制台

📋 环境要求

Python 3.7+ (推荐3.8+)操作系统: Windows/Linux/macOS内存: 建议512MB以上可用内存网络: UDP端口9999和HTTP端口5000浏览器: Chrome/Firefox/Safari/Edge

⚡ 一键启动

  • 下载项目
git clone https://github.com/cncsnet1/xposed_log_viewer.gitcd xposed_log_viewer
  • 安装依赖
pip install -r requirements.txt
  • 启动服务
python app.pypython udp_server.py
  • 访问控制台
Web控制台: http://localhost:5000UDP日志端口: 9999

🎯 Windows用户快速启动

# 进入项目目录cd xposed_log_viewer
# 启动服务python start.py

启动成功后会看到:

🚀 启动Xposed日志查看器...📡 UDP服务器启动: 端口 9999🌐 Web服务器启动: http://localhost:5000✅ 所有服务已启动,按Ctrl+C停止

Xposed模块集成

只需要在你的Xposed模块中添加以下代码,即可将日志发送到查看器:

Java版本 (推荐)

import java.net.DatagramSocket;import java.net.DatagramPacket;import java.net.InetAddress;
public class LogSender {    private static final String LOG_SERVER_IP = "192.168.1.100";  // 修改为你的电脑IP    private static final int LOG_SERVER_PORT = 9999;
    /**     * 发送日志到查看器     * @param tag 日志标签 (如: "IM应用Hook", "支付应用Hook")     * @param message 日志内容     */    public static void sendLog(String tag, String message) {        try {            String logContent = tag + ": " + message;            DatagramSocket socket = new DatagramSocket();
            byte[] data = logContent.getBytes("UTF-8");            DatagramPacket packet = new DatagramPacket(                data, data.length,                 InetAddress.getByName(LOG_SERVER_IP),                 LOG_SERVER_PORT            );
            socket.send(packet);            socket.close();
        } catch (Exception e) {            XposedBridge.log("发送日志失败: " + e.getMessage());        }    }
    // 使用示例    public void hookExample() {        findAndHookMethod("com.example.app.ui.LauncherUI", "onCreate", new XC_MethodHook() {            @Override            protected void afterHookedMethod(MethodHookParam param) throws Throwable {                sendLog("IM应用Hook", "LauncherUI创建成功");            }        });    }}

Kotlin版本

object LogSender {    private const val LOG_SERVER_IP = "192.168.1.100"  // 修改为你的电脑IP    private const val LOG_SERVER_PORT = 9999
    fun sendLog(tag: String, message: String) {        try {            val socket = DatagramSocket()            val data = "$tag: $message".toByteArray(Charsets.UTF_8)            val packet = DatagramPacket(                data, data.size,                InetAddress.getByName(LOG_SERVER_IP),                LOG_SERVER_PORT            )            socket.send(packet)            socket.close()        } catch (e: Exception) {            XposedBridge.log("发送日志失败: ${e.message}")        }    }}

💡 使用技巧

1.项目下载

Windows: 运行 ipconfig 查看IPv4地址确保手机和电脑在同一WiFi网络下

2.日志分析建议

sendLog("IM应用Hook", "info: 用户登录成功");      // 普通信息sendLog("IM应用Hook", "warning: 检测到风控");     // 警告信息  sendLog("IM应用Hook", "error: Hook失败");        // 错误信息sendLog("IM应用Hook", "debug: 参数值=" + param);  // 调试信息

3.铭感数据处理

// 系统会自动检测并高亮显示敏感数据sendLog("支付应用", "获取到手机号: 138****8888");sendLog("登录模块", "Token: eyJhbGciOiJIUzI1NiIs...");

⚙️ 配置说明

🔧 服务器配置

如需修改端口或其他设置,编辑 config.py 文件:

# 服务器配置WEB_HOST = '0.0.0.0'      # Web服务器地址 (0.0.0.0表示允许外部访问)WEB_PORT = 5000           # Web服务器端口UDP_HOST = '0.0.0.0'      # UDP服务器地址  UDP_PORT = 9999           # UDP服务器端口 (Xposed模块发送日志的端口)
# 数据库配置DATABASE_PATH = 'logs.db'  # SQLite数据库文件路径MAX_LOGS = 10000          # 最大日志存储数量 (超出会自动清理旧日志)
# 缓冲区配置BUFFER_SIZE = 1000        # 内存缓冲区大小

📝 支持的日志格式

系统智能识别多种日志格式,推荐使用纯文本格式

1.纯文本格式(推荐)

IM应用Hook: 用户登录成功支付应用Hook: error: 获取支付密码失败短视频应用Hook: warning: 检测到反调试

2.带级别的文本格式

INFO: IM应用启动完成ERROR: Hook注入失败WARNING: 发现敏感API调用DEBUG: 参数值 userId=12345

3.JSON格式(高级用法)

{    "level": "INFO",    "tag": "IM应用Hook",     "message": "用户登录成功",    "timestamp": "2024-01-01T12:00:00"}

💡 智能识别: 系统会自动从日志内容中识别级别关键词 (info/error/warning/debug) 并进行分类标记

🛠️ 项目结构

xposed_log_viewer/├── 📄 app.py              # Flask主应用 (Web服务器)├── 📡 udp_server.py       # UDP服务器 (接收日志)├── 🚀 start.py            # 一键启动脚本├── ⚙️ config.py           # 配置文件├── 📋 requirements.txt    # Python依赖包├── 🎨 templates/│   └── index.html         # 主界面模板├── 💾 logs.db            # SQLite数据库 (自动创建)├── 📜 README.md          # 项目说明文档└── 📄 LICENSE            # MIT开源协议

🎯 专为Android逆向工程师打造的专业日志查看工具

如果这个项目对你的逆向分析工作有帮助,欢迎⭐️Star支持!

项目地址:

https://github.com/cncsnet1/xposed_log_viewer/blob/main/

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:安全老辰sec 辰星安全实验室 辰星安全实验室《Android逆向 | Xposed日志查看器》

评论:0   参与:  0