首页
社区
课程
招聘
[讨论]请教一个签名绕过方式的问题:
发表于: 2018-8-29 15:55 5449

[讨论]请教一个签名绕过方式的问题:

2018-8-29 15:55
5449




这个文章里最后一段说替换CERT.RSA即能安装,不科学吧?

这是dalvik出错的log 也没见他hook呀
12-19 00:49:24.130: D/AndroidRuntime(15421): CheckJNI is OFF
12-19 00:49:24.140: D/dalvikvm(15421): Trying to load lib libjavacore.so 0x0
12-19 00:49:24.140: D/dalvikvm(15421): Added shared lib libjavacore.so 0x0
12-19 00:49:24.140: D/dalvikvm(15421): Trying to load lib libnativehelper.so 0x0
12-19 00:49:24.140: D/dalvikvm(15421): Added shared lib libnativehelper.so 0x0
12-19 00:49:24.140: D/dalvikvm(15421): No JNI_OnLoad found in libnativehelper.so 0x0, skipping init
12-19 00:49:24.170: D/dalvikvm(15421): Note: class Landroid/app/ActivityManagerNative; has 179 unimplemented (abstract) methods
12-19 00:49:24.300: D/AndroidRuntime(15421): Calling main entry com.android.commands.pm.Pm
12-19 00:49:24.310: W/ActivityManager(913): No content provider found for permission revoke: file:///data/local/tmp/demo.apk
12-19 00:49:24.370: W/ActivityManager(913): No content provider found for permission revoke: file:///data/local/tmp/demo.apk
12-19 00:49:24.380: I/PackageManager(913): Copying native libraries to /data/app-lib/vmdl731239807
12-19 00:49:24.420: W/PackageParser(913): Exception reading /data/app/vmdl731239807.tmp
12-19 00:49:24.420: W/PackageParser(913): java.lang.SecurityException: Incorrect signature
12-19 00:49:24.420: W/PackageParser(913): 	at org.apache.harmony.security.utils.JarUtils.verifySignature(JarUtils.java:223)
12-19 00:49:24.420: W/PackageParser(913): 	at java.util.jar.JarVerifier.verifyCertificate(JarVerifier.java:293)
12-19 00:49:24.420: W/PackageParser(913): 	at java.util.jar.JarVerifier.readCertificates(JarVerifier.java:263)
12-19 00:49:24.420: W/PackageParser(913): 	at java.util.jar.JarFile.getInputStream(JarFile.java:379)
12-19 00:49:24.420: W/PackageParser(913): 	at android.content.pm.PackageParser.collectCertificates(PackageParser.java:670)
12-19 00:49:24.420: W/PackageParser(913): 	at com.android.server.pm.PackageManagerService.installPackageLI(PackageManagerService.java:9004)
12-19 00:49:24.420: W/PackageParser(913): 	at com.android.server.pm.PackageManagerService.access$2300(PackageManagerService.java:178)
12-19 00:49:24.420: W/PackageParser(913): 	at com.android.server.pm.PackageManagerService$5.run(PackageManagerService.java:7054)
12-19 00:49:24.420: W/PackageParser(913): 	at android.os.Handler.handleCallback(Handler.java:733)
12-19 00:49:24.420: W/PackageParser(913): 	at android.os.Handler.dispatchMessage(Handler.java:95)
12-19 00:49:24.420: W/PackageParser(913): 	at android.os.Looper.loop(Looper.java:136)
12-19 00:49:24.420: W/PackageParser(913): 	at android.os.HandlerThread.run(HandlerThread.java:61)


最后于 2018-8-29 16:11 被endlif编辑 ,原因: 修改链接
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 29
活跃值: (290)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
refer:https://www.jianshu.com/p/cc7d8c3b104e
APK要想安装成功,在校验的过程中要满足如下三个条件:
MF文件中的SHA-1值与对应文件的真实SHA-1值要相等(不计META-INF目录)
SF文件中的SHA-1值与MF文件本身与文件中的各子项作SHA-1和Base64编码后相等
SF文件的签名信息与RSA文件的内容要一致
2018-8-29 16:26
0
雪    币: 4
活跃值: (776)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
那篇文章有误,需要先hook签名:http://blog.sina.com.cn/s/blog_92b6d74d0102uzgc.html
2018-8-29 16:37
0
雪    币: 29
活跃值: (290)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
soga    感谢    
2018-8-29 16:49
0
雪    币: 29
活跃值: (290)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
根据报错信息 
java.lang.SecurityException: Incorrect signature 
12-19 00:49:24.420: W/PackageParser(913): java.lang.SecurityException: Incorrect signature
12-19 00:49:24.420: W/PackageParser(913):    at org.apache.harmony.security.utils.JarUtils.verifySignature(JarUtils.java:223)
去JarUtils.java:看源码得知是这里
if(!sig.verify(sigInfo.getEncryptedDigest())) {
               throw new SecurityException("Incorrect signature");
            }

这里是验证CERT.RSA里的签名信息正确与否,所以这里应该直接跳过就OK了。

绕过的检验函数的两种 方式 : 
1:pull 出手机里检验签名的odex  (framework/core.odex) 修改 再push回去

2:hook这个校验函数
public void initZygote(StartupParam startupParam) throws Throwable {
      
          XposedHelpers.findAndHookMethod("java.security.Signature",null,"verify", byte[].class,new XC_MethodHook(){
             protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                 XposedBridge.log("disabled verifysignature......");
                 param.setResult(Boolean.TRUE);
             }  
        });


所以结论就是那个文章里没有提到手机已经装了xposed插件hook过签名了。感谢上面那位兄弟的解答 完整的在这里 http://blog.sina.com.cn/s/blog_92b6d74d0102uzgc.html



参考这篇...   https://bbs.pediy.com/thread-190876-1.htm   
最后于 2018-8-29 16:57 被endlif编辑 ,原因: 文字错误
2018-8-29 16:57
0
雪    币: 182
活跃值: (115)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
framework/base/core/java/android/content/pm/PackageParser.java
2019-5-16 20:28
0
游客
登录 | 注册 方可回帖
返回
//