Sveiki, nusprendþiau paraðyti, kaip kuriami patchai. Si tema yra labiau skirta siek tiek paþengusiems, todël nenorëèiau, kad èia butu uþdavinëjami klausimai, tokie kaip pvz.: ,,kas yra patchas?" arba ,,ásiraðiau SYSGFX patchà ir jis kaþkodël neveikia". Tokiems klausimams yra atskiros temos. Pats turiu Sony Ericsson K750i, todël jam daugiausiai dëmesio èia ir skirsiu. Bet Tutorial tinka ir kitiems Sony Ericsson telefonams. Uþ sugadintus telefonus naudojantis ðiuo tut. neatsakau! Raðydami patchus i telefonà taip pat prarandate gamintojo garantija. Prieð kà nors keièiant pirma karta BÛTINA PASIDARYTI GDFS KOPIJÀ!!!!! Viskas kà að apraðau èia yra iðbandyta su mano telefonu, jis veikia be problemø. Patchus rekomenduoju áraðinëti su Far Manageriu. Þmonëms turintiems DB2020 telefonus (tokius kaip K800, W810) siûlau atsargiau eksperimentuoti, nes jø flash mikroschema turi fizine apsauga nuo tokiu eksperimentu ir paskui gali tekti neðt pas meistrus telefonà, kad flashà pakeistu. Jei klystu, pataisykit.
Pradësiu nuo patchø sandaros. Neþinantiems pasakysiu, kad VKP patchà atidaryti galite su paprastu tekstiniu redaktoriumi (pvz.: Notepadu). VKP patchø formatas yra tekstinis. Yra sutarta, kad kiekvienas patchas komentare, pradþioje (jis atskiriamas þenklu ";") turi turëti paraðyta telefono modelio pavadinimà, Firmware versija, kitoje eilutëje raðoma patcho paskirtis, sekanèioje eilutëje - áspëjimas (jei reikia), o dar sekanèioje patcho Autorius pasiraðo. Komentarai raðant patcha i telefonà neáraðomi. Paskui kitoje eilutëje (+44020000) yra nurodomas skaièius, kuri reikia pridëti prie adreso nurodomo þemiau, kad gauti adresà, kuris bus naudojamas telefone. Ðio skaièiaus galite nenurodyti, jei þemiau nurodomi adresai i kuriuos raðomas patchas telefone (pvz.:20A518+44020000=4422A518). Skaièius nurodomas sesioliktaineje (hexadecimal) skaièiavimo sistemoje. Apie ðeðioliktainæ skaièiavimo sistema apraðysiu þemiau. Po ðio skaièiaus yra raðomas adresas i kuri raðomas patcho kûnas nurodytas toje eilutëje, dedamas dvitaðkis, tarpas, nurodomi baitai, kurie jau yra áraðyti i telefonà (originalaus Firmwaro baitukai tuo adresu), tarpas ir tada raðoma, i kokius baitus norima juos pakeisti. [b]Bûtinai ðeðioliktainëje (hexadecimal) sistemoje[/b]. Originalus baitai nurodomi tam, kad programa raðanti patcha galëtu patikrinti ar tikrai toks firmwaras, ar nëra áraðyto patcho jau ten, patikrindama tiktai ta baitu seka. Jei kas nors nesutampa iðvedamas praneðimas: "Bytes mistmatch" arba koks nors panaðus tekstas. Tokiu atveju nerekomenduoju raðyti patcho, nes: 1. Prarandate galimybe iðtrinti patcha (tam taip pat naudojama ta originaliu baitu seka, jie suraðomi vietoje pakeistu baitu i telefonà) 2. Telefonas po netinkamo patcho gali nebeveikti ir tektu perraðyti firmware. Kaip pavyzdi galime paimti si patcha:
;K750i R1CA021 <-- Telefono modelis ir Firmware versija.
;Perkelia meniu.ml ir layout.xml i /tpa/user/other/Menu <-- Aprasymas.
;Nepamirsti persikelti failu i ta kataloga pries irasant patcha! <-- Áspëjimas.
;(c) 2007, AFaustas <-- Autorius.
+44020000 ;<-- Skaicius, kuri reikia prideti, kad gautum reikiama adresa ;telefone.
20A518: C4BA3F44 00691D45 ;<-- Patcho kunas. (ADRESAS: ORIGINALUS_BAITAI PAKEISTI_BAITAI)
28DAD4: 9CC01E44 00691D45 ;Koks nors komentaras gali buti parasytas, kad ir cia.
10370F4: C4BA3F44 00691D45
11B6900: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 2F007400700061002F00750073006500
11B6910: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 72002F006F0074006800650072002F00
11B6920: FFFFFFFFFFFFFFFFFFFF 6D0065006E0075000000
Patchus galima suskirstyti i paprastus (kuriuose pakeièiama tik tekstine informacija. Pvz.: katalogu adresai, koks nors tekstas, reikiamu failu pavadinimai, adresai...), ir paþangesnius (advanced, kurie yra paraðyti assembleriu arba C).
Dabar apie telefono atminties adresavimà. Tie kam yra tekæ flashinti telefonà su Far Manageriu (CID 36 savininkam áprastai) yra tekæ susidurti su adresu nurodymu. Reikia nurodyti, kur raðyti MAIN ir FS (að asmeniðkai naudoju CID49 ir pats nebandþiau flashinti telefono su Far, todël nerekomenduoju bandyti, situacija nurodau kaip pavyzdi). Adresai turi buti teisingi, nes kitaip galima sugadinti EROM arba GDFS. O adresai ant k750i yra tokie:
Kas? |
Start |
End |
Lenght (ilgis) |
MAIN Firmware |
44020000 |
45400000 |
013E0000 |
FS |
45400000 |
45F00000 |
00B00000 |
Ant kitu telefonu jie gali skirtis. Iðtrynus MAIN firmware pradþia visai (arba visa MAIN ir FS), telefonà dar galima atgaivinti namu sàlygomis arba servise nesunkiai (nors èia tik mano nuomone, paèiam taip nebuvo nutikæ J). Todël galima daryti iðvadà, kad firmware nëra bootinis. Bootinis yra EROM, esantis adresu 44000000-44020000. Ilgis: 20000 arba 128KB. [b]Jo perraðinëti NEREKOMENDUOJU, nebent tam yra labai rimta prieþastis (pvz.: reikia cid49 brown paversti i red ar panaðiai). Dël ádomumo galite ja nuskaityti su Far Manageriu patyrinëjimui. EROM telefone yra kaþkas panaðaus kaip kompiuteryje EEPROM, kuriame saugomi BIOS (dydis 128KB-256KB). Kai ájungiant telefonà bootinimas ið EROM sëkmingai praeina, tai EROM kreipiasi i MAIN Firmware ir jam perduoda valdymà. Jei EROM turinys sugadintas, tai telefonas visai nebeásijungs ir namu sàlygomis su paprastu USB kabeliu jo flashinti nebegalësite. Tam prireiks serviso kabelio, kuriam nebûtina, kad EROM butu sveikas. Kai kraunasi MAIN firmware, tai MAIN reikiamu failu ieðko telefono Failu Sistemoje, kuri yra padalinta per du flashus: vienas 32MB, prie kurio tiesioginio priëjimo neturime per FAR t.y. negalime nuskaityti i RAW image, o kitas tai 12MB gabaliukas esantis tame paèiame flashe, kuriame yra MAIN, GDFS ir gal bût EROM . Ant telefono dëþutes matosi, kad nurodyta telefono atminties talpa ne 32MB, o 34MB kas man anksèiau atrodë keista. Dabar, mano nuomone, yra 32MB + 12MB = 44MB - 10MB (uþima sisteminiai failai) = 34MB!!! O dar vienas ádomus dalykas, kad MobyExplorer C: disko dydi rodo 40MB (reiðkias particijos /tpa dydis yra 40MB, failu sistema FAT16). Kiti 4MB naudojami likusiu 4 particiju, kuriuose yra FAT12 failu sistema. Particiju sàraðas:
Eil. |
Mount pointas |
Paskirtis |
FS |
Dydis |
---|---|---|---|---|
1. |
/tpa |
Sisteminiai ir vartotojo failai |
FAT16 |
40MB |
2. |
/card |
Atminties kortele. |
FAT32 |
Korteles dydis |
3. |
/system |
? Sistemine ? |
FAT12 |
??MB |
4. |
/IFS |
?Sistemine ? |
FAT12 |
??MB |
5. |
/smsdata |
Vartotojo SMS su limitu |
FAT12 |
??MB |
6. |
/tpa/???? |
Keðas |
FAT12 |
??MB |
Po FS eina GDFS, kuriame saugomi unikalus telefono nustatymai ir duomenys, kuriuos gamintojas paraðë specialiai tam telefonui, taip pat IMEI. Pastebëjau, kad ten dar saugomi vartotojo pakeisti kai kurie nustatymai ir telefono numeriai. GDFS sandara, kam ádomu. Tiktai ant DB2010 platformos:
DB2010 variables:
Block 0x00 Unit 0x0006 Checksummed variable (a.k.a. GD_COPS_Dynamic1Variable), checked by phone security
Block 0x00 Unit 0x0009 Battery fix for K750 goes here
Block 0x00 Unit 0x000E Checksummed, SIM-locks etc. (a.k.a. GD_COPS_Dynamic2Variable), checked by phone security
Block 0x00 Unit 0x0013 Checksummed static variable (a.k.a. GD_COPS_StaticVariable), checked by phone security
Block 0x00 Unit 0x0018 Protected customer settings (a.k.a. GD_COPS_ProtectedCustomerSettings), checked by phone security
Block 0x00 Unit 0x00AA Protected platform settings, bandlocks (a.k.a. GD_Protected_PlatformSettings), checked by phone security
Block 0x00 Unit 0x0099 Length of last call
Block 0x00 Unit 0x009B Total call time
Block 0x00 Unit 0x009D Total outgoing call time
Block 0x00 Unit 0x00B4 Number of sent SMS
Block 0x00 Unit 0x05DE Phone name
Block 0x02 Unit 0x0994 CID number
Block 0x02 Unit 0x0C8F Phone name (a.k.a. GD_PHONE_NAME), checked by SEUS
Block 0x02 Unit 0x0C90 Bluetooth phone name
Block 0x02 Unit 0x0CBB Language pack (a.k.a. GD_CMZ_LANGUAGE_PACKAGE), checked by SEUS
Block 0x02 Unit 0x0CBC CDA Article "CDA102338/10" (a.k.a. GD_CMZ_CDA_ARTICLE), checked by SEUS
Block 0x02 Unit 0x0CBD CDA Version "R15A" (a.k.a. GD_CMZ_CDA_VERSION), checked by SEUS
Block 0x02 Unit 0x0CBE Default Article "cxc125953" (a.k.a. GD_CMZ_DEFAULT_ARTICLE), checked by SEUS
Block 0x02 Unit 0x0CBF Default Version "R1BC002" (a.k.a. GD_CMZ_DEFAULT_VERSION), checked by SEUS
Block 0x02 Unit 0x0CC6 TEMS Settings (a.k.a. GD_TEMS_SETTINGS), SEUS?
Block 0x02 Unit 0x0CE9 CXC Article (a.k.a. GD_MAPP_CXC_ARTICLE), SEUS?
Block 0x02 Unit 0x0CEA CXC Version (a.k.a. GD_MAPP_CXC_VERSION), SEUS?
Block 0x02 Unit 0x0CF2 Complete phone name "Sony Ericsson K750".
Visas GDFS yra 1MB dydþio. Adresas: 45F00000-46000000. Ilgis: 0x00100000, 1MB. Dabar visa tai apie kà paraðiau galite pamatyti ðioje lentelëje (lentelë pravers ateityje):
FLASH |
Start |
End |
Ilgis (Hex) |
Ilgis |
EROM |
44000000 |
44020000 |
00020000 |
128KB |
Firmware |
44020000 |
45400000 |
013E0000 |
20MB |
FS |
45400000 |
45F00000 |
00B00000 |
12MB |
GDFS |
45F00000 |
46000000 |
00100000 |
1MB |
Flasho Pabaiga |
46000000 |
- |
- |
- |
FS (Part 2) |
50000000 |
51FFFFFF |
01FFFFFF |
32MB |
Flasho Pabaiga |
52000000 |
- |
- |
- |
Visas Firmware |
44000000 |
46000000 |
02000000 |
32MB |
Kas yra kitose atminties vietose - neþinau. Internete irgi nieko rasti neiðëjo. Tai þino, tikriausiai, tik pats gamintojas. Su FAR Manager galime nuskaityti tiktai nuo 44000000 iki 46000000. Ilgis: 02000000 (32MB). Norëdami nuskaityti atminti sujunkite telefonà su FAR Manageriu, eikite i FLASH, tada kopijuokite ten esanti vieninteli failà (spauskite F5 COPY), papraðo adreso. Nurodykite 44020000 - 02000000. Spauskite "Read". Toki RAW image galite vëliau vël suraðyti i telefonà (gaunasi toks kaip backupas), bet jei norit backupint viskà, tai turite nuskaityti ir FS. Tam paprasèiausiai nueikite i FS, uzselectinkit viska ir kopijuokite. Tada turite visiðkai visa backupa, kuri galite atstyti i telefonà. Atstatydami nurodykite tuos paèius adresus. Toks backupas dël saugumo atstatant nesaugo tiktai EROM. Jei norite nuskaityti telefono atminti kitiems tikslams (pavyzdþiui disassemblinimui), tai Far Manageryje nurodykite 44000000 - 02000000. Dar vienas LABAI ádomus dalykas: firmware failas, kuris flashinasi i telefonà baigiasi ties 0x451CB240. 45400000-451CB240=234DC0 dec - 2313664bytes/1024^2=~2.21MB - gaunasi laisvos, visiðkai niekieno nenaudojamos vietos. Ta vieta tikriausiai gamintojas paliko laisva tam, kad jeigu reikëtu kurti kokia geresne firmware versija, kuri uþimtø daugiau vietos galëtø ateityje panaudoti ta laisva vieta. Ji taip ir liko nepanaudota. Bet mes galime i ta vieta raðyti didelius, kokius tik norime patchus MAIN firmwareje nurodydami tiktai adresà iki jø. Po áprasto firmware perraðymo ið tos vietos niekas neiðsitrina, todël perraðius firmware ir raðant patchus, kurie ten rasosi galima pamatyti praneðimà, kad nesutampa baitai ("Bytes mistmach" arba kas nors panaðaus). Manau, kad prieð perraðinëjant firmware bûtø gerai i ta vieta dël tvarkos suraðyti FF, todël galima sukurti RAW failà koki nors 1MB dydþio, kuriame butu vien tik vienetai ir áraðyti i ta tuðèia vieta, o tada iðkarto perraðyti firmware. Paèiam dar neteko bandyti.
Prieð pradedant raðyti apie pati patchu kûrimà, dar siek tiek teorijos (mokantys hexadecimal ir binary gali praleisti). Tai yra reikalinga, kad galëtume suprasti, kaip sudarytas patcho kûnas. Skaièiavimo sistemos bûna: Binary (dvejetainë), Octal (aðtuntainë), Decimal (deðimtainë) ir Hexadecimal (ðeðioliktainë). Kai kur jos bûna nurodomos trimis pirmomis raidëmis (BIN, OCT, DEC, HEX). Ið jø reikës mokëti binary ir hexadecimal. Decimal mes jau mokame, jà áprastai skaièiuojame. Dabar pabandysiu paaiðkint kaip naudoti Binary. Kompiuteryje informacija saugoma Binary (dvejatainiu) pavidalu. Tikriausiai þinote, kad 1MB = 1024KB, 1KB = 1024B, 1B = 8 Bitai. Vienas bitas gali turëti reikðmæ 0 arba 1. Reikia þinoti, kad 1 baite gali buti skaièius nuo [b]0[/b] iki [b]255[/b]. Reiðkias 1 baitas gali turëti 256 skirtingas reikðmes. Pavyzdþiui baitas, kurio reikðmë yra 173 decimal pavertus i binary butu 10101101. Vertimas atliekamas taip:
Reikðmë --> 128 64 32 16 8 4 2 1
Ar atëmus teigiamas? Taip=1 1 0 1 0 1 1 0 1
NE=0
Ið deðines i kaire skaièiaus galima reikðme baite didëja dvigubai. Turime skaièiø 173. Reikia ið decimal paversti i binary. Pradedame nuo 128 atiminëti, kol nieko nebeliks, jei atëmus gaunasi neigiamas, tai raðome 0 ir pereiname prie sekanèio skaièiaus. 173-128=45; 45-64=(Gaunasi neigiamas, raðome 0 ir nieko neatiminëjam.); 45-32=13; 13-16=Neigiamas; 13-8=5; 5-4=1; 1-2=Neigiamas; 1-1=0!. Kitokia situacija: reikia ið BIN --> DEC. Turime skaièiø 01011101. Verèiame:
Reikðme --> 128 64 32 16 8 4 2 1
Skaicius, kuri reikia versti --> 0 1 0 1 1 1 0 1
O dabar paprasciausiai sudedame tas reiksmes po kuriomis yra vienetai. 64+16+8+4+1=93. Pasipraktikuokite daugiau ir tada skaitykite toliau.
Dabar pabandysiu paaiskinti kaip naudoti hexadecimal, kuriuo ir buna parasytas patcho kunas VKP patche. Hexadecimal naudojamas tam, kad sutrumpinti ilga ir zmogui nelabai patogu ir sunkiai suprantama binary skaiciu. Kad parasyti 10101101 uztenka parasyti tiktai AD (kartais pries hexadecimal skaiciu prirasoma simboliai "0x". Jie padeda zmogui suprasti, kad sitos raides yra ne siaip raides, o sesioliktainis skaicius. Todel galime rasyti 0xAD). Taip pat is binary yra patogu versti Hexadecimal ir atvirksciai. Hexadecimal skaiciuje esancios raides is tikruju yra to skaitmens pratesimas. Desimtaineje sistemoje yra tik nuo 0 iki 9, o sesioliktaineje - nuo 0 iki F. Po skaitmens 9 einantis skaitmuo A reiskia 10, B - 11 , C - 12, ..., F - 15. Skaicius gali buti nuo 0 iki 15 viename hexadecimal skaitmenyje. Gaunasi, kad sesioliktainis skaitmuo gali tureti 16 kombinaciju. Vertimui reiketu moketi sita lentele:
DEC |
HEX |
BIN |
0 |
0 |
0000 |
1 |
1 |
0001 |
2 |
2 |
0010 |
3 |
3 |
0011 |
4 |
4 |
0100 |
5 |
5 |
0101 |
6 |
6 |
0110 |
7 |
7 |
0111 |
8 |
8 |
1000 |
9 |
9 |
1001 |
10 |
A |
1010 |
11 |
B |
1011 |
12 |
C |
1100 |
13 |
D |
1101 |
14 |
E |
1110 |
15 |
F |
1111 |
Vienas hexadecimal skaitmuo yra lygus 4 bitams. Vertimas BIN --> HEX. Turime skaiciu 10110011. Vertimas: 1011 pagal lentele yra B ir 0011 = 3. Atsakymas: B3. Vertimas HEX --> BIN. Turime skaiciu AF. A - 1010; F - 1111. Atsakymas: 10101111. Vertimas HEX --> DEC. Turime skaiciu AF. A pagal lentele 10 (DEC). F - 15 (DEC). 10*16+15=175. Vertimas DEC --> HEX. Turime skaiciu 192. Vertimas: 1.) Verciame i binary:
128 64 32 16 8 4 2 1
192 --> 1 1 0 0 0 0 0 0
2.) Verèiam i hexadecimal: 1100 - C; 0000 - 0. Atsakymas: C0.
Pasipraktikuokite ir tada galesite skaityti toliau. Daugiau informacijos galite rasti per GOOGLE arba Wikipedia.
Dabar jau galite mokytis kurti patchus. Pradesime nuo to, kad turite gauti firmware versija is kur nors (parsisiusti is interneto), kuri yra jusu telefone. Tada BUTINAI jos MAIN faila reikia sukonvertuoti i RAW. Tai galite atlikti su GExtract. RAW faila issaugokite i saknini disko kataloga arba netoli nuo jo esanti kataloga (Mano atveju tai bus C:TMPK750.raw). Atidarykite sita RAW faila su savo megstamu HEX redaktoriumi. Jei tokio neturite parsisiuskite Hex It, ji galite parsisiusti is ***LINK***. Isarchivuokite ji i kur nors netoli nuo sakninio katalogo esanti kataloga. Paleiskite hexitw.exe. Kai paprasys nurodyti faila, tai nurodykite ta MAIN Firmware RAW faila. Turetumete pamatyti firmware vidu:
[pav]
Dabar galima pradeti nagrineti firmware. As naudoju firmware R1CA021 todel jai skirsiu daugiausiai demesio. Spauskite F7. Galima yvesti paieskos zodzius. As nusprendziau ivesti "m e n u . m l". Reikia ivesti i S-ASC (SU TARPAIS). Tada kur S-Hex visus tarpus (20 hex) reikia pakeisti i 00. Tai butina, kadangi stringas parasytas unikodu. Spauskite ENTER. Man pasiseke surasti "menu.ml". Cia yra nurodomas menu failo pavadinimas. Man pavyzdziui nepatinka sitas pavadinimas ir as noriu padaryti pavadinima "mano.mn". Jeigu Jus nenorite keisti adresu iki stringo, tai stringas turi buti butinai tokio paties ilgio arba trumpesnis, negu originalus. Pries rasant patcha nusprenziau patikrinti, ar nera daugiau tokiu stringu Firmwareje. Nera. Dabar rasome patcha:
;K750i SW-R1CA021
;
;Patchas pakeicia naudojamo meniu failo varda is menu.ml i mano.mn
;
;Sitas patchas buvo sukurtas TIKTAI pazintiniais tikslais. Jis yra nepatikrintas
;ir niekam nerekomenduoju jo naudoti!
;
;(C) AFaustas.
+44020000
;Pirma raide "m" yra adresu 28DA94, todel ji ir nurodome.
28DA94: 6D0065006E0075002E006D006C000000 6D0061006E006F002E006D006E000000
Kadangi stringas "m e n u . m l" hexadecimal yra isreikstas taip: 6D 00 65 00 6E 00 75 00 2E 00 6D 00 6C 00 00 00,
tai mes ji po dvitaskio ir tarpo prie adreso nurodome kaip originalius baitus, istrindami tarpus tarp ju. Tada tarpas
ir parasome pakeista stringa. Siuo atveju Hex It redaktoriuje galima pirma ivesti pakeista stringa, kad pamatytumete kaip jis atrodo sesioliktainis. Keisdami stringa nepamirskite, kad turi buti 00 hex tarp simboliu, nes unikodas. Pakeistas stringas atrodo taip: 6D 00 61 00 6E 00 6F 00 2E 00 6D 00 6E 00 00 00. Istrinam tarpus ir irasome i savo patcha. Abu stringai butinai turi buti tokio pacio ilgio, kitaip patchinimo programos rodys klaida. Jeigu adresas arba originalus baitai bus nurodyti netokie, kokie is tikruju ten yra, tai bus rodoma klaida "bytes mistmach" ar kas nors panasaus. Tokio patcho rasyti [b]NEGALIMA[/B].
Dabar apie tai kaip keiciami adresai. Tyrinedamas firmware as atradau, kaip galima vietoje vienu nurodytu komponentu, kurie paleidziami is meniu (pavyzdziui Nustatymo wizarda - SetupWizard_Id) pakeisti i kitus (pvz. i koki nors pazangesni patcha). Tada as nuspaudziau mygtuka "Home", ir spaudziau F7 noredamas pradeti paieska. I "S-ASC" ivedziau "S e t u p W i z", tada "S-HEX" pakeiciau visus 20 HEX i 00 HEX. Ir nuspaudziau ENTER. Viena rezultata radau, ieskau daugiau, HexIT nieko daugiau nesurado. Tada pastaciau kursoriu ties "S" raide to vienintelio rasto rezultato ir pasiziurejau, koks virsui rodomas adresas. O jis yra 003FFEC2. Kadangi telefone toks adresas butu neteisingas, tai prie 3FFEC2 + 44020000 = 4441FEC2. Reikia atsiminti, kad adresai masinineje kalboje buna rasomi atvirksciai pvz.: 4441FEC2 turetu buti C2FE4144. Toliau einame prie HexIT ir spauskite HOME, kad gristume i pradzia. Tada vel spauskite F7 ir paieskoje ties "S-HEX" iveskite adresa masinine kalba: C2FE4144. Spauskite ENTER. Rado viena rezultata! Paziurekite ar nera daugiau. Nera. Rastas rezultatas turi atrodyti taip:
[pav]
Paveikslelyje adresas apibrauktas raudonai rodo i meniu komponento pavadinima naudojama MENU.ML faile. Adresas apibrauktas geltonai rodo i komponento (siuo atveju Setup Wizardo) programos pradzia. Reiketu zinoti, kad koks nors komponentas dazniausiai prasideda B5 hex. B5 assembleriu reikstu PUSH. Tada nurodomi registrai. PUSH reiskia, kad reikia padaryti nurodytu registru Backupa. Noredami paziureti i setupwiz galite eiti adresu apibrauktu geltonai. Tada reikia is to adreso - 44EA9D95 - 44020000 = E89D95. Spauskite F5 hexit hex redaktoriuje ir iveskite gauta adresa. Kursorius atsistoja eiluteje "10 BD 00 00 00 >B5< 41 F0 21 FE 00 06 03 D1 00 21" ties skaiciu B5 reiskencio PUSH. Paziureje galite gristi atgal. Pakeite komponento adresa 95 9D EA 44 i koki nors 10 00 10 45 telefonas paleidus Setup Wizarda is meniu kreiptusi i 45100010 ir nerades ten nieko pakibtu. Jeigu ten parasyti koki pazangesni patcha, kuris prasideda B5 ir yra parasytas be klaidu, tai iskarto atsistojus ant to meniu punkto bus paleidziamas tas patchas. Jei norite kad butu paleidziamas paspaudus, tai turi buti parasyta paciame advanced patche. Kol kas pazintiniais tikslais parodysiu kaip atrodo tas patchas, kuris pakeicia adresa is 95 9D EA 44 i 10 00 10 45:
;K750i SW-R1CA021
;Sis patchas pasirinkus Setup Wizard pakabina telefona.
;
;Patchas cia yra tik pazintiniais tikslais, visiskai neverta jo rasyti i telefona.
;(c)AFaustas
+44020000
28D190: 959DEA44 10001045
Dabar siek tiek paaiskinsiu apie firmware disassemblinima ir pazangesniu patchu kurima. Pazangesnius patchus galite rasyti tiktai jei mokate kazkiek programuoti Assembleriu arba C. Jei dar nemokate, tai siulau ieskotis knygu internete arba knygyne apie programavima. As pats neseniai pradejau mokytis programavimo. Dabar mokausi assemblerio (kol kas ant 6502) ir C++. Norintiems ir pasirizusiems mokytis programavimo galiu patarti pradeti nuo 6502 assemblerio (labai paprastai jis yra issaiskintas http://www.profesorandpat.org ), suprasti kaip veikia kompiuteris zemame lygyje ir tada gavus pagrindus galima mokytis c arba c++ ir toliau gilinti zinias apie asembleri. Igijus rasymo assembleriu igudziu galima pereiti prie ARM assemblerio arba x86. Siuo atveju mums bus reikalingas ARM assembleris, nes SE naudoja ARM procesoriu. K750i ARM procesorius yra 112MHz. Visai nemokantiems programavimo kol kas dar siulau nebandyti rasyti pazangesniu patchu, nes uzsikabinus bus daugiau sugaisto laiko negu naudos. Geriau ta laika paskirti tam, kad ismokti programuoti nuo pradziu ir nuosekliai.
Pradesiu nuo Firmware disassemblinimo naudojant IDA PRO advanced 5.2. Pirma su Far Manageriu nuskaitykite savo firmware nuo 44000000, ilgis 02000000 (32MB). Instaliave IDA galite ja paleisti. Spauskite NEW. Lenteleje "New disassembly database" spauskite "CANCEL". Spaudziate File --> Open. Pasirinkite savo nuskaityta RAW faila. Lange "Load New file" processor type pasirinkite ARM710a. Spaudziate SET ir OK. Lenteleje "Disassembly memory organization" "ROM start address" nurodykite 0x44000000. "ROM Size" nurodykite 0x02000000. "Input file" nurodykite 0x44000000, "file offset" nurodykite 0x00000000, "loading size" nurodykite 0x02000000. Spauskite OK. Palaukite. Persiskaitykite informacija ir spauskite OK. Galite disassemblinti firmware. "C" - disassemblina, "a" - padaro stringa ascii, "u" - naudojamas gristi i atgal, blogai disassemblinus. Advanced patchus galite rasyti tekstiniame redaktoriuje ir kompiliuoti su armpc (***linkas parsisiusti***). Man pavyko su IDA gauti toki, paredagavau ir dabar jis skirtas, kad pasirinkus is meniu butu galima paleist norima patcha:
include "x.inc" ;Reikia nurodyti kiekviename patche. load equ 0x451D4CFE ;kur yra sitas patchas. prog equ 0x451D4B40 ;adresas, kur yra patchas, kuri reikia paleisti. org load push [lr] ; Pradzia, backupina LR BL tikr ; Tikriausiai tikrina ar paspaustas? .Neveikia LSL R0, R0, 0x18 BNE nieko ; Jei neuzselectinta... nop ldr r1, oxo ; Isvalo registrus... ldr r0, oxo2 BL prog ; Paleidzia programa. DCD 00h, 00h ; Pabaiga nieko: pop [pc] DCD 00h, 00h ; ---------------------------------------- tikr: ADD R1,R0, 0 ;Tikriausiai tikrina ar paspaustas? MOV R0, 3 CMP R1, 0 ;JEIGU R0=0, tai eina i nzn. BEQ nzn LDRB R0, [R1, 0xA] ;Nezinau nzn: BX LR ;Gal but atstato LR is backupo. DCD 00h, 00h align 4 oxo dw 0x0 oxo2 dw 0x0
Reikia nepamirsti palikti laisvos vietos pradzioje visur. Parasius toki patcha galima ji kompiliuoti. Paleiskite Command Prompta. Nueikite i armpc kataloga. Paleiskite FASMARM.EXE. Sintakse tokia: fasmarm source [output]. Outputas yra RAW formatu. Jei sukompiliuoja sekmingai pamatysite pranesima:
flat assembler for ARM version 1.66
2 passes, 0.3 seconds, 78 bytes.
Galite perziureti sukompiliuota faila su hex redaktoriumi. Noredami padaryti patcha galite i patcha rasyti arba sesioliktaini koda is hex redaktoriaus, arba naudotis mp.exe utilitu. Mp sintakse yra tokia: mp.exe visas_firmware raw_patch fw-adresas44000000 file.vkp. Mano atveju reikejo ivesti mp all.raw komp.raw 44000000 pabaig.vkp. Gaunasi rezultatas:
+44000000
11d4cfe: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 00B500F010F8000608D1C0460B490B48
11d4d0e: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF717FF000000000000000000BD0000
11d4d1e: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 000000000000011C0320002900D0887A
11d4d2e: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 70470000000000000000000000000000
11d4d3e: FFFF 0000
Galite ji koreguoti kaip norite dabar. Patchus taip pat galima rasyti ir su C kalba, bet as jos dar nemoku, todel ir neaprasau kaip tai daroma.
Rasydamas sita tutorial nesinaudojau literatura. Kai pats visa tai bandziau ismokti, tai ieskojau per google informacijos, buvau nekarta uzejes i SE-NSE forumus. Ten radau nemazai Atsakymu i problemas su kuriomis susidurdavau. Pagal SE-NSE forumuose rasta tema apie disassemblinta EROM galejau pasitikslinti susidaryta lentele "K750i logine atminties struktura". Adresai (MAIN ir FS) taip pat is SE-NSE forumuose rasto aprasymo, kaip perflashinti telefona su Far Manager. Dar yra geras rusiskas straipsnis apie K700 firmware disassemblinima, bet kadangi nemoku rusu kalbos, tai nelabai pasinaudojau juo, buvau tiktai issivertes su babelfish i anglu kalba ir siek tiek pasiskaiciau. Linkas: http://www.sony-ericsson.ru/forums2/lofiversion/index.php/t23957-150.html . Pats apie patchu kurima savarankiskai ismokau per ~1men. Kai baigesi mano telefono garantija, tai is karto pabandziau ji patchinti. Sekancia diena jau norejau sukurti pats patcha jam, nes vien patchu irasinejimas man didelio malonumo nesukele. Pirma karta patcha sukuriau nesekmingai. Bet paskui viska dariau atsargiau ir sekesi gerai. Mano saitas: http://afaustas.dar.lt . Kolkas tusias.
Visiems linkiu sëkmes kuriant naujus ir gerus patchus!!!
Vardas: lala | Data: 2025-09-07 |
Komentaras: lalala |
Vardas: qq | Data: 2025-09-07 |
Komentaras: qq |
Vardas: Richardinaks | Data: 2025-09-07 |
Komentaras: kraken ссылка тор kraken onion, kraken onion ссылка, kraken onion зеркала, kraken рабочая ссылка onion, сайт kraken onion, kraken darknet, kraken darknet market, kraken darknet ссылка, сайт kraken darknet, kraken актуальные ссылки, кракен ссылка kraken, kraken официальные ссылки, kraken ссылка тор, kraken ссылка зеркало, kraken ссылка на сайт, kraken онион, kraken онион тор, кракен онион, кракен онион тор, кракен онион зеркало, кракен даркнет маркет, кракен darknet, кракен onion, кракен ссылка onion, кракен onion сайт, kra ссылка, kraken сайт, kraken актуальные ссылки, kraken зеркало, kraken ссылка зеркало, kraken зеркало рабочее, актуальные зеркала kraken, kraken сайт зеркала, kraken маркетплейс зеркало, кракен ссылка, кракен даркнет |
Vardas: AFaustas | Data: 2025-09-07 |
Komentaras: @Jimmybek your university must be the worst in the world if you have to spam on random websites to get some attention. |
Vardas: Jimmybek | Data: 2025-05-13 |
Komentaras: Francisk Skorina https://www.gsu.by Gomel State University. One of the leading academic and scientific-research centers of the Belarus. There are 12 Faculties at the University, 2 scientific and research institutes. Higher education in 35 specialities of the 1st degree of education and 22 specialities. |