返回列表 发新帖

[已解决] 反射的一个问题

[复制链接]

1

主题

189

回帖

754

积分

初中生

Rank: 3Rank: 3

金币
144
好评
0
信誉
100
发表在  2026-2-21 01:57:49 来自手机  | 显示全部楼层 | 阅读模式  来自 山东
本帖最后由 若旅 于 2026-2-23 18:57 编辑

新人第一次发帖,很遗憾是个求助贴

水平较低,大佬不要喷我,谢谢

前提,这是一个DEX修改工具

就是,我用Dexclassloader加载了一个类,假设是a类

然后a类有个<clinit>方法,<clinit>方法里调用了b方法,b方法需要传递类型为c类的参数(b为native方法

我只加载了a类,反射执行了a类的某A方法,<clinit>被自动调用了,最后b方法的参数类因为没有加载而触发了jni层闪退。原因是参数c类为null (因为还没有被加载到

由于我整的是一个一键化工具,不能提前预知某个类的方法是否为调用了存在native方法调用的方法,也不想通过
反编译看smali的方法进行解析。
所以想问问
有啥方法可以不触发这个b方法或者<clinit>方法吗


图为拷打AI,最后因为没拷打出来发个帖问问



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

179

主题

3124

回帖

8586

积分

硕士生

小新

Rank: 6Rank: 6

金币
2338
好评
11
信誉
99

MT论坛最佳新人MT论坛帅哥MT论坛新人考神MT论坛活跃会员MT论坛灌水老大

发表于 2026-2-21 04:37:13 来自手机  | 显示全部楼层  来自 海南
虽然不太懂,但是感觉分析得头头是道
已有1人评分金币 理由
康哥 -10 恶意灌水

查看全部评分 总评分:金币 -10 

回复

使用道具 举报

7

主题

1480

回帖

6908

积分

硕士生

Rank: 6Rank: 6

金币
443
好评
22
信誉
112
发表于 2026-2-21 13:18:20 来自手机  | 显示全部楼层  来自 天津
自己搞个so去注册这个b方法防止闪退?不过想要注册到也挺麻烦的
回复

使用道具 举报

1

主题

189

回帖

754

积分

初中生

Rank: 3Rank: 3

金币
144
好评
0
信誉
100
发表于 2026-2-21 14:43:35 来自手机  | 显示全部楼层  来自 山东
秋菱 发表于 2026-2-21 13:18
自己搞个so去注册这个b方法防止闪退?不过想要注册到也挺麻烦的

我准备整的是一个通用的一键化工具,这种情况肯定是多发的
回复

使用道具 举报

7

主题

1480

回帖

6908

积分

硕士生

Rank: 6Rank: 6

金币
443
好评
22
信誉
112
发表于 2026-2-21 15:18:02 来自手机  | 显示全部楼层  来自 河北
若旅 发表于 2026-2-21 14:43
我准备整的是一个通用的一键化工具,这种情况肯定是多发的

够呛的,通过系统加载类并调用方法那肯定先加载clinit,除非想办法hook一下
回复

使用道具 举报

1

主题

189

回帖

754

积分

初中生

Rank: 3Rank: 3

金币
144
好评
0
信誉
100
发表于 2026-2-22 01:47:49 来自手机  | 显示全部楼层  来自 湖南
秋菱 发表于 2026-2-21 15:18
够呛的,通过系统加载类并调用方法那肯定先加载clinit,除非想办法hook一下 ...

直接hook拦截<clinit>吗
回复

使用道具 举报

1

主题

189

回帖

754

积分

初中生

Rank: 3Rank: 3

金币
144
好评
0
信誉
100
发表于 2026-2-22 01:53:36 来自手机  | 显示全部楼层  来自 湖南
秋菱 发表于 2026-2-21 15:18
够呛的,通过系统加载类并调用方法那肯定先加载clinit,除非想办法hook一下 ...

算了,直接拦截肯定又是一堆bug,我去想点别的吧
回复

使用道具 举报

171

主题

3614

回帖

1万

积分

博士生

Steve2280

Rank: 7Rank: 7Rank: 7

金币
92
好评
133
信誉
167

MT论坛最佳新人2018国庆节MT论坛帅哥MT论坛新人MT论坛灌水老大考神MT论坛侠客MT论坛活跃会员

发表于 2026-2-22 10:50:00 来自手机  | 显示全部楼层  来自 四川
只能想到Hook
或者在classloader之前用dexlib2自动把native方法的代码自动进行修改,参考MT的方法代码清空
回复

使用道具 举报

1

主题

189

回帖

754

积分

初中生

Rank: 3Rank: 3

金币
144
好评
0
信誉
100
发表于 2026-2-22 15:11:53 来自手机  | 显示全部楼层  来自 山东
Steve2280 发表于 2026-2-22 10:50
只能想到Hook
或者在classloader之前用dexlib2自动把native方法的代码自动进行修改,参考MT的方法代码清空 ...

对,我也只能想到这个,把先native清空
回复

使用道具 举报

1

主题

189

回帖

754

积分

初中生

Rank: 3Rank: 3

金币
144
好评
0
信誉
100
发表于 2026-2-23 18:56:56 来自手机  | 显示全部楼层  来自 山东
就这样吧,不求助了
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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