为什么安装包在原软件已经卸载的情况下扔提示应用程序签名异常建议卸载旧版本不一致?怎么解决呢?(adb也试过了)

如果你不是开发者:如果你在android上更新一个已经安装过较早版本软件时,安装到最后一步提示你:已安装了存在签名冲突的同名数据包,然后安装失败。这是因为旧版软件的签名信息与新版不一致造成的。你可以卸载这个软件,然后安装新版软件。 如果无法卸载,

如果你不是开发者:如果你在android上更新一个已经安装过较早版本软件时,安装到最后一步提示你:已安装了存在签名冲突的同名数据包,然后安装失败。这是因为旧版软件的签名信息与新版不一致造成的。你可以卸载这个软件,然后安装新版软件。

如果无法卸载,可能手机(pad)在发售前将该软件内置在手机中无法卸载。如果是这个原因的话,你可以尝试“root”系统,然后卸载掉该软件的旧版本,然后安装。

如 果你是一个开发人员,,那么出现这个问题可能是因为,较旧的版本你是使用eclipse自动发布到模拟器上的,而eclipse自动发布时使用的是一个测试 用签名,这个签名与你正式打包的签名不是一个。(这个问题一般发生在测试自动更新功能上,嘿嘿)。想继续测试自动更新,,解决的办法也很简单,手工删除该软 件的旧版(eclipse自动安装的那个),然后使用adb工具安装旧版再测试新版就好。

自动更新的安装代码一般是调用Intent安装

ProGuard是一个混淆代码的开源项目,它的主要作用是混淆代码,殊不知ProGuard还包括以下4个功能。

压缩(Shrink):检测并移除代码中无用的类、字段、方法和特性(Attribute)。

优化(Optimize):对字节码进行优化,移除无用的指令。

混淆(Obfuscate):使用a,b,c,d这样简短而无意义的名称,对类、字段和方法进行重命名。

预检(Preveirfy):在Java平台上对处理后的代码进行预检,确保加载的class文件是可执行的。

ADT中了,使用起来很方便。Proguard只能保护代码,却不能保护我们的apk文件。任何人都可以使用apktool工具,反编译我们开发的apk文件,进而更改其中各种资源,或者更改部分代码,甚至是注入代码,然后再打包回apk,二次发布后,达到自己的目的。或者是加入了广告,或者是增加了恶意木马病毒等。不需要multi-dex。Proguard会对输入的jar文件按照shrink

它能发现并删除无用类、字段(field)、方法和属性值(attribute)。它也能优化字节码 并删除无用的指令。最后,它使用简单无意义的名字来重命名你的类名、字段名和方法名。经过以上操作的jar文件会变得更小,并很难进行逆向工程。但是有耐心的攻击者仍能分析出代码结构

DexGuard 是GuardSquare公司推出的移动应用App安全软件,经过特别设计用于防止安卓系统上的应用APP与SDK遭受逆向工程与各类安全入侵的威胁

DexGuard是收费的,DexGuard是在Proguard基础上,加入了更多的保护措施。使用DexGuard混淆后,生成的apk文件,就无法正常使用apktool反编译了。尽管还是能够反编译出部分资源文件,但是由于反编译过程不完全,就无法再打包成apk了。这样就保护了我们的apk文件,不会被二次打包发布了。代码混淆力度更大 + 资源混淆 +

客户端测试 - 安装包签名

***用一个有效的、直接客户所持有的证书来签名

什么是通用签名? 

通用签名风险: 

(1)如果攻击者的应用包名与目标应用相同,又使用了相同的密钥对应用进行签名,攻击者的应用就可以替换掉目标应用; 

(3)如果设备使用的是第三方ROM,而第三方ROM的系统也是用AOSP默认的签名,那么使用如果使用系统级签名文件签名过的应用,权限就得到了提升。

以乌云公开的WooYun-为例,有安全研究人员发现有一个数字证书签名被很多银行的手机客户端所使用。与此同时还发现了几款个人开发者类应用也使用了此证书签名。而这种数字签名被滥用的行为存在极大的安全隐患

经挖掘和分析,研究人员发现目前共有23款不同银行手机银行客户端使用该签名:

在应用市场内,目前共发现6款个人开发的应用同时使用该数字证书签名:

事情发生的原因是银行的外包开发管理不严,不同银行的APP居然用同样的数字证书签名,并且开发者还将证书用于了个人APP的开发中。如果签名证书被恶意攻击者获取,可以编写安装是能直接替换掉这些银行客户端的恶意APP。 

还可以使用AOSP通用签名提升应用权限: 

直接编译AOSP源码得到的ROM,使用AOSP的默认证书,在设置->关于手机,版本号中可查看到:

查看应用的进程属性,已是system用户组。 

目前有不少的第三方ROM使用的AOSP提供的默认签名 

个人开发者在往开源平台上传代码时,注意不要将签名证书的私钥上传。

客户端测试 - 完整性校验

解包后可修改并重新打包;

可查看smali源码(适用于JAVA反编译失败的情况);

APK必须进行签名后,方可安装和运行:

2.随便找一个解包目录里的资源文件,修改之;

3.推荐找到启动logo图进行修改(因为容易确认结果);

4.用ApkTool,将解包目录重新打包成未签名的APK文件;

5.用SignApk,对未签名的APK文件进行签名;

6.将签了名的APK安装、运行、确认是否存在自校验;

测试。使用ApkIDE重打包后 直接安装运行,在Loading过程中会弹出修改提示,如下图,说明软件检测到了被非法修改。

下面的操作是,将官方包的RSA拖出来,置换掉我们修改后的RSA文件,名字尽量与SF保持一致即CERT,然后安装 可完美运行。

adb进阶知识,如何过滤只查看某一个app的日志

前面大概学习了adb基础,但是adb的存在,在测试人员中究竟有什么必要,以及看log时,那么多的log,让我们看个屁啊,所以这一次,我决定一定要把adb这件事情搞清楚。   /u/article/details/     作为测试做常用的adb查看日志命令: 1.adb  清除之前的日志信息,一般在看日志前都会执行这个命令,目的是好看日志,不然前面的日志应该会超级多,不好看问题   2.过滤规则 有两种规则,一种是按照日志级别过滤,一种是按照日志中的tag过滤,当然会有混合日志和tag在一起过滤 过滤格式: adb logcat <tag>[:priority] Silent(最高,啥也不输出) 实例:比如想要查看手机的级别为错误的日志   adb logcat *:E(不区分大小写)   tag级别过滤: 用这个过滤首先要知道手机上的tag,可以用这个命令查看手机日志的tag adb logcat -v tag

命令行中,有个命令是chcp,这个命令是用来显示当前活动代码页编号的,

 ANSI的编码环境的代号是936

一、把日志输出到手机指定目录

二,很多没用的一起加载,如果只想抓取被测app的日志,就需要对包名进行过滤,使用find过滤包名

如果在电脑D盘下面有个a.apk文件,只需要一行命令就安装到手机上:

如果已经安装了这个程序,可以通过以下命令覆盖安装:adb install -r d:/a.apk

卸载软件但是保留配置和缓存文件:

如果机器上有多个模拟器或真机,需要使用-s命令行参数指定具体的模拟器或真机。例如,下面的命令分别在模拟器和真机上安装、重新安装和卸载应用程序。

在真机上卸载ebook.apk(保留数据和缓冲目录)

5、包管理,如何知道一个app包名呢

包名(Package name)在Android系统中是判断一个App的唯一标识,不同的App可以有同样的名字,但是它的包名不可以相同。

例如我们可以自己编译生成一个App也叫“微信”,但是我们的App的包名不能为com.tencent.mm

(微信的包名为这个),如果指定的包名和微信一致,那么手机上只允许安装这两个App中的其中一个。说到这很多人就会有疑问,如果有人恶意做了一个和微信内容一模一样的App,名字和包名都和微信一样,那怎么分辨呢?Android中为了防止这样的情况,还做了一个叫签名的东西,微信的签名一般我们是没有的,所以就可以通过签名来标识出这款App到底是谁的了。

1、看源代码。当有源代码的时候,可以到工程目录下的 “AndroidManifest.xml”文件下查看package这一项。

2、adb命令查看列出手机装的所有 app 的包名:

3.列出系统应用的所有包名:

4.列出除了系统应用的第三方应用包名:

5.推测一个包中可能带有的关键字:

6.清除应用数据与缓存

2.使用adb进行屏幕录像

通过ctrl+c停止录制,你可以在sdcard目录下查看。妈妈再也不担心我到处找录制视频的软件了。

10、adb服务器杀死和启动

场景:比如希望移动adb文件夹,或者adb命令得不到想要的内容时

12、与性能相关的一些内容

13、app的启动停止

如果想在模拟器或真机上运行已安装的应用程序,除了直接在模拟器或真机上操作外,还可以使用如下的命令直接运行程序。

15、查看8080端口是哪个应用占用

我要回帖

更多关于 应用程序签名异常建议卸载旧版本 的文章

 

随机推荐