//通过各手机管理软件,如如360、豌豆荚等查看



//使用命令行,可以查看到permission、packagename、title、versionCode等

aapt dump badging ~/Downloads/youku.apk



//apk指纹

keytool -printcert -file *.rsa



//签名过程,testkey.x509.pem是公钥,estkey.pk8是私钥,update_signed.apk是签名过后的apk

java -jar signapk.jar testkey.x509.pem testkey.pk8 update.apk update_signed.apk



MD5:apk的MD5,该值与官方相同则肯定是同一款apk。

包名:相同包名的apk在安装时,原apk会被覆盖掉,这个机制会用在apk的升级版本中,如果是已知apk的升级版本

,则开发人员会用相同的包名,若apk的MD5不相同,但包名相同,则基本可以认定apk是官方版本或刻意伪造。



DEX的MD5:有时为优化界面,只修改资源文件不修改源代码,在apk的MD5不同,但是dex文件的MD5相同时,认定该

apk为家族变种apk。



指纹证书:除了包名,在验证apk的时候还需要签名证书,指纹的MD5或SHA1代表了签名信息,同一版本系列的apk基

本上会使用相同的签名证书,判断这两个值是否相同,基本可以确定apk是否是官方同一系列的版本(除非签名证书

丢失或遭窃取)。伪造的apk会使用不同的签名证书,得到的指纹证书信息肯定会不同。



与官方apk相比:

包名一致,签名信息不一致,基本上可以认定是伪造apk;包名不一致,签名信息一致,则认定为官方版本;包名和

签名都一致,认定为同一家族apk。



代码级的特征匹配:android下发布的apk的源码几乎都会被混淆,匹配源码没什么意义。但经过混淆仍然会保留一

部分库级的api,敏感的系统调用都是调用这些api,在反编译后的smali文件中仍然保留,不同apk对系统api调用的

相似性也可以作为一个凭证,但这个是粗粒度的。

最新文章

  1. Android学习杂记
  2. 运用泛型,冒泡排序实现JDK引用类型数组的排序
  3. 【原创】Java批量反编译利器(jd-gui)介绍
  4. 作业三(代码规范、代码复审、PSP)
  5. CSS实现透明边框
  6. linux vi 中按了ctrl+s后没法退出
  7. 服务器响应头隐藏X-power-by
  8. 报错:LINQ to Entities 不识别方法
  9. VS中设置#define _CRT_SECURE_NO_WARNINGS的两种方式
  10. 服务器端json解析
  11. HDU 2089 不要62(数位DP)
  12. JQuery 表单验证--jquery validation
  13. UVa 11069 - A Graph Problem
  14. XCode8中的sizeClass设置
  15. java新知识系列 六
  16. HDFS基础1
  17. 模拟退火算法-旅行商问题-matlab实现
  18. webhttpbinding、basichttpbinding和wshttpbinding的区别
  19. 火狐扒代码插件ScrapBook
  20. 使用jQuery仿淘宝商城多格焦点图滚动切换效果

热门文章

  1. kubernetes实战-交付dubbo服务到k8s集群(四)使用blue ocean流水线构建dubbo-demo-service
  2. Ubuntu 下更改pip源使用清华源
  3. ++i和i++的区别
  4. 【非原创】sg函数模板
  5. CustomEvent & Event
  6. Web Components All In One
  7. macOS utils
  8. lua windows上使用vs编译Lua
  9. Flutter 区分开发环境和生产环境
  10. 基于nginx实现上游服务器动态自动上下线——不需reload