网上资料很多,这里只做一个笔记
反编译 dex 修改重新打包签名后 apk 的签名信息肯定会改变,所以可以在代码中判断签名信息是否
被改变过,如果签名不一致就退出程序,以防止 apk 被重新打包。

1 java 代码中验证签名

用 PackageManager 获取签名信息
public static int getSignature(Context context) {
PackageManager pm = context.getPackageManager();
PackageInfo pi;
StringBuilder sb = new StringBuilder(); try {
pi = pm.getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
Signature[] signatures = pi.signatures;
for (Signature signature : signatures) {
sb.append(signature.toCharsString());
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
} return sb.toString().hashCode();
}

  

这种纯粹的字符比较都很容易破解掉,直接在 smali 中全局搜索干掉或修改你的签名验证逻辑就行了,实际上用处不大。

2 签名验证放到 native 层用 NDK 开发
这种验证稍微安全了一点,毕竟能逆向 C 和 C++ 的人要少一些。像我这种现在还不能逆向C的就无能为力了。
但对于能逆向C的同学来说,也是很轻易的就改掉你的验证逻辑,可以考虑加上,毕竟还是有点用的。
3 验证放到服务端
感觉没什么鸟用,直接干掉或修改你接口的判断逻辑的就行了。

还有很多高级方法可以直接绕过签名验证,还待研究。

from:https://www.cnblogs.com/lesliefang/p/5152358.html

最新文章

  1. 翻书插件:wowbook.js
  2. DEV express 对Gridview某行的元素赋值
  3. php-sql-parser sql防注入脚本
  4. [.net 面向对象编程基础] (8) 基础中的基础——修饰符
  5. 小白日记36:kali渗透测试之Web渗透-手动漏洞挖掘(二)-突破身份认证,操作系统任意命令执行漏洞
  6. WordPress Shareaholic 插件跨站请求伪造漏洞
  7. Sublime Text 学习资料
  8. curl多线程类。
  9. VS2010编译以前版本工程时 ERROR CVT1100:duplicate resource,type:MANIFEST解决办法
  10. C# 将DataTable一行放入另一个DataTable中
  11. vueX、vue中transition的使用、axios
  12. 局域网主机A向主机B发送ip数据报的过程
  13. VS WebDev.WebServer40
  14. Linux下查看磁盘挂载的几种方法
  15. leetcode56:Merge Intervals
  16. ORACLE常用性能监控SQL
  17. LeetCode(53):最大子序和
  18. Python树形打印目录结构
  19. django前篇
  20. 利用AutoSPSourceBuilder和Autospinstaller自动安装SharePoint Server 2013图解教程——Part 1

热门文章

  1. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---16
  2. hdu 4738 无向图缩点断桥 // 细节坑题
  3. iOS直播Liveroom组件,游客,用户多次切换登录同一直播间,消息出现多次重复问题解决
  4. Android判断是否为刘海屏
  5. L1-8 外星人的一天
  6. 洛谷——P1996 约瑟夫问题
  7. 基于http的断点续传和多线程下载
  8. codeigniter视图
  9. Ajax方式实现注册验证代码
  10. 在Delphi中应用AOP实现日志功能