0% found this document useful (0 votes)
5 views

Project On Java

Java lang

Uploaded by

jicawet842
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

Project On Java

Java lang

Uploaded by

jicawet842
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 11

This is the instructions to remove protection of modified apps in Android 13.

In

com.android.server.pm.permission.PermissionManagerServiceImpl

Replace 3 methods:

.method private
shouldGrantPermissionBySignature(Lcom/android/server/pm/parsing/pkg/
AndroidPackage;Lcom/android/server/pm/permission/Permission;)Z
.registers 10

iget-object v0, p0,


Lcom/android/server/pm/permission/PermissionManagerServiceImpl;-
>mPackageManagerInt:Landroid/content/pm/PackageManagerInternal;

const/4 v1, 0x0

invoke-virtual {v0, v1, v1}, Landroid/content/pm/PackageManagerInternal;-


>getKnownPackageNames(II)[Ljava/lang/String;

move-result-object v0

invoke-static {v0}, Lcom/android/internal/util/ArrayUtils;-


>firstOrNull([Ljava/lang/Object;)Ljava/lang/Object;

move-result-object v0

check-cast v0, Ljava/lang/String;

iget-object v2, p0,


Lcom/android/server/pm/permission/PermissionManagerServiceImpl;-
>mPackageManagerInt:Landroid/content/pm/PackageManagerInternal;

invoke-virtual {v2, v0}, Landroid/content/pm/PackageManagerInternal;-


>getPackage(Ljava/lang/String;)Lcom/android/server/pm/parsing/pkg/AndroidPackage;

move-result-object v2

nop

invoke-interface {p1}, Lcom/android/server/pm/parsing/pkg/AndroidPackage;-


>isSignedWithPlatformKey()Z

move-result v3

if-nez v3, :cond_46

invoke-direct {p0, p2},


Lcom/android/server/pm/permission/PermissionManagerServiceImpl;-
>getSourcePackageSigningDetails(Lcom/android/server/pm/permission/
Permission;)Landroid/content/pm/SigningDetails;

move-result-object v3
nop

invoke-interface {p1}, Lcom/android/server/pm/parsing/pkg/AndroidPackage;-


>getSigningDetails()Landroid/content/pm/SigningDetails;

move-result-object v4

const/4 v5, 0x4

invoke-virtual {v3, v4, v5}, Landroid/content/pm/SigningDetails;-


>hasCommonSignerWithCapability(Landroid/content/pm/SigningDetails;I)Z

move-result v4

if-nez v4, :cond_46

invoke-interface {p1}, Lcom/android/server/pm/parsing/pkg/AndroidPackage;-


>getSigningDetails()Landroid/content/pm/SigningDetails;

move-result-object v4

invoke-interface {v2}, Lcom/android/server/pm/parsing/pkg/AndroidPackage;-


>getSigningDetails()Landroid/content/pm/SigningDetails;

move-result-object v6

invoke-virtual {v4, v6}, Landroid/content/pm/SigningDetails;-


>hasAncestorOrSelf(Landroid/content/pm/SigningDetails;)Z

move-result v4

if-nez v4, :cond_46

invoke-interface {v2}, Lcom/android/server/pm/parsing/pkg/AndroidPackage;-


>getSigningDetails()Landroid/content/pm/SigningDetails;

move-result-object v4

invoke-interface {p1}, Lcom/android/server/pm/parsing/pkg/AndroidPackage;-


>getSigningDetails()Landroid/content/pm/SigningDetails;

move-result-object v6

invoke-virtual {v4, v6, v5}, Landroid/content/pm/SigningDetails;-


>checkCapability(Landroid/content/pm/SigningDetails;I)Z

move-result v4

if-eqz v4, :cond_47

:cond_46
const/4 v1, 0x1

:cond_47
return v1
.end method
.method public grantRuntimePermission(Ljava/lang/String;Ljava/lang/String;I)V
.registers 12

invoke-static {}, Landroid/os/Binder;->getCallingUid()I

move-result v7

nop

const-string v0, "android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY"

invoke-virtual {p0, v7, v0},


Lcom/android/server/pm/permission/PermissionManagerServiceImpl;-
>checkUidPermission(ILjava/lang/String;)I

move-result v0

if-nez v0, :cond_f

const/4 v0, 0x1

goto :goto_10

:cond_f
const/4 v0, 0x0

:goto_10
move v3, v0

iget-object v6, p0,


Lcom/android/server/pm/permission/PermissionManagerServiceImpl;-
>mDefaultPermissionCallback:Lcom/android/server/pm/permission/
PermissionManagerServiceImpl$PermissionCallback;

move-object v0, p0

move-object v1, p1

move-object v2, p2

move v4, v7

move v5, p3

invoke-direct/range {v0 .. v6},


Lcom/android/server/pm/permission/PermissionManagerServiceImpl;-
>grantRuntimePermissionInternal(Ljava/lang/String;Ljava/lang/String;ZIILcom/
android/server/pm/permission/PermissionManagerServiceImpl$PermissionCallback;)V

invoke-static {},
Lcom/android/server/pm/permission/PermissionManagerServiceStub;->get()Lcom/
android/server/pm/permission/PermissionManagerServiceStub;

move-result-object v0

move v6, v3

const/4 v3, 0x1


invoke-virtual/range {v0 .. v6},
Lcom/android/server/pm/permission/PermissionManagerServiceStub;-
>onAppRuntimePermStateModified(Ljava/lang/String;Ljava/lang/String;ZIIZ)V

return-void
.end method

.method public revokeRuntimePermission(Ljava/lang/String;Ljava/lang/String;ILjava/


lang/String;)V
.registers 14

invoke-static {}, Landroid/os/Binder;->getCallingUid()I

move-result v8

nop

const-string v0, "android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY"

invoke-virtual {p0, v8, v0},


Lcom/android/server/pm/permission/PermissionManagerServiceImpl;-
>checkUidPermission(ILjava/lang/String;)I

move-result v0

if-nez v0, :cond_f

const/4 v0, 0x1

goto :goto_10

:cond_f
const/4 v0, 0x0

:goto_10
move v3, v0

iget-object v7, p0,


Lcom/android/server/pm/permission/PermissionManagerServiceImpl;-
>mDefaultPermissionCallback:Lcom/android/server/pm/permission/
PermissionManagerServiceImpl$PermissionCallback;

move-object v0, p0

move-object v1, p1

move-object v2, p2

move v4, v8

move v5, p3

move-object v6, p4
invoke-direct/range {v0 .. v7},
Lcom/android/server/pm/permission/PermissionManagerServiceImpl;-
>revokeRuntimePermissionInternal(Ljava/lang/String;Ljava/lang/String;ZIILjava/
lang/String;Lcom/android/server/pm/permission/
PermissionManagerServiceImpl$PermissionCallback;)V

invoke-static {},
Lcom/android/server/pm/permission/PermissionManagerServiceStub;->get()Lcom/
android/server/pm/permission/PermissionManagerServiceStub;

move-result-object v0

move v6, v3

const/4 v3, 0x0

invoke-virtual/range {v0 .. v6},


Lcom/android/server/pm/permission/PermissionManagerServiceStub;-
>onAppRuntimePermStateModified(Ljava/lang/String;Ljava/lang/String;ZIIZ)V

return-void
.end method

///////////////////////////////////////////////////////////

in

com.android.server.pm.permission.PermissionManagerServiceStub

Add two methods at the end:

.method public onAppPermFlagsModified(Ljava/lang/String;Ljava/lang/String;IIIIZ)V


.registers 8

return-void
.end method

.method public
onAppRuntimePermStateModified(Ljava/lang/String;Ljava/lang/String;ZIIZ)V
.registers 7

return-void
.end method

///////////////////////////////////////////////////////////

com.android.server.pm.pkg.parsing.ParsingPackageUtils
In method:

.method public static


getSigningDetails(Landroid/content/pm/parsing/result/ParseInput;Ljava/lang/
String;ZZLandroid/content/pm/SigningDetails;I)Landroid/content/pm/parsing/result/
ParseResult;

Find in some beginning lines:

invoke-static {p0, p1, v0}, Landroid/util/apk/ApkSignatureVerifier;-


>unsafeGetCertsWithoutVerification(Landroid/content/pm/parsing/result/
ParseInput;Ljava/lang/String;I)Landroid/content/pm/parsing/result/ParseResult;

move-result-object v1

Above them add:

const/4 v0, 0x1

///////////////////////////////////////////////////////////

com.android.server.pm.PackageManagerService$PackageManagerInternalImpl

Replace method:

.method public isPlatformSigned(Ljava/lang/String;)Z


.registers 7

invoke-virtual {p0},
Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;-
>snapshot()Lcom/android/server/pm/Computer;

move-result-object v0

invoke-interface {v0, p1}, Lcom/android/server/pm/Computer;-


>getPackageStateInternal(Ljava/lang/String;)Lcom/android/server/pm/pkg/
PackageStateInternal;

move-result-object v0

const/4 v1, 0x0

if-nez v0, :cond_c

return v1
:cond_c
invoke-interface {v0}, Lcom/android/server/pm/pkg/PackageStateInternal;-
>getPkg()Lcom/android/server/pm/parsing/pkg/AndroidPackage;

move-result-object v3

if-eqz v3, :cond_3e

invoke-interface {v3}, Lcom/android/server/pm/parsing/pkg/AndroidPackage;-


>isSignedWithPlatformKey()Z

move-result v3

if-nez v3, :cond_3d

invoke-interface {v0}, Lcom/android/server/pm/pkg/PackageStateInternal;-


>getSigningDetails()Landroid/content/pm/SigningDetails;

move-result-object v2

iget-object v3, p0,


Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;-
>this$0:Lcom/android/server/pm/PackageManagerService;

invoke-static {v3}, Lcom/android/server/pm/PackageManagerService;->-$


$Nest$fgetmPlatformPackage(Lcom/android/server/pm/PackageManagerService;)Lcom/
android/server/pm/parsing/pkg/AndroidPackage;

move-result-object v3

invoke-interface {v3}, Lcom/android/server/pm/parsing/pkg/AndroidPackage;-


>getSigningDetails()Landroid/content/pm/SigningDetails;

move-result-object v3

invoke-virtual {v2, v3}, Landroid/content/pm/SigningDetails;-


>hasAncestorOrSelf(Landroid/content/pm/SigningDetails;)Z

move-result v3

if-nez v3, :cond_3d

iget-object v3, p0,


Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;-
>this$0:Lcom/android/server/pm/PackageManagerService;

invoke-static {v3}, Lcom/android/server/pm/PackageManagerService;->-$


$Nest$fgetmPlatformPackage(Lcom/android/server/pm/PackageManagerService;)Lcom/
android/server/pm/parsing/pkg/AndroidPackage;

move-result-object v3

invoke-interface {v3}, Lcom/android/server/pm/parsing/pkg/AndroidPackage;-


>getSigningDetails()Landroid/content/pm/SigningDetails;

move-result-object v3

const/4 v4, 0x4


invoke-virtual {v3, v2, v4}, Landroid/content/pm/SigningDetails;-
>checkCapability(Landroid/content/pm/SigningDetails;I)Z

move-result v3

if-eqz v3, :cond_3e

:cond_3d
const/4 v1, 0x1

:cond_3e
return v1
.end method

///////////////////////////////////////////////////////////

com.android.server.pm.PackageManagerServiceUtils

in method:

.method public static


verifySignatures(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/
SharedUserSetting;Lcom/android/server/pm/PackageSetting;Landroid/content/pm/
SigningDetails;ZZZ)Z

Find in some beginning lines:

const/4 v5, 0x0

const/4 v6, 0x1

if-eqz v4, :cond_x

Add below it:

array-length v4, v4

if-eqz v4, :cond_x

( //this x could be anything in yours, you need to remember your existing value
and replace it on the place of x)
///////////////////////////////////////////////////////////

com.android.server.pm.ReconcilePackageUtils

In method:

.method public static


reconcilePackages(Lcom/android/server/pm/ReconcileRequest;Lcom/android/server/pm/
SharedLibrariesImpl;Lcom/android/server/pm/KeySetManagerService;Lcom/android/
server/pm/Settings;)Ljava/util/Map;

Find:

invoke-interface {v1}, Lcom/android/server/pm/parsing/pkg/ParsedPackage;-


>getSigningDetails()Landroid/content/pm/SigningDetails;

move-result-object v9

invoke-virtual {v11}, Lcom/android/server/pm/SharedUserSetting;-


>getSigningDetails()Landroid/content/pm/SigningDetails;

Above it you'll find:

iget-object v9, v11, Lcom/android/server/pm/SharedUserSetting;-


>signaturesChanged:Ljava/lang/Boolean;

if-eqz v9, :cond_x

Below if-eqz line, add:

invoke-interface {v1}, Lcom/android/server/pm/parsing/pkg/AndroidPackage;-


>isSignedWithPlatformKey()Z

move-result v9

if-nez v9, :cond_x

( //this x could be anything in yours, you need to remember your existing value
and replace it on the place of x)
///////////////////////////////////////////////////////////

com.android.server.pm.ScanPackageUtils

Replace method:

.method public static


assertMinSignatureSchemeIsValid(Lcom/android/server/pm/parsing/pkg/
AndroidPackage;I)V
.registers 7
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/android/server/pm/PackageManagerException;
}
.end annotation

nop

and-int/lit8 v0, p1, 0x10

if-nez v0, :cond_e

invoke-interface {p0}, Lcom/android/server/pm/parsing/pkg/AndroidPackage;-


>getTargetSdkVersion()I

move-result v0

invoke-static {v0}, Landroid/util/apk/ApkSignatureVerifier;-


>getMinimumSignatureSchemeVersionForTargetSdk(I)I

move-result v0

goto :goto_f

:cond_e
const/4 v0, 0x1

:goto_f
invoke-interface {p0}, Lcom/android/server/pm/parsing/pkg/AndroidPackage;-
>getSigningDetails()Landroid/content/pm/SigningDetails;

move-result-object v1

invoke-virtual {v1}, Landroid/content/pm/SigningDetails;-


>getSignatureSchemeVersion()I

move-result v1

if-lt v1, v0, :cond_1a

return-void

:cond_1a
new-instance v1, Lcom/android/server/pm/PackageManagerException;

const/16 v2, -0x67

new-instance v3, Ljava/lang/StringBuilder;

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

const-string v4, "No signature found in package of version "

invoke-virtual {v3, v4},


Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v3

invoke-virtual {v3, v0},


Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

move-result-object v3

const-string v4, " or newer for package "

invoke-virtual {v3, v4},


Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v3

invoke-interface {p0}, Lcom/android/server/pm/parsing/pkg/AndroidPackage;-


>getPackageName()Ljava/lang/String;

move-result-object v4

invoke-virtual {v3, v4},


Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v3

invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

move-result-object v3

invoke-direct {v1, v2, v3}, Lcom/android/server/pm/PackageManagerException;-


><init>(ILjava/lang/String;)V

throw v1
.end method

You might also like