1234下一页
查看: 36|回复: 35

[相关教程] 安卓签名校验绕过:Frida hook和native层两种方案

[复制链接]

96

主题

5

回帖

951

积分

UID
2
贡献
9 点
钻石
7 个
C币
993 个
发表于 2026-7-2 18:48:33 | 显示全部楼层 |阅读模式
很多 App 会校验自身签名,防止被重打包篡改。做逆向需要绕过签名校验。

一、校验原理
App 在代码里获取自身签名,跟预设的签名指纹对比。不一致就退出。代码通常用 PackageManager.getPackageInfo 获取签名。

二、Frida 绕过
  1. Java.perform(function() {
  2.     var PackageManager = Java.use("android.app.PackageManager");
  3.     var PackageInfo = Java.use("android.content.pm.PackageInfo");
  4.    
  5.     // hook getPackageInfo
  6.     PackageManager.getPackageInfo.overload('java.lang.String', 'int').implementation = function(name, flags) {
  7.         var info = this.getPackageInfo(name, flags);
  8.         // 伪造签名字段
  9.         try {
  10.             var signatures = Java.array("android.content.pm.Signature", [
  11.                 Java.use("android.content.pm.Signature").$new("预设的签名hex")
  12.             ]);
  13.             info.signatures.value = signatures;
  14.         } catch(e) {}
  15.         return info;
  16.     };
  17. });
复制代码

三、更简单的方案:hook 比较
如果 App 用 String.equals 比较签名哈希,直接 hook 比较函数让它返回 true:
  1. Java.perform(function() {
  2.     var String = Java.use("java.lang.String");
  3.     String.equals.implementation = function(other) {
  4.         if (this.toString().length === 64) {
  5.             return true; // 签名hash比较直接返回true
  6.         }
  7.         return this.equals(other);
  8.     };
  9. });
复制代码

四、Native 层校验
有些 App 把签名校验放 native 层(so 库里),用 IDA 找到校验函数,Frida hook native 函数:
  1. Interceptor.attach(Module.findExportByName("libtarget.so", "verify_signature"), {
  2.     onLeave: function(retval) {
  3.         retval.replace(1); // 返回校验通过
  4.     }
  5. });
复制代码

温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、网络世界也请遵守我国的法律法规!一旦发现违法行为,将立即封存相关信息并报警处理!
回复

使用道具 举报

0

主题

374

回帖

61

积分

UID
506266
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-7-4 12:16:47 | 显示全部楼层
楼主的排版可以再优化下,代码块用起来会更清楚。
回复

使用道具 举报

0

主题

372

回帖

46

积分

UID
512686
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-7-4 15:08:44 | 显示全部楼层
看完最大的感受是基础知识还是要扎实,不然工具报错都不知道怎么查。
回复

使用道具 举报

0

主题

365

回帖

0

积分

UID
260114
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-7-4 20:52:38 | 显示全部楼层
这个流程我在真机上验证过,确实可行,注意备份就行。
回复

使用道具 举报

0

主题

397

回帖

2

积分

UID
498903
贡献
0 点
钻石
0 个
C币
5 个
发表于 2026-7-5 05:28:29 | 显示全部楼层
试了下你说的第二种方法,成功率更高,推荐。
回复

使用道具 举报

0

主题

376

回帖

0

积分

UID
855179
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-7-5 16:56:17 | 显示全部楼层
同求后续,想知道绕过之后怎么稳定保持,重签名这块一直搞不定。
回复

使用道具 举报

0

主题

375

回帖

375

积分

UID
391067
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-7-6 07:16:02 | 显示全部楼层
步骤写得很清楚,跟着走了一遍,卡在第二步的环境配置上,后来装了老版本才好。
回复

使用道具 举报

0

主题

370

回帖

50

积分

UID
216589
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-7-7 00:27:44 | 显示全部楼层
这个思路让我想到另一个场景,回头试试能不能套用。
回复

使用道具 举报

0

主题

368

回帖

368

积分

UID
801652
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-7-7 20:31:23 | 显示全部楼层
这篇干货,比那些只有命令没有解释的强太多了。
回复

使用道具 举报

0

主题

375

回帖

0

积分

UID
553287
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-7-8 19:26:59 | 显示全部楼层
讲得挺细的,不过我建议加一句免责,这东西容易被拿去做坏事。
回复

使用道具 举报

温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、网络世界也请遵守我国的法律法规!一旦发现违法行为,将立即封存相关信息并报警处理!
1234下一页
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

QQ客服返回顶部