Убираем проверку целостности apk + Проверка подписи всегда верна

Рейтинг:   / 2
ПлохоОтлично 

ApkTool: ???
Android: ???
Проверено на: ???

Подготовка
Прошивка должна быть деодексирована
Скачать и распаковать на диске С: JarSmaliEditor.zip
Декомпилировать Core.jar по инструкции в файле readme.txt
Часть 1
Открыть java\security\Signature.smali и найти метод, что ниже
Код

.method public final verify([B)Z
.registers 4
.param p1, "signature" # [B
.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_d

.line 373
new-instance v0, Ljava/security/SignatureException;

const-string v1, "Signature object is not initialized properly"

invoke-direct {v0, v1}, Ljava/security/SignatureException;-><init>(Ljava/lang/String;)V

throw v0

.line 375
:cond_d
invoke-virtual {p0, p1}, Ljava/security/SignatureSpi;->engineVerify([B)Z

move-result v0

return v0
.end method


В самом низу поменять move-result v0 на const/4 v0, 0x1 и не закрывать файл

Часть 1.1
в том же java\security\Signature.smali найти метод, что ниже
Код

.method public final verify([BII)Z
.registers 6
.param p1, "signature" # [B
.param p2, "offset" # I
.param p3, "length" # I
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/security/SignatureException;
}
.end annotation

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

const/4 v1, 0x3

if-eq v0, v1, :cond_d

.line 405
new-instance v0, Ljava/security/SignatureException;

const-string v1, "Signature object is not initialized properly"

invoke-direct {v0, v1}, Ljava/security/SignatureException;-><init>(Ljava/lang/String;)V

throw v0

.line 407
:cond_d
if-eqz p1, :cond_18

if-ltz p2, :cond_18

if-ltz p3, :cond_18

add-int v0, p2, p3

array-length v1, p1

if-le v0, v1, :cond_1e

.line 409
:cond_18
new-instance v0, Ljava/lang/IllegalArgumentException;

invoke-direct {v0}, Ljava/lang/IllegalArgumentException;-><init>()V

throw v0

.line 411
:cond_1e
invoke-virtual {p0, p1, p2, p3}, Ljava/security/SignatureSpi;->engineVerify([BII)Z

move-result v0

return v0
.end method


В самом низу поменять move-result v0 на const/4 v0, 0x1

Часть 2
Открыть java\security\MessageDigest.smali и найти метод, что ниже
Код

.method public static isEqual([B[B)Z
.registers 6
.param p0, "digesta" # [B
.param p1, "digestb" # [B

.prologue
const/4 v1, 0x0

.line 302
array-length v2, p0

array-length v3, p1

if-eq v2, v3, :cond_6

.line 310
:cond_5
:goto_5
return v1

.line 305
:cond_6
const/4 v0, 0x0

.local v0, "i":I
:goto_7
array-length v2, p0

if-ge v0, v2, :cond_13

.line 306
aget-byte v2, p0, v0

aget-byte v3, p1, v0

if-ne v2, v3, :cond_5

.line 305
add-int/lit8 v0, v0, 0x1

goto :goto_7 ti

.line 310
:cond_13
const/4 v1, 0x1

goto :goto_5
.end method


В самом верху поменять const/4 v1, 0x0 на const/4 v1, 0x1
Скомпилировать и вставить в прошивку.

Добавить комментарий


Защитный код
Обновить