autojs用签名校验保护app

简介: 牙叔教程 简单易懂

牙叔教程 简单易懂


测试环境


Autojs版本: 9.0.4

Android版本: 8.0.0

Android Studio版本: 4.1.2


签名概念


目的: 为了确认某个信息确实是由某个发送方发送的,或者某个发布内容确实是由发送方发布的,任何人都不可能伪造消息,并且,发送方也不能抵赖。
方法: 对发布的信息内容,通过某种可靠的加工(比如进行MD5运算),生成签名标识(字符串序列或者证书之类)
验证: 任何人拿到发布的信息内容后,可以通过同样的加工,得出签名标识,如果比对和发布者公布的签名一致,则验证为真。
签名与加密区别: 加密是为了不让别人知道原来的信息,签名是为了保证大家获取到的原来的信息是没有经过改动的。


签名校验


Android中的每个应用都是有一个唯一的签名, 一个应用没有被签名是不允许安装到设备中的,


APP签名校验,主要作用是保护APP本身的安全利益,防止被违法分子进行内部代码和文件修改,然后插入广告等获利行为,进行违法操作。


校验方法


  • Java层入口校验
  • NDK校验, 即so文件
  • 服务器验证


autojs的签名管理


使用autojs打包脚本的时候, 最下方有一个签名选项, 可以选择签名,

签名文件后缀是jks, 创建的签名默认保存在

/sdcard/.keystore/


签名的时候, 我们可以选择自己创建的签名,

执行脚本的时候, 先校验签名, 不一样的话就退出脚本


通过jks文件获取签名的sha1值


android studio 中有一个keytool, 执行以下命令即可获取签名的sha1

keytool -list -v -keystore yashu.jks


代码讲解


1. 导入类
importClass(android.content.pm.PackageManager);
importClass(java.security.MessageDigest);
importClass(java.io.ByteArrayInputStream);
importClass(java.lang.StringBuilder);
importClass(java.lang.Integer);
importClass(java.security.cert.CertificateFactory);


2. 获取应用的签名sha1
/**
 * 获取应用的签名
 */
function getCertificateSHA1Fingerprint() {
  //获取包管理器
  let pm = context.getPackageManager();
  //获取当前要获取 SHA1 值的包名,也可以用其他的包名,但需要注意,
  //在用其他包名的前提是,此方法传递的参数 Context 应该是对应包的上下文。
  let packageName = context.getPackageName();
  //返回包括在包中的签名信息
  let flags = PackageManager.GET_SIGNATURES;
  //获得包的所有内容信息类
  let packageInfo = pm.getPackageInfo(packageName, flags);
  //签名信息
  let signatures = packageInfo.signatures;
  let cert = signatures[0].toByteArray();
  //将签名转换为字节数组流
  let input = new ByteArrayInputStream(cert);
  //证书工厂类,这个类实现了出厂合格证算法的功能
  let cf = CertificateFactory.getInstance("X509");
  //X509 证书,X.509 是一种非常通用的证书格式
  let c = cf.generateCertificate(input);
  //加密算法的类,这里的参数可以使 MD4,MD5 等加密算法
  let md = MessageDigest.getInstance("SHA1");
  //获得公钥
  let publicKey = md.digest(c.getEncoded());
  //字节到十六进制的格式转换
  let hexString = byte2HexFormatted(publicKey);
  return hexString;
}
//这里是将获取到得编码进行16 进制转换
function byte2HexFormatted(arr) {
  let str = new StringBuilder(arr.length * 2);
  for (let i = 0; i < arr.length; i++) {
    let h = Integer.toHexString(arr[i]);
    let l = h.length;
    if (l == 1) h = "0" + h;
    if (l > 2) h = h.substring(l - 2, l);
    str.append(h.toUpperCase());
    if (i < arr.length - 1) str.append(":");
  }
  return str.toString();
}


参考

Android App运行时签名校验

各种签名(signature)和校验

签名校验破解过程

名人名言

思路是最重要的, 其他的百度, bing, stackoverflow, 安卓文档, autojs文档, 最后才是群里问问

--- 牙叔教程


声明

部分内容来自网络

本教程仅用于学习, 禁止用于其他用途

相关文章
|
存储 Java API
Android 浅度解析:mk预置AAR、SO文件、APP包和签名
Android 浅度解析:mk预置AAR、SO文件、APP包和签名
2579 0
|
8月前
|
编解码 数据安全/隐私保护
手机录制脚本自动执行, 免root屏幕录制脚本,自动脚本精灵app【autojs】
自动创建保存目录确保路径存在 动态生成带时间戳的文件名避免重复
|
10月前
|
安全 测试技术 开发者
银行转账模拟器手机版app, 银行转账凭证生成器app,用autojs实现效果【逼真效果】
本内容展示了一套基于Auto.js的银行APP自动化测试脚本和框架,用于学习和研究移动应用测试技术。脚本涵盖登录、转账等功能测试
|
安全 算法 小程序
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
892 28
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
不封号的外卖抢单神器,美团抢单辅助器app,autojs版本源码
这个代码提供了基础框架,包含主循环、订单检测和点击功能。实际使用时需要根据美团骑手AP
|
安全 数据安全/隐私保护 Android开发
【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
3139 75
|
前端开发 Java 开发工具
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
1431 18
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
662 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
|
测试技术 Android开发 开发者
【03】优雅草央千澈详解关于APP签名以及分发-上架完整流程-第三篇安卓APP上架华为商店后面的步骤-华为应用商店相对比较麻烦一些-华为商店安卓上架
【03】优雅草央千澈详解关于APP签名以及分发-上架完整流程-第三篇安卓APP上架华为商店后面的步骤-华为应用商店相对比较麻烦一些-华为商店安卓上架
308 16
|
数据安全/隐私保护
基于AutoJs实现的薅羊毛App专业版源码大分享---更新啦
基于AutoJs实现的薅羊毛App专业版源码大分享---更新啦
508 0

热门文章

最新文章