WARNING / اخطار
بنده هیچ مسولیتی را در برابر خرابی های احتمالی نمی پذیرم
تغییر لاک اسکرین در Galaxy S i9000
این روش لاک اسکرین اصلی گوشی (glass) رو به لاک اسکرین استوک اندروید (aosp)تغییر میده
با برنامه هایی که کار داریم اینا هستند.
1- فایل android.policy.jar
2- smali و baksmali
3- روشی برای جایگزینی Android.policy.jar ویرایش شده با اصلی.
4- notepad ++
مراجل کار
1- فایل android.policy.jar رو از فولدر system/framework بیرون بکشید.
به فولدری به نام edit انتقال دهید.
2- فایل های baksmali و smali و اسکریپت هایی رو که براشون ساخته بودم ، به فولدر edit انتقال دهید.
در فولدر edit فایل script_backsmali.bat رو داریم.
3- فایل android.policy.jar را با نرم افزار winrar باز کنید. و فایل classes.dex را استخراج کنید.
فایل classes.dex را به درون فولدر edit بکشید.
4- فایل script_backsmali.bat را اجرا کنید.
5- دکمه ای را جهت ادامه فشار دهید. با فشار یک کلید ، برنامه شروع به بکسمالی کردن خواهد کرد.
6- اگر با خطایی مواجهه نشده باشید، از شما خواسته میشه که دکمه ای را جهت خروج فشار دهید.
7- درون فولدر edit پوشه جدیدی به نام decompiled ساخته شده است. که حاوی فایل های baksmali شده ی classes.dex هست.
8- وارد فولدر decompiled شده و فایل زیر را باز کنید.
كد:
\edit\decompiled\com\android\internal\policy\implLockPatternKeyguardView.smali
9- فایل LockPatternKeyguardView.smali را باز میکنیم. (بوسیله ی نرم افزار notepad++)
10- متد زیر را پیدا میکنیم.
كد:
.method private getLockScreenMode()Lcom/android/internal/policy/impl/LockPatternKeyguardView$LockScreenMode;
به این منظور Ctrl+F را فشار دهید و نوشته ی مورد نظر را وارد میکنیم. .
همونطور که در نرم افزار Notepad++ نشان داده خواهد شده است، نوشته ی مورد نظر در خط 888 است. و از خط 888 شروع شده و تا خط 910 پایان میابد
كد:
.method private getLockScreenMode()Lcom/android/internal/policy/impl/LockPatternKeyguardView$LockScreenMode;
.registers 2
.prologue
.line 1338
invoke-direct {p0}, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->isMissedEventsArrived()Z
move-result v0
if-eqz v0, :cond_9
.line 1339
sget-object v0, Lcom/android/internal/policy/impl/LockPatternKeyguardView$LockScreenMode;->PuzzleLock:Lcom/android/internal/policy/impl/LockPatternKeyguardView$LockScreenMode;
.line 1342
:goto_8
return-object v0
:cond_9
sget-object v0, Lcom/android/internal/policy/impl/LockPatternKeyguardView$LockScreenMode;->GlassLock:Lcom/android/internal/policy/impl/LockPatternKeyguardView$LockScreenMode;
goto :goto_8
.end method
حالا کل این متد رو به مقادیر زیر تغییر میدیم.
كد:
.method private getLockScreenMode()Lcom/android/internal/policy/impl/LockPatternKeyguardView$LockScreenMode;
.registers 2
.prologue
.line 1338
invoke-direct {p0}, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->isMissedEventsArrived()Z
move-result v0
sget-object v0, Lcom/android/internal/policy/impl/LockPatternKeyguardView$LockScreenMode;->TapLock:Lcom/android/internal/policy/impl/LockPatternKeyguardView$LockScreenMode;
return-object v0
if-eqz v0, :cond_c
.line 1339
sget-object v0, Lcom/android/internal/policy/impl/LockPatternKeyguardView$LockScreenMode;->PuzzleLock:Lcom/android/internal/policy/impl/LockPatternKeyguardView$LockScreenMode;
.line 1342
:goto_b
return-object v0
:cond_c
sget-object v0, Lcom/android/internal/policy/impl/LockPatternKeyguardView$LockScreenMode;->GlassLock:Lcom/android/internal/policy/impl/LockPatternKeyguardView$LockScreenMode;
goto :goto_b
.end method
فایل را ذخیره میکنیم و به فولدر edit بر میگردیم.
11- حالا نوبت به اسمالی کردن ، فولدر decompiled هست
برای این کار، فولدر decompiled را به 1 تغییر نام میدهیم.
و فایل script_smali.bat را اجرا میکنیم.
12- فایل جدید اسمالی شده، به نام compiled_smali.dex.dex درون فولدر edit ساخته شده است .
13-فایل classes.dex قبلی رو پاک کنید
14- فایل compiled_smali.dex.dex را به classes.dex تغییر نام دهید.
15- فایل android.policy.jar را با نرم افزار winrar باز کنید.
16- فایل classes.dex را به درون winrar بکشید و بر روی ok کلیک کنید.
17- فایل android.policy.jar را به گوشی انتقال دهید و به System/framework انتقال دهید.
18- گوشی را خاموش و سپس روشن کرده و لاک اسکرین جدید را چک کنید.