吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2066|回复: 32
上一主题 下一主题
收起左侧

[Android 原创] 运行Ai逆向分析发生的趣事

  [复制链接]
跳转到指定楼层
楼主
qig123 发表于 2026-3-11 18:16 回帖奖励
今天试试把ai用于逆向分析.
先来个最简单的任务,下载xhs最新App,过Frida检测.
鼓弄半天自己创建一个Skill出来.让ai执行.
开始了,我不敢一下子提太大的要求,直接问:写个脚本过xhs frida检测,先hook android_dlopen_ext 看看加载到哪个so会crash.
Ai忙活半天,写出了如此抽象的代码.我承认我没看见这样的Hook代码,赞叹Ai超绝的想象力.就一个单文件
[font=PingFang SC, 微软雅黑, Microsoft YaHei,
[JavaScript] 纯文本查看 复制代码
'use strict';

if (!globalThis.__xhs_dlopen_hook_installed__) {
  globalThis.__xhs_dlopen_hook_installed__ = true;

  function safeReadCString(ptrValue) {
    try {
      if (ptrValue.isNull()) {
        return null;
      }
      return ptrValue.readCString();
    } catch (error) {
      return `<readCString failed: ${error}>`;
    }
  }

  function logPayload(stage, index, path, extra) {
    send({
      tag: 'android_dlopen_ext',
      stage: stage,
      index: index,
      path: path,
      extra: extra || {}
    });
  }

  try {
    const resolver = new ApiResolver('module');
    const matches = resolver.enumerateMatches('exports:*!android_dlopen_ext');
    const target = matches.length > 0 ? matches[0].address : null;
    if (!target) {
      send({ tag: 'android_dlopen_ext', stage: 'error', error: 'symbol not found' });
    } else {
      let counter = 0;
      Interceptor.attach(target, {
        onEnter(args) {
          this.index = ++counter;
          this.path = safeReadCString(args[0]);
          this.flags = args[1].toInt32();
          this.caller = this.returnAddress;
          logPayload('enter', this.index, this.path, {
            flags: this.flags,
            caller: this.caller.toString()
          });
        },
        onLeave(retval) {
          logPayload('leave', this.index, this.path, {
            retval: retval.toString()
          });
        }
      });
      send({ tag: 'android_dlopen_ext', stage: 'ready', address: target.toString() });
    }
  } catch (error) {
    send({ tag: 'android_dlopen_ext', stage: 'exception', error: String(error) });
  }
}


然后ai根据日志得出了结论:
日志:
message: {'type': 'send', 'payload': {'tag': 'android_dlopen_ext', 'stage': 'leave', 'index': 30, 'path': 'libjnirtk.so', 'extra': {'retval': '0x0'}}} data: None
message: {'type': 'send', 'payload': {'tag': 'android_dlopen_ext', 'stage': 'enter', 'index': 31, 'path': '/data/app/~~U0lCTYVkl5g0SsvMZoQbnA==/com.xingin.xhs-Jl3emi3eZEMALq8ZUcvRVw==/lib/arm64/libredbase.so', 'extra': {'flags': 2, 'caller': '0x79136acef0'}}} data: None
message: {'type': 'send', 'payload': {'tag': 'android_dlopen_ext', 'stage': 'leave', 'index': 31, 'path': '/data/app/~~U0lCTYVkl5g0SsvMZoQbnA==/com.xingin.xhs-Jl3emi3eZEMALq8ZUcvRVw==/lib/arm64/libredbase.so', 'extra': {'retval': '0x96744dceb1c50189'}}} data: None
message: {'type': 'send', 'payload': {'tag': 'android_dlopen_ext', 'stage': 'enter', 'index': 32, 'path': '/data/app/~~U0lCTYVkl5g0SsvMZoQbnA==/com.xingin.xhs-Jl3emi3eZEMALq8ZUcvRVw==/lib/arm64/libmsaoaidsec.so', 'extra': {'flags': 2, 'caller': '0x79136acef0'}}} data: None
Process terminated

Thank you for using Frida!
## 结论
- Frida 附加的首个主进程在 `android_dlopen_ext` 命中 `libmsaoaidsec.so` 时终止。
- 直接证据见 `logs/frida_console.log`:
  - 第 76 行前一个成功返回的是 `libredbase.so`
  - 第 77 行进入 `libmsaoaidsec.so`
  - 第 78 行立刻出现 `Process terminated`
- 系统随后又拉起新的主进程,见 `logs/device.log`:
  - 第 2889 行:启动首个被 Frida 命中的主进程 `5497`
  - 第 4468 行:再次启动新的主进程 `5720`
  - 第 4799 行:未被 Frida 挂住的新进程里,`libmsaoaidsec.so` 可以正常加载

## 推断
- 更像是“Frida 环境下,在 `libmsaoaidsec.so` 加载/初始化阶段触发了检测并导致进程退出”,而不是该 so 在普通环境里天然崩溃。
- `logs/device.log` 多次出现 `Bad JNI version passed to GetEnv: 1879114240`,这是当前最可疑的直接异常特征。
- `logs/device_crash.log` 里的 `soterd` / `fidoca_mitee` / `mlipayd_mitee` / `mtd_mitee` 崩溃噪音较大,和xhs主进程是否直接自杀不是一一对应关系,暂不作为主结论。

## 下一步
- 继续只盯 `libmsaoaidsec.so`:
  - Hook `JNI_OnLoad`
  - Hook `RegisterNatives`
  - Hook `JavaVM->GetEnv` / `JNIEnv` 相关入口
- 同时补一组 `libc`/`libart` 常见检测点:
  - `open/openat/access/fopen`
  - `pthread_create`
  - `dlopen/android_dlopen_ext` 二次确认
  - `ptrace` / `prctl` / `syscall`

免费评分

参与人数 6吾爱币 +10 热心值 +6 收起 理由
qtfreet00 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
jaffa + 1 + 1 谢谢@Thanks!
springlu + 1 我很赞同!
Amneisa + 1 + 1 我很赞同!
chahu233 + 1 + 1 我很赞同!
zhangtb + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
kyorz 发表于 2026-3-12 17:09
这以后就是算力的比拼,金钱的比拼,资本的比拼了。普通人连知识的力量都要失去了,AI抹平人与人之间的认知差后,作为一种生产力若是被资本垄断,细思极恐。从我做起呼吁AI平权!
推荐
冥界3大法王 发表于 2026-3-12 13:48
上次与DEEPSEEK的交流中
愣是出来个开发X64dbg“同悲道模式”
听完创意我都傻了
这要能开发出,以后逆向爱好者的我们全没乐趣可玩了。
推荐
Paulwalkera 发表于 2026-3-12 13:22
4#
lovemoney 发表于 2026-3-12 14:08
现在逆向都这么玩了吗?变化太快,进攻这么猛烈,app的防守肯定加倍,逆向可能会越来越难
5#
wupeiwupei 发表于 2026-3-12 14:09
AI逆向,这还真不知道,了解了解~!
6#
fatkun 发表于 2026-3-12 14:46
目前AI逆向能帮助普通人分析代码,已经好很多了。
7#
kleinsoul 发表于 2026-3-12 14:47
谁搞出来一个专门逆向的模型,然后再有人搞出来一个专门防逆向的模型来,会不会看到矛盾大战?
8#
anning666 发表于 2026-3-12 15:09
kleinsoul 发表于 2026-3-12 14:47
谁搞出来一个专门逆向的模型,然后再有人搞出来一个专门防逆向的模型来,会不会看到矛盾大战?

如果真出现这种情况,我觉得就是算力的比拼了,看谁的算力先耗尽....
9#
jackchengyu 发表于 2026-3-12 15:12
AI解放双手,改变逆向哪些繁琐之事,让逆向更简单化。
10#
fjhscpc 发表于 2026-3-12 17:06
学习下,以后用到AI的地方太多了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-4-29 10:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表