【爱加密】防止签名破解
【爱加密】防止签名破解
- |
- 浏览:312
- |
- 更新:2014-01-29 15:30
- |
- 标签: 加密
百度经验:jingyan.baidu.com
防止签名破解的经验与方法
百度经验:jingyan.baidu.com
方法/步骤
-
1
现在的破解手段是越来越高明了,分享一篇破解签名的文章,各位研究一下,对于签名破解可要仔细防范呀。
我们以“XXXX管家”为例,该apk使用了签名保护。我们对apk二次打包后,程序无法运行。原因是程序运行时会获取当前应用签名和官方签名进行对比。如果发现不一致就会终止程序。
下面我们对签名保护进行破解
首先我们需要用到的工具是APK改之理。
-
2
点击”项目”->”打开apk”,反编译apk。
-
3
获取应用签名的java代码是:
PackageInfo packageInfo = getPackageManager().getPackageInfo(
"xx.xxx.xx", PackageManager.GET_SIGNATURES);
Signature[] signs = packageInfo.signatures;
其中“Signature” 对应的smali代码是
“Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature”
我们在改之理
搜索“Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature”
-
4
有两个文件用到了签名。首先看下ct.smali
-
5
发现这个S(Ljava/lang/String;) 是获取签名的方法。Ctrl+F搜索下“->s(”,看谁调用了s这个方法。搜索后定位到了 gy()方法。返回值是布尔型。
-
6
该方法 491行 查询了当前apk的签名,并保存在了v0寄存器里
-
7
500 行,获取了保存的官方签名,并保存在了v1寄存器里
-
8
579行,判断v0和v1是否相等。返回值保存在了v0寄存器里
583行,返回了v0
-
9
通过分析我们发现这个gy()方法,就是判断签名的地方。我们只需要修改下让该方法返回真,就能突破签名保护。
在581行,强制返回值v0为真
-
10
保存,重新编译运行。程序可以正常打开了。
END
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· C#多线程编程精要:从用户线程到线程池的效能进化论
· 如何反向绘制出 .NET程序 异步方法调用栈
· 领域驱动设计实战:聚合根设计与领域模型实现
· 突破Excel百万数据导出瓶颈:全链路优化实战指南
· 如何把ASP.NET Core WebApi打造成Mcp Server
· C#开发的Panel滚动分页控件 - 开源研究系列文章
· ShadowSql之开源不易
· 如何反向绘制出 .NET程序 异步方法调用栈
· C#多线程编程精要:从用户线程到线程池的效能进化论
· 上周热点回顾(5.5-5.11)