XƏBƏRDARLIQ! Jump-ları silməyin və ya onlarla qeyd-şərtsiz olmayın! Əks halda Optimizer çökəcək və sizin yamaq ART-də işləməyəcək! Bunun qarşısını almaq üçün şərtli jump-lar istifadə edin. Məsələn, əgər jump üçün lazım olarsa, jump-u if-eq v0,v0 (bytes: 32 00 ?? ??) ilə əvəzləyin. Əgər bir xüsusi yerdə jump-a ehtiyac yoxdursa, if-ne v0,v0 (bytes: 33 00 ?? ??) kimi jump daxil edə bilərsiniz; həmçinin öz ekvivalentinizi istifadə etməkdən də çəkinməyin.

Yamaq faylı hədəf APK ilə eyni adlı olmalıdır (böyük-kiçik hərflərin fərqi var).
Proqram üçün yamaq faylı artıq mövcuddursa, siz faylın adının əvvəlinə hər hansı Mətn əlavə etməklə mövcud faylla eyni yerdə saxlaya bilərsiniz.
Əgər eyni şirkətin bir sıra proqramları üçün bir yamaq yazmaq istəyirsinizsə, xüsusi yamaq faylının adının sonunda _%25ALL%25 istifadə edə bilərsiniz, məsələn, bütün SVOX səsləri üçün yamağın adı belə olmalıdır: com.svox.classic.langpack_%25ALL%25.txt. Burada _%25ALL%25 hansı şirkətin proqramı olmasından asılı olaraq, proqramın paket adının müvafiq hissəsi ilə əvəz edilir. Yamaq faylının adında xüsusi simvollardan və ya formatlardan istifadə etməyin (yalnız tək boşluqlar). Əgər bir şirkətin bir neçə proqramı üçün yamaq lazımdırsa və adının əvvəlinə prefiks əlavə etmək lazımsırsa, siz %25ALL%25_ _%25ALL%25 istifadə edə bilərsiniz. (Məsələn: chelpus.%25ALL%25_com.android._%25ALL%25.txt). Siz faylın yolu üçün xüsusi yamaqda %25PACKAGE_NAME%25 məzmununu istifadə edə bilərsiniz, bu %25PACKAGE_NAME%25 hədəf proqramın paket adı ilə əvəzlənəcək.
Bayt modellərini axtarmaq üçün IDA Pro 6.1 istifadə edin. Bu odex, kitabxanalar, classes.dex və dalvik-keşi aça bilir.
Siz dalvik-keş və ya odex yamağı istəyirsinizsə, unutmayın ki, müxtəlif firmware versiyalarında bayt məlumatları fərqli ola bilər. Həm də nəzərə alın ki, bütün classes.dex baytları dalvik-keş və odex ilə üst-üstə düşmür. Əgər classes.dex və odex fayllarını IDA Pro ilə açsanız, bu nümunəni görərsiniz.

[BEGIN]
<istifadəçinin yamaqdan öncə görəcəyi açıqlamalar>
XYZ Pro 5.0.5 üçün yamaq

[PACKAGE]
<classes.dex açılır və bütün yamaqlar [CLASSES]-dən buna tətbiq edilir. Sonra, dəyişikliklərin əsasında classes.dex, odex faylı yaradılır.>

[CLASSES]
<classes.dex üçün model axtar/əvəzlə (aşağı baxın)>
{"search":"63 R00 R01 R02 38 00 04 00 12 10 0F 00"}
{"group":"1"}
{"original":"63 ?? ?? ?? 38 00 04 00 12 10 0F 00"}
{"replaced":"12 00 6A W00 W01 W02 00 00 12 S0 0F 00"}


[LIB]
<adlandırılmış yerli kitabxanalar üçün model axtar/əvəzlə (aşağı baxın)>
{"name":"libtitanium.so"}
{"original":"00 ** 50 e2"}
{"replaced":"00 00 50 e1"}

[LIB]
<bütün yerli kitabxanalar üçün model axtar/əvəzlə>
{"name":"*"}
{"original":"00 ** 50 e2"}
{"replaced":"00 00 50 e1"}

[OTHER FILES]
</data/data/Package_Target_APK/-dakı adlandırılmış digər fayllar üçün model axtar/əvəzlə (aşağı baxın)>
{"name":"/files/shell.dex"}
{"original":"0F 00 00 00 1A 00 00 00 0F 00 00 00 59 00 00 00 2F"}
{"replaced":"0F 00 00 00 0F 00 00 00 0F 00 00 00 59 00 00 00 2F"}

[OTHER FILES]
</mnt/sdcard/-da adlandırılmış digər fayllar üçün model axtar/daxil et (/mnt/sdcard/-da yamaq yoxdursa, Lucky Patcher sdcard üçün digər variantlarla axtarış edəcək)>
{"name":"/mnt/sdcard/Android/package-name/files/lives.xml"}
{"original":"63 68 65 6C 70 61"}
{"insert":"63 68 65 6c 70 61 61 61"}

[FILE_IN_APK]
<apk faylından fayl üçün model axtar/əvəzlə (bu yamaq yalnız xüsusi yamaq ilə yenidən yaradılan apk üçün işləyir)>
{"name":"assets/bin/Data/Managed/O7SharpCompress.dll"}
{"original":"0F 00 00 00 1A 00 00 00 0F 00 00 00 59 00 00 00 2F"}
{"replaced":"0F 00 00 00 0F 00 00 00 0F 00 00 00 59 00 00 00 2F"}

[ADD-BOOT]
<cari istifadəçi yamağını BootList-ə avtomatik əlavə edir. Yamaq kitabxanada istifadə olunmalıdır (ya da [ODEX]-siz və ya [PACKACE]-siz [CLASSES]-də)>

[END]
<yamaqdan sonra istifadəçiyə göstəriləcək açıqlama>
Təbriklər, proqram sındırıldı!

"search" - konkret vəziyyətlərdə model və saxlanan bayt axtarmağa imkan verir.
{"search":"63 R00 R01 R02 38 00 04 00 12 10 0F 00"}
Bu nümunədəki yaşıl baytlar sizin model maskanızı təşkil edir, sarı rəngli R00 -> R02 baytları isə saxlanılır.
Saxlanan baytlar ardıcıl olmalıdır: R00, R01, R02, R03...
Saxlanan baytlar təkrarlana bilməz.

"group" - modelləri qrupda işarələyir (qrup sayı 1 və daha çox ola bilər). Soruşa bilərsiniz ki, "Bu nə deməkdir?". Hə, bu o deməkdir ki, əgər ən azı bir qrupun modelləri uğurlu olsa, uğurla yamaqlandı mesajı göstəriləcək. Bu, müəyyən bir proqramın çoxlu versiyaları üçün yamaq yaradarkən sizə faydalı olar (məsələn, bütün Google Play versiyaları üçün avtomatik yenilənməni söndürən yamaq).
"original" - bu model maskası yamaqlamaq üçün offset tampaq məqsədilə istifadə olunur.
{"original":"63 ?? ?? ?? 38 00 04 00 12 10 0F 00"}
Bu nümunədəki yaşıl baytlar sizin model maskanızı təşkil edir, sarı baytlar isə hər hansı bayt ola bilər (??, **)
"replaced" - bu, "original" bəyanatını izləyir və buradakılar offsetin üzərinə yazılır.
{"replaced":"12 00 6A W00 W01 W02 00 00 12 00 0F 00"}
Bu nümunədə yaşıl baytlar hədəf yerdəkilərin üzərinə yazılacaq. Sarı baytlar "search" icra olunanmazdan əvvəlki saxlanan baytlardır.
"name" - bu, konkret ad ilə kitabxanaya hədəflənmək üçün istifadə olunur (yuxarıda [LIB]-ə baxın)
S0, S1, SQ - müvaviq olaraq 0 (hex nömrələri çevirir: 43->03,54->04...) və ya 1 (hex nömrələri çevirir: 43->13,04->14...) smali dəyişənlərini yaradır, SQ isə hex-i belə çevirir: 34->44, 51->11 ...
Məsələn, belə bir dəyişən var: const/4 v?,0x00. Sual işarəsi "var" nömrəsinin naməlum olduğunu göstərir (məsələn, yeni versiyada dəyişdirilib), amma siz əminsiniz ki, bu "var" 0 təşkil edir və onu 1 etmək istəyirsiniz. Bu halda model belə olacaq:
{"original":"12 ?? ?? ?? ?? ??"}
{"replaced":"12 S1 ?? ?? ?? ??"}
Və əksinə, dəyişəni 0 olaraq təyin etmək:
{"original":"12 ?? ?? ?? ?? ??"}
{"replaced":"12 S0 ?? ?? ?? ??"}
"replace_from_file" - bu, "original" bəyanatını izləyir və fayldan baytların hansı offset-dəki baytların üstünə yazılacağını təyin edir (fayl xüsusi yamaq faylının yanında saxlanmalıdır).
{"replace_from_file":"array.bin"}
Bu, əvəzləmək üçün çox uzun şablonlar yazmağın qarşısını almaq məqsədilə edilir.
"insert" - Daxil etmək istədiyiniz məlumatın uzunluğu orijinal modeldən daha uzundursa, bunu istifadə edin.
Məsələn,
yamaqdan öncə fayl belədir: "chelpa end"
{"original":"63 68 65 6C 70 61"}
{"insert":"63 68 65 6c 70 61 61"}
yamaqdan sonra isə belə: "chelpaa end"

[LIB-ARMEABI], [LIB-ARMEABI-V7A], [LIB-ARM64-V8A], [LIB-MIPS] və ya [LIB-X86] - müvafiq olaraq /lib/armeabi/, /lib/armeabi-v7a/, /lib/arm64-v8a/, /lib/mips/, /lib/x86/ kitabxanaları üçün.

[ODEX-PATCH] - Artıq yamaqlanmış və odex yaradılmış proqramı yamaqlamaq üçün istifadə olunur. Məsələn, proqram "Lisenziya Yoxlamasını kənarlaşdır" ilə avtomatik rejimdə yamaqlanıb, amma siz Xüsusi yamaq istifadə etməklə əlavə dəyişikliklər də etmək istəyirsiniz. Əgər odex faylı dəyişikliklərsiz yaradılıbsa və yalnız bundan sonra yamaqlanacaqsa, [PACKAGE]-[CLASSES], [ODEX] və ya [CLASSES]-[ODEX] istifadə edin,
Məsələn:

[BEGIN]
[ODEX-PATCH]
{"original":"63 ?? ?? ?? 38 00 04 00 12 10 0F 00"}
{"replaced":"12 00 6A ?? ?? ?? 00 00 12 00 0F 00"}
[END]
Təbrik edirik! ODEX redaktə edildi!

[PACKAGE] olmadan [CLASSES] - Proqramın dalvik-keşini yamaqlayır. Unutmayın ki, sistem mütəmadi olaraq proqramların dalvik-keşini yeniləyir, bu zaman bütün dəyişikliklər yox olacaq. Ona görə də [ADD-BOOT] əlavə edilməlidir. Dalvik-keş üçün yamaq köhnəlir, bu etibarsız olur. Amma bu, ROM Toolbox üçün lazımlıdır, çünki bu, odex faylları ilə yaxşı işləmir.
Məsələn:

[BEGIN]
[CLASSES]
{"original":"63 ?? ?? ?? 38 00 04 00 12 10 0F 00"}
{"replaced":"12 00 6A ?? ?? ?? 00 00 12 00 0F 00"}
[ADD-BOOT]
[END]
Təbrik edirik!

[ODEX] - Dalvik-keşi /data/app/ qovluğuna kopyalayır və odex faylı olaraq adlandırır, sonra bütün yamaqları bu odex faylına tətbiq edir. Odex yoxlamadan səhv çıxacaq, yoxlama keçirmək olmaz, [PACKAGE] - [CLASSES] və odex fayl yaradılması fərqlidir.
Nümunə:

[BEGIN]
[ODEX]
{"original":"63 ?? ?? ?? 38 00 04 00 12 10 0F 00"}
{"replaced":"12 00 6A ?? ?? ?? 00 00 12 00 0F 00"}
[END]
Təbriklər!

[CLASSES]-[ODEX] - Dalvik-keşi yamaqlayır, sonra dalvik-keşi /data/app/ qovluğuna kopyalayır və odex faylı olaraq adlandır. Odex və dalvik-keşin yoxlanması səhv olacaq, yoxlamadan keçə bilməz, odex fayl yaradılması [PACKAGE] - [CLASSES]-dən fərqlidir.
Nümunə:

[BEGIN]
[CLASSES]
{"original":"63 ?? ?? ?? 38 00 04 00 12 10 0F 00"}
{"replaced":"12 00 6A ?? ?? ?? 00 00 12 00 0F 00"}
[ODEX]
[END]
Təbriklər!

[COMPONENT] - Proqramın elementlətini yandırır və ya söndürür.
Nümunə:

[BEGIN]
[COMPONENT]
{"disable":"com.superApp.adsActivity"}
{"enable":"com.superApp.fullVersion.Provider"}
{"disable":"com.android.vending.CHECK_LICENSE"}
[END]
Təbriklər!

[SQLITE] - Bəzən hədəf proqramın məlumat bazasında bir şeyi dəyişmək lazım olur, o zaman bu imkan sizə köməyə gələcək.
Nümunə:

[BEGIN]
Sınağı bərpa et
[SQLITE]
{"database":"/data/data/com.package.megaapp/databases/settings.db"}
{"execute":"DELETE FROM table_settings WHERE name = 'SETTING__LIC'"}
{"execute":"UPDATE table_settings SET UsedDays=0 WHERE name='Trial_set'"}
[END]
Təbriklər! Sizin Sınaq Müddətiniz yeninən qaytarıldı!

database - Cihahdakı məlumat bazasının yerini və ya Lucky Patcher-in faylı axtarıb tapması üçün məlumat bazasının yalnız adını istifadə edə bilərsiniz.
execute - SQLite sualı.

[SET_PERMISSIONS] - Proqramın məlumat qovluğundakı fayllar üçün "chmod permissions file_name" linux əmrinin bənzəridir.
Nümunə:

[BEGIN]
Sınağı bərpa et
[SET_PERMISSIONS]
{"file_name":"/files/stats"}
{"permissions":"777"}

[OTHER FILES]
{"name":"/files/stats"}

{"original":"4D 4D 46 31"}
{"replaced":"00 4D 46 30"}

[SET_PERMISSIONS]
{"file_name":"/files/stats"}
{"permissions":"444"}

[END]
Təbriklər! Sizin Sınaq Müddətiniz yenidən başladıldı!

[COPY_FILE] - Faylı Lucky Patcher qovluğundan təyin edilən yerə yeni ad ilə koplalayır.
Nümunə:

[BEGIN]
Pul ilə birlikdə faylı kopyala
[COPY_FILE]
{"file_name":"money_for_game.bin"}
{"to":"/data/data/game_package/files/settings.xml"}

[END]
Təbrik edirik! Fayl kopyalandı və pullara düzəliş edildi!