Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3|回复: 3
打印 上一主题 下一主题

修改绕过三星签名认证部分

[复制链接]

1198

主题

2060

帖子

7058

积分

超级版主

Rank: 8Rank: 8

积分
7058
跳转到指定楼层
楼主
发表于 2016-1-6 17:37:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1, M1中间使用过。
2,H6中间使用过
3,P8中间也使用过。
查看P8的方法,然后一样修改。

回复

使用道具 举报

1198

主题

2060

帖子

7058

积分

超级版主

Rank: 8Rank: 8

积分
7058
沙发
 楼主| 发表于 2016-1-6 18:11:02 | 只看该作者
首先提取system/framework下的core.jar和services.jar,反编译
先修改core.jar
打开core.jar.out/smali/java/security/MessageDigest.smali
搜索.method public static isEqual,只有一个地方
.method public static isEqual([B[B)Z
.locals 4
.parameter "digesta"
.parameter "digestb"

.prologue
const/4 v1, 0x0

.line 302
array-length v2, p0

array-length v3, p1

if-eq v2, v3, :cond_1

.line 310
.....
.....
.....
.end method


把.prologue下面,.end method上面的全部删掉,删之前保留.prologue下面的第一行出现的.line XXX
在.line XXX(比如我这里是.line 302)下面一行,输入 const/4 v0, 0x1,留空一行,再下一行输入 return v0
修改好后是这样
.method public static isEqual([B[B)Z
.locals 1
.parameter "digesta"
.parameter "digestb"

.prologue
.line 302
const/4 v0, 0x1

return v0
.end method


保存

这个改了以后apk只要有签名就可以安装,不管签名后的apk是否修改过

下面是去除不同签名不能覆盖安装的显示!!
还是core.jar,打开core.jar.out/smali/java/security/Signature.smali
搜索:.method public final verify
会找到2处地方,这2个地方都要改
.method public final verify([B)Z
.locals 2
.parameter "signature"
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/security/SignatureException;
}
.end annotation

.prologue
.line 372
iget v0, p0, Ljava/security/Signature;->state:I

const/4 v1, 0x3

if-eq v0, v1, :cond_0

.line 373
......
......
......

return v0
.end method


第二行的.locals 2改成.locals 1
然后.line 372下面到return v0上面都删掉,.line 372下面添加一行 :const/4 v0, 0x1,下面空一行
修改完后:
.method public final verify([B)Z
.locals 1
.parameter "signature"
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/security/SignatureException;
}
.end annotation

.prologue
.line 372
const/4 v0, 0x1

return v0
.end method


第二处搜索到的地方也是这样改
也是.prologue下面一行.line XXX下面开始到return v0上面删掉,添加const/4 v0, 0x1

接下来改services.jar
反编译后打开services.jar.out/smali/com/android/server/pm/PackageManagerService.smali
搜索:.method static compareSignatures,只有一处
.method static compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
.locals 7
.parameter "s1"
.parameter "s2"

.prologue
.line 2257
if-nez p0, :cond_1

.line 2258
if-nez p1, :cond_0

const/4 v6, 0x1

.line 2277
:goto_0
return v6

.line 2258
:cond_0
const/4 v6, -0x1

goto :goto_0
。。。
。。。
。。。
:cond_5
const/4 v6, -0x3

goto :goto_0
.end method


.locals 7改成.locals 1
.prologue .line XXXX下面到.end method上面的都删除,.line XXXX下一行添加 const/4 v0, 0x0,空一行,再下一行添加return v0
修改后:
.method static compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
.locals 1
.parameter "s1"
.parameter "s2"

.prologue
.line 2257
const/4 v0, 0x0

return v0
.end method


重新编译后放framework,重启,重启后会提示Android正在升级,升级完后就可以体验了
回复 支持 反对

使用道具 举报

1198

主题

2060

帖子

7058

积分

超级版主

Rank: 8Rank: 8

积分
7058
板凳
 楼主| 发表于 2016-1-6 18:11:25 | 只看该作者
修改PackageManagerService.smali<----services.jar
------------------------------------------------------
.method static compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
    .registers 9
    .param p0, "s1"    # [Landroid/content/pm/Signature;
    .param p1, "s2"    # [Landroid/content/pm/Signature;

    .prologue
    .line 4194

#zcfdebug++<<
        const/4 v6, 0x0

        return v6
#zcfdebug>>++
    if-nez p0, :cond_8
回复 支持 反对

使用道具 举报

1198

主题

2060

帖子

7058

积分

超级版主

Rank: 8Rank: 8

积分
7058
地板
 楼主| 发表于 2016-1-6 18:30:31 | 只看该作者
使用,重新签名Settings.apk,看看是否可以。
1)首先载入framework:
apktool if framework-res.apk
apktool if twframework-res.apk
2) 解包SecSettings
3)重新打包签名Settings.apk
=============================================
验证OK
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Comsenz Inc.

GMT+8, 2025-12-14 18:47 , Processed in 0.011940 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表