[MOD][GUIDE][HOWTO] * Enable Private Mode with custom rom*

Search This thread

Wuby986

Senior Member
Oct 18, 2013
2,144
2,440
Hello there !!!

I would like to present you a guide on how to enable the Private Mode feature for deodexed roms...

Intro:
when you trip knox this feature isn't supposed to work anymore, basically because it checks the security of your device and since knox is voided is not anymore for Samsung standards. i recently found out thanks to @Goldie that the reason is deodex, since even if you trip knox and you're on stock rom and wipe data you can still access the partition after is wiped

what i did was running a log while enabling the P.M. and i got that it "failed to get key value from SecureProperties"

Actions: << kitkat guide >> for Lollipop search for post 141
decompiling the app we find that navigating to /smali/com/samsung/android/personalpage/service/util/ there is a smali called SecureProperties.smali
opening it we found:
Code:
# direct methods
.method public constructor <init>(Landroid/content/Context;)V
    .locals 1
    .param p1, "context"    # Landroid/content/Context;

    .prologue
    .line 59
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 52
    const/4 v0, 0x0

    iput-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;

    .line 62
    invoke-static {p1}, Lcom/samsung/android/personalpage/service/util/SecureProperties$SecureStorageProperties;->getInstance(Landroid/content/Context;)Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;

    move-result-object v0

    iput-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;

    .line 64
    iget-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;

    if-nez v0, :cond_0

    .line 65
    invoke-static {p1}, Lcom/samsung/android/personalpage/service/util/SecureProperties$NonSecureProperties;->getInstance(Landroid/content/Context;)Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;

    move-result-object v0

    iput-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;

    .line 67
    :cond_0
    return-void
.end method


this will get the value from framework and we don't want it ;)
so basically we're now going make it read that the framework is still odex by adding a line in the method above like below:

Code:
# direct methods
.method public constructor <init>(Landroid/content/Context;)V
    .locals 1
    .param p1, "context"    # Landroid/content/Context;

    .prologue
    .line 59
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 52
    const/4 v0, 0x0

    iput-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;

    .line 62
    invoke-static {p1}, Lcom/samsung/android/personalpage/service/util/SecureProperties$SecureStorageProperties;->getInstance(Landroid/content/Context;)Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;

    move-result-object v0

[COLOR="Lime"]    const/4 v0, 0x0[/COLOR]

    iput-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;

    .line 64
    iget-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;

    if-nez v0, :cond_0

    .line 65
    invoke-static {p1}, Lcom/samsung/android/personalpage/service/util/SecureProperties$NonSecureProperties;->getInstance(Landroid/content/Context;)Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;

    move-result-object v0

    iput-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;

    .line 67
    :cond_0
    return-void
.end method


adding the line const/4 v0, 0x0 overrides the one from secure storage with a null value and makes it load the PrivateFsKey value from properties.xml and enabling the feature :D
so we're done.. just save the smali, recompile and.. enjoy....

optional editing you can apply to the app: (curtesy of @Goldie )
force secure storage to true ( be supported):
in smali/com/sec/android/securestorage/SecureStorage.smali change the .method public static isSupported()Z
like this:
Code:
.method public static isSupported()Z
.locals 1

.prologue
.line 2060
[COLOR="Red"]const/4 v0, 0x1[/COLOR]

return v0
.end method
with the const/4 v0, 0x1 we're forcing it to load a positive value and saing it is supported anyway, instead of loading the value from output


let the app work without the lockscreen keyguard enabled
in smali/com/samsung/android/personalpage/service/PersonalPageService.smali search for new-instance v0, Lcom/android/internal/widget/LockPatternUtils;
the code is now looking like this in stock :
Code:
new-instance v0, Lcom/android/internal/widget/LockPatternUtils;

    iget-object v1, p0, Lcom/samsung/android/personalpage/service/PersonalPageService;->mContext:Landroid/content/Context;

    invoke-direct {v0, v1}, Lcom/android/internal/widget/LockPatternUtils;-><init>(Landroid/content/Context;)V

    .line 282
    .local v0, "lockPatternUtils":Lcom/android/internal/widget/LockPatternUtils;
    invoke-virtual {v0}, Lcom/android/internal/widget/LockPatternUtils;->isSecure()Z

    move-result v1

    if-nez v1, :cond_0

    .line 283
    const/4 v1, 0x1

    invoke-direct {p0, v1}, Lcom/samsung/android/personalpage/service/PersonalPageService;->showPrivateModeDialog(Z)V

    .line 288
    .end local v0    # "lockPatternUtils":Lcom/android/internal/widget/LockPatternUtils;
    :cond_0
    const/4 v1, 0x1

    invoke-direct {p0, v1}, Lcom/samsung/android/personalpage/service/PersonalPageService;->handleChangePrivateMode(Z)V
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0
and we're going to add const/4 v1, 0x1 like below:
Code:
 new-instance v0, Lcom/android/internal/widget/LockPatternUtils;

    iget-object v1, p0, Lcom/samsung/android/personalpage/service/PersonalPageService;->mContext:Landroid/content/Context;

    invoke-direct {v0, v1}, Lcom/android/internal/widget/LockPatternUtils;-><init>(Landroid/content/Context;)V

    .line 282
    .local v0, "lockPatternUtils":Lcom/android/internal/widget/LockPatternUtils;
    invoke-virtual {v0}, Lcom/android/internal/widget/LockPatternUtils;->isSecure()Z

    move-result v1

    [COLOR="Red"]const/4 v1, 0x1[/COLOR]

    if-nez v1, :cond_0

    .line 283
    const/4 v1, 0x1

    invoke-direct {p0, v1}, Lcom/samsung/android/personalpage/service/PersonalPageService;->showPrivateModeDialog(Z)V

    .line 288
    .end local v0    # "lockPatternUtils":Lcom/android/internal/widget/LockPatternUtils;
    :cond_0
    const/4 v1, 0x1

    invoke-direct {p0, v1}, Lcom/samsung/android/personalpage/service/PersonalPageService;->handleChangePrivateMode(Z)V
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0


and remove the notification in status bar when personal page is enbled
in smali/com/samsung/android/personalpage/service/util/PersonalPageNotiManager.smali search for .method private static secretModeSetNotification(Landroid/app/NotificationManager;IIIIII)V
chance the whole method to retur void so it won't load the notification like this
Code:
.method private static secretModeSetNotification(Landroid/app/NotificationManager;IIIIII)V
    .locals 9
    .param p0, "notificationManager"    # Landroid/app/NotificationManager;
    .param p1, "nMoodId"    # I
    .param p2, "nTitleId"    # I
    .param p3, "nTextId"    # I
    .param p4, "nTickerId"    # I
    .param p5, "nId"    # I
    .param p6, "nIndicatorState"    # I

    .prologue
    const/4 v8, 0x0
    return-void

.end method




for those not able to enable the private mode with stock rom it is more likely due to wipe not done, or foldermount or any other app that replaces the sdcard binary

no credits need except for samsung that actually made this nice feature...

i just want to thank @daxgirl for moral help first and for helping me making the guide more clear as possible :)
 
Last edited:

daxgirl

Senior Member
Jun 30, 2012
4,047
9,175
Jerusalem
It WOOOORRRRRRKKKKSSSSSS! GENIUS!

Sent from my SM-G900F using Tapatalk
 

Attachments

  • uploadfromtaptalk1413243863767.png
    uploadfromtaptalk1413243863767.png
    191.4 KB · Views: 10,591

daxgirl

Senior Member
Jun 30, 2012
4,047
9,175
Jerusalem
Samsung stock odex NG2 not work
You need to delete the odex file of the apk. The zip replaced the apk. But the odex is still there. Delete it and it should work.
Find PersonalPageService.apk. in /system/priv-app and see if you have PersonalPageService.odex. delete it.

Sent from my SM-G900F using Tapatalk
 
Last edited:
  • Like
Reactions: Wuby986

Tamerlan2009

Senior Member
Feb 5, 2011
309
786
You need to delete the odex file of the apk. The zip replaced the apk. But the odex is still there. Delete it and it should work.
Find PersonalPageService.apk. in /system/priv-app and see if you have PersonalPageService.odex. delete it.

Sent from my SM-G900F using Tapatalk


long the file has been deleted) that I just did not do. still does not work
 

daxgirl

Senior Member
Jun 30, 2012
4,047
9,175
Jerusalem
When you say it doesn't work, what do you mean? What happens when you start private mode?
Also, since this is a development thread, log cat is usually the best way for troubleshooting. Present your log cat or the output of your log cat error. Since "doesn't work" is really a wide range of issues.

Sent from my SM-G900F using Tapatalk
 

Tamerlan2009

Senior Member
Feb 5, 2011
309
786
When you say it doesn't work, what do you mean? What happens when you start private mode?
Also, since this is a development thread, log cat is usually the best way for troubleshooting. Present your log cat or the output of your log cat error. Since "doesn't work" is really a wide range of issues.

Sent from my SM-G900F using Tapatalk

here is what : Failed to enable private mode. Please try again
 

daxgirl

Senior Member
Jun 30, 2012
4,047
9,175
Jerusalem
log and modified apk
Your error is the same as if the file hasn't been modified. I will have a look at the apk and let you know.

Sent from my SM-G900F using Tapatalk

---------- Post added at 07:08 PM ---------- Previous post was at 06:51 PM ----------

log and modified apk
I just pushed the app you uploaded into my device and it works immidiately. Even though yours is from ng2 and I am on ng9. So the problem is on your device with something else. from your log I can see some errors on secure storage disabled... could that be the problem?
Your smali is modified correctly, your apk works on my device flawlessly. So it's something in your settings that's blocking it. Maybe one of the build.prop configs? Sorry I can't help more at this point. I will have a deeper look into your log cat. Cheers!

Edit: make sure you don't have it installed in both /system/app and /system/priv-app.

Edit: noticed something else. If you wipe data to the apk after it was working, it never enables again. Maybe wiping all data will help. I will have to try it later. My guess is since you removed the apk and the odex file it wiped data for the app, since it was removed before pushing the new one. I hope wiping data to the device will solve this. Still have to try.

Edit: wiping all data fixed it again. No problem. All works.

Sent from my SM-G900F using Tapatalk
 
Last edited:

oluwaponmile

Senior Member
Dec 19, 2007
2,396
16,268
Not that I have an S5 or using this MOD but I just want to thank @wuby986 and @daxgirl for their continuous support and contributions to XDA developers forum. You guys rocks:good:

I will probably try it on my Note 3 S5 port
 
Last edited:
  • Like
Reactions: Wuby986 and daxgirl

daxgirl

Senior Member
Jun 30, 2012
4,047
9,175
Jerusalem
Not that I have an S5 or using this MOD but I just want to thank @wuby986 and @daxgirl for their continuous support and contributions to XDA developers forum. You guys rocks:good:

I will probably try it on my Note 3 S5 port
Thanks, mate! Nice to see you around! You're on Jamal's port I see from your posts there. Quite a nice rom I hear! I can't say if the note3 is capable of having personal page partition, but I would really like to know if it works! Drop a line if it does! ???

Sent from my SM-G900F using Tapatalk
 
  • Like
Reactions: oluwaponmile

koben147

Member
Aug 25, 2012
28
7
Mertajam Hills
Wow, im so excited when this guide release :good:. Is this method can be working (Flash the zip file) on Ported S5 ROM on Note 3? I was looking for this most everyday to fix it (Private Mode). But im too noob on this manner. Still learn some knowledge, my finger keep searching non stop :crying:
 

Top Liked Posts

  • There are no posts matching your filters.
  • 76
    Hello there !!!

    I would like to present you a guide on how to enable the Private Mode feature for deodexed roms...

    Intro:
    when you trip knox this feature isn't supposed to work anymore, basically because it checks the security of your device and since knox is voided is not anymore for Samsung standards. i recently found out thanks to @Goldie that the reason is deodex, since even if you trip knox and you're on stock rom and wipe data you can still access the partition after is wiped

    what i did was running a log while enabling the P.M. and i got that it "failed to get key value from SecureProperties"

    Actions: << kitkat guide >> for Lollipop search for post 141
    decompiling the app we find that navigating to /smali/com/samsung/android/personalpage/service/util/ there is a smali called SecureProperties.smali
    opening it we found:
    Code:
    # direct methods
    .method public constructor <init>(Landroid/content/Context;)V
        .locals 1
        .param p1, "context"    # Landroid/content/Context;
    
        .prologue
        .line 59
        invoke-direct {p0}, Ljava/lang/Object;-><init>()V
    
        .line 52
        const/4 v0, 0x0
    
        iput-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
    
        .line 62
        invoke-static {p1}, Lcom/samsung/android/personalpage/service/util/SecureProperties$SecureStorageProperties;->getInstance(Landroid/content/Context;)Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
    
        move-result-object v0
    
        iput-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
    
        .line 64
        iget-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
    
        if-nez v0, :cond_0
    
        .line 65
        invoke-static {p1}, Lcom/samsung/android/personalpage/service/util/SecureProperties$NonSecureProperties;->getInstance(Landroid/content/Context;)Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
    
        move-result-object v0
    
        iput-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
    
        .line 67
        :cond_0
        return-void
    .end method


    this will get the value from framework and we don't want it ;)
    so basically we're now going make it read that the framework is still odex by adding a line in the method above like below:

    Code:
    # direct methods
    .method public constructor <init>(Landroid/content/Context;)V
        .locals 1
        .param p1, "context"    # Landroid/content/Context;
    
        .prologue
        .line 59
        invoke-direct {p0}, Ljava/lang/Object;-><init>()V
    
        .line 52
        const/4 v0, 0x0
    
        iput-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
    
        .line 62
        invoke-static {p1}, Lcom/samsung/android/personalpage/service/util/SecureProperties$SecureStorageProperties;->getInstance(Landroid/content/Context;)Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
    
        move-result-object v0
    
    [COLOR="Lime"]    const/4 v0, 0x0[/COLOR]
    
        iput-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
    
        .line 64
        iget-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
    
        if-nez v0, :cond_0
    
        .line 65
        invoke-static {p1}, Lcom/samsung/android/personalpage/service/util/SecureProperties$NonSecureProperties;->getInstance(Landroid/content/Context;)Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
    
        move-result-object v0
    
        iput-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
    
        .line 67
        :cond_0
        return-void
    .end method


    adding the line const/4 v0, 0x0 overrides the one from secure storage with a null value and makes it load the PrivateFsKey value from properties.xml and enabling the feature :D
    so we're done.. just save the smali, recompile and.. enjoy....

    optional editing you can apply to the app: (curtesy of @Goldie )
    force secure storage to true ( be supported):
    in smali/com/sec/android/securestorage/SecureStorage.smali change the .method public static isSupported()Z
    like this:
    Code:
    .method public static isSupported()Z
    .locals 1
    
    .prologue
    .line 2060
    [COLOR="Red"]const/4 v0, 0x1[/COLOR]
    
    return v0
    .end method
    with the const/4 v0, 0x1 we're forcing it to load a positive value and saing it is supported anyway, instead of loading the value from output


    let the app work without the lockscreen keyguard enabled
    in smali/com/samsung/android/personalpage/service/PersonalPageService.smali search for new-instance v0, Lcom/android/internal/widget/LockPatternUtils;
    the code is now looking like this in stock :
    Code:
    new-instance v0, Lcom/android/internal/widget/LockPatternUtils;
    
        iget-object v1, p0, Lcom/samsung/android/personalpage/service/PersonalPageService;->mContext:Landroid/content/Context;
    
        invoke-direct {v0, v1}, Lcom/android/internal/widget/LockPatternUtils;-><init>(Landroid/content/Context;)V
    
        .line 282
        .local v0, "lockPatternUtils":Lcom/android/internal/widget/LockPatternUtils;
        invoke-virtual {v0}, Lcom/android/internal/widget/LockPatternUtils;->isSecure()Z
    
        move-result v1
    
        if-nez v1, :cond_0
    
        .line 283
        const/4 v1, 0x1
    
        invoke-direct {p0, v1}, Lcom/samsung/android/personalpage/service/PersonalPageService;->showPrivateModeDialog(Z)V
    
        .line 288
        .end local v0    # "lockPatternUtils":Lcom/android/internal/widget/LockPatternUtils;
        :cond_0
        const/4 v1, 0x1
    
        invoke-direct {p0, v1}, Lcom/samsung/android/personalpage/service/PersonalPageService;->handleChangePrivateMode(Z)V
        :try_end_0
        .catchall {:try_start_0 .. :try_end_0} :catchall_0
    and we're going to add const/4 v1, 0x1 like below:
    Code:
     new-instance v0, Lcom/android/internal/widget/LockPatternUtils;
    
        iget-object v1, p0, Lcom/samsung/android/personalpage/service/PersonalPageService;->mContext:Landroid/content/Context;
    
        invoke-direct {v0, v1}, Lcom/android/internal/widget/LockPatternUtils;-><init>(Landroid/content/Context;)V
    
        .line 282
        .local v0, "lockPatternUtils":Lcom/android/internal/widget/LockPatternUtils;
        invoke-virtual {v0}, Lcom/android/internal/widget/LockPatternUtils;->isSecure()Z
    
        move-result v1
    
        [COLOR="Red"]const/4 v1, 0x1[/COLOR]
    
        if-nez v1, :cond_0
    
        .line 283
        const/4 v1, 0x1
    
        invoke-direct {p0, v1}, Lcom/samsung/android/personalpage/service/PersonalPageService;->showPrivateModeDialog(Z)V
    
        .line 288
        .end local v0    # "lockPatternUtils":Lcom/android/internal/widget/LockPatternUtils;
        :cond_0
        const/4 v1, 0x1
    
        invoke-direct {p0, v1}, Lcom/samsung/android/personalpage/service/PersonalPageService;->handleChangePrivateMode(Z)V
        :try_end_0
        .catchall {:try_start_0 .. :try_end_0} :catchall_0


    and remove the notification in status bar when personal page is enbled
    in smali/com/samsung/android/personalpage/service/util/PersonalPageNotiManager.smali search for .method private static secretModeSetNotification(Landroid/app/NotificationManager;IIIIII)V
    chance the whole method to retur void so it won't load the notification like this
    Code:
    .method private static secretModeSetNotification(Landroid/app/NotificationManager;IIIIII)V
        .locals 9
        .param p0, "notificationManager"    # Landroid/app/NotificationManager;
        .param p1, "nMoodId"    # I
        .param p2, "nTitleId"    # I
        .param p3, "nTextId"    # I
        .param p4, "nTickerId"    # I
        .param p5, "nId"    # I
        .param p6, "nIndicatorState"    # I
    
        .prologue
        const/4 v8, 0x0
        return-void
    
    .end method




    for those not able to enable the private mode with stock rom it is more likely due to wipe not done, or foldermount or any other app that replaces the sdcard binary

    no credits need except for samsung that actually made this nice feature...

    i just want to thank @daxgirl for moral help first and for helping me making the guide more clear as possible :)
    11
    Seriously, you're the best! This is AMAZING! :) Absolutely superb job, Wuby! :) :) :)

    Sent from my SM-G900F using Tapatalk
    11
    this is from lollipop.

    Code:
    .class public Lcom/samsung/android/personalpage/service/util/SecureProperties;
    .super Ljava/lang/Object;
    .source "SecureProperties.java"
    
    
    # annotations
    .annotation system Ldalvik/annotation/MemberClasses;
        value = {
            Lcom/samsung/android/personalpage/service/util/SecureProperties$1;,
            Lcom/samsung/android/personalpage/service/util/SecureProperties$NonSecureProperties;,
            Lcom/samsung/android/personalpage/service/util/SecureProperties$SecureStorageProperties;,
            Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
        }
    .end annotation
    
    
    # static fields
    .field private static SUPPORT_SECURE_STORAGE_FEATURE:Z = false
    
    .field private static final TAG:Ljava/lang/String; = "SecureProperties"
    
    
    # instance fields
    .field private mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
    
    
    # direct methods
    .method static constructor <clinit>()V
        .locals 1
    
        .prologue
        .line 53
        const/4 v0, 0x1
    
        sput-boolean v0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->SUPPORT_SECURE_STORAGE_FEATURE:Z
    
        return-void
    .end method
    
    .method public constructor <init>(Landroid/content/Context;)V
        .locals 2
        .param p1, "context"    # Landroid/content/Context;
    
        .prologue
        const/4 v1, 0x1
    
        .line 61
        invoke-direct {p0}, Ljava/lang/Object;-><init>()V
    
        .line 54
        const/4 v0, 0x0
    
        iput-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
    
        .line 63
        invoke-static {}, Landroid/os/Debug;->isProductShip()I
    
        move-result v0
    
        if-nez v0, :cond_3
    
        .line 64
        invoke-static {}, Lcom/sec/android/securestorage/SecureStorage;->isSupported()Z
    
        move-result v0
    
        if-nez v0, :cond_2
    
        .line 65
        const/4 v0, 0x0
    
        sput-boolean v0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->SUPPORT_SECURE_STORAGE_FEATURE:Z
    
        .line 72
        :goto_0
        sget-boolean v0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->SUPPORT_SECURE_STORAGE_FEATURE:Z
    
        if-eqz v0, :cond_0
    
        .line 73
        invoke-static {p1}, Lcom/samsung/android/personalpage/service/util/SecureProperties$SecureStorageProperties;->getInstance(Landroid/content/Context;)Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
        
        move-result-object v0
        [COLOR="Lime"]const/4 v0, 0x0[/COLOR]
    
        iput-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
    
        .line 75
        :cond_0
        iget-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
    
        if-nez v0, :cond_1
    
        .line 76
        invoke-static {p1}, Lcom/samsung/android/personalpage/service/util/SecureProperties$NonSecureProperties;->getInstance(Landroid/content/Context;)Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
    
        move-result-object v0
    
        iput-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
    
        .line 78
        :cond_1
        return-void
    
        .line 67
        :cond_2
        sput-boolean v1, Lcom/samsung/android/personalpage/service/util/SecureProperties;->SUPPORT_SECURE_STORAGE_FEATURE:Z
    
        goto :goto_0
    
        .line 70
        :cond_3
        sput-boolean v1, Lcom/samsung/android/personalpage/service/util/SecureProperties;->SUPPORT_SECURE_STORAGE_FEATURE:Z
    
        goto :goto_0
    .end method
    
    .method protected static isSupportSecureStorage()Z
        .locals 1
    
        .prologue
        .line 81
        sget-boolean v0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->SUPPORT_SECURE_STORAGE_FEATURE:Z
    
        return v0
    .end method
    
    
    # virtual methods
    .method public getProperty(Ljava/lang/String;)Ljava/lang/String;
        .locals 3
        .param p1, "key"    # Ljava/lang/String;
    
        .prologue
        .line 91
        const-string v0, "SecureProperties"
    
        new-instance v1, Ljava/lang/StringBuilder;
    
        invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
    
        const-string v2, "getProperty: key="
    
        invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    
        move-result-object v1
    
        invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    
        move-result-object v1
    
        invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    
        move-result-object v1
    
        invoke-static {v0, v1}, Lcom/samsung/android/personalpage/service/util/PersonalPageLog;->d(Ljava/lang/String;Ljava/lang/String;)V
    
        .line 93
        iget-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
    
        invoke-virtual {v0, p1}, Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;->getProperty(Ljava/lang/String;)Ljava/lang/String;
    
        move-result-object v0
    
        return-object v0
    .end method
    
    .method public setProperty(Ljava/lang/String;Ljava/lang/String;)Z
        .locals 3
        .param p1, "key"    # Ljava/lang/String;
        .param p2, "value"    # Ljava/lang/String;
    
        .prologue
        .line 85
        const-string v0, "SecureProperties"
    
        new-instance v1, Ljava/lang/StringBuilder;
    
        invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
    
        const-string v2, "setProperty: key="
    
        invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    
        move-result-object v1
    
        invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    
        move-result-object v1
    
        invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    
        move-result-object v1
    
        invoke-static {v0, v1}, Lcom/samsung/android/personalpage/service/util/PersonalPageLog;->d(Ljava/lang/String;Ljava/lang/String;)V
    
        .line 87
        iget-object v0, p0, Lcom/samsung/android/personalpage/service/util/SecureProperties;->mImpl:Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;
    
        invoke-virtual {v0, p1, p2}, Lcom/samsung/android/personalpage/service/util/SecureProperties$PropertiesImpl;->setProperty(Ljava/lang/String;Ljava/lang/String;)Z
    
        move-result v0
    
        return v0
    .end method

    Where put const/4 v0, 0x0 ? In kitkat is difrent. In lollipop i dont have .line 62

    hey.. sorry for delay.. i totally forgot about this !!
    so the idea is the same. where we have the getInstance we have to put the value we want it to read, overriding the one that comes by default. i've edited your quote so you can see where the value needs to be add
    7
    It WOOOORRRRRRKKKKSSSSSS! GENIUS!

    Sent from my SM-G900F using Tapatalk
    6
    I just forced it true in SecureStorage.smali....

    .method public static isSupported()Z
    .locals 1

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

    return v0
    .end method

    Sent from my SM-G900F using Tapatalk