2012/10/10

Ажиллах явцад нөхөөс хийх боломж буюу MobileSubstrate болон зальжин програм


MobileSubstrate нь iOS системийг (iPhone, iPad, iPod гэх мэт) ажиллах явцад нөхөөс хийх боломжийг хөгжүүлэгчдэд олгодог тогтолцоо юм. Энэ тогтолцооны тусламжтайгаар jailbreak буюу шоронгоос оргуулсан iOS төхөөрөмж дээр Apple-аас албан ёсоор зөвшөөрөгдөөгүй хөгжүүлэлтийн боломжуудыг ашиглан програм хөгжүүлэх, аль эсвэл ямар нэг програмыг ажиллах явцад нь өөрчлөх, эсвэл сайжруулж өөр олон санаануудыг нэмэх зэргийг хийх боломжтой болгодог. Ажиллах явцад програмын ажиллагааг өөрчилдөг програмыг tweak буюу зальжин програм гэж хэлж болно.
iOS төхөөрөмжийг шоронгоос оргуулахын нэг давуу тал нь энэ юм. Хөгжүүлэгчдэд ямар нэг хязгаарлалтгүйгээр төрөл бүрийн програм хөгжүүлэх асар өргөн боломжийг олгож, хэрэглэгчдэд AppStore-д баригдалгүйгээр олон төрлийн програм суулгах нөхцөлийг бүрдүүлдэг. Зарим магадгүй утсаа эвдчихнэ гэж боддог аймхай нэг нь iOS төхөөрөмжийг шоронгоос оргуулах нь хууль ёсны бус шүү дээ гэж хэлэх л байх. Магадгүй улс улсаасаа хамаарч болох юм, гэхдээ л DMCA-н хүрээнд АНУ-д хууль ёсны гэж зөвшөөрөгдсөн байгаа юм. Энэ талаар болон шоронгоос оргуулах талаар уншигчид өөрсдөө дэлгэрүүлээд уншина биз.

Эргээд MobileSubstrate-н ажиллах зарчмыг товчхон тайлбарлавал:

1. Cydia нь MobileSubstrate-г суулгах үед cynject-г /etc/launchd.conf дотор нэмж өгдөг. Ингэснээр програм эсвэл демон бүрт тарилга болон орох боломжтой болдог. Мөн MobileSubstrate суух үед /Library/MobileSubstrate гэсэн сан үүсдэг бөгөөд түүн дотор динамик сан нь хадгалагддаг.

2. cynject нь SubstrateLauncher.dylib-г процесс 1-д (launchd) тарьж оруулж өгдөг бөгөөд энэ сан нь орчны хувьсагч DYLD_INSERT_LIBRARIES-г /Library/MobileSubstrate/ болгож тохируулах ажлыг хийдэг. Ерөнхийдөө "DYLD_INSERT_LIBRARIES" орчны хувьсагчийг төхөөрөмж ачаалахад launchd тохируулж өгдөг.

3. Энэ орчны хувьсагчийг dyld буюу динамик linker орчуулбал холбогч уншиж /Library/MobileSubstrate/ санг хайн mobilesubstrate.dylib-г дууддаг. Ингэхдээ:
    а. mobileloader (MobileSubstrate-н бүрэлдэхүүн хэсэг) нь өөрийгөө ажиллаж байгаа програм руу дууддаг бөгөөд DYLD_INSERT_LIBRARIES-г ашигладаг.
    б. mobileloader дараа нь mobilesubstrate-г дууддаг.

4. MobileSubstrate нь "DYLD_INSERT_LIBRARIES" орчны хувьсагч ашиглан бүх програмуудад тарилга болон ордог. Энэ нь /Library/MobileSubstrate/DynamicLibraries санд байгаа dylib-үүдийг дууддаг.

5. Tweak буюу зальжин програмууд нь динамик сангууд бөгөөд эдгээр нь /Library/MobileSubstrate/DynamicLibraries санд хадгалагдаж динамик холбогч ашиглан ажилладаг програм бүрийн хувьд тодорхой шүүлтүүрийн нөхцөл хангагдсан тохиолдолд дуудагддаг байна.

6. dylib буюу динамик сангууд нь тодорхой шүүлтүүртэй байх ёстой.

Шоронгоос оргуулсан төхөөрөмжид зориулж програм зохиохдоо Xcode-н GUI ашиглаж болохоос гадна зальжин програм хөгжүүлэхийг хялбаршуулсан тогтолцоонууд байдаг. Тэдгээрийн хамгийн түгээмэл нь Theos/Logos юм.
Энэ нь эх файл буюу .xm файлыг эмхэтгэж хөрвүүлэхдээ эхлээд logos (.pl) ашиглаж боловсруулан obj-C/C++ код болгодог бөгөөд үүнийг дараа нь theos хөрвүүлдэг.
Завсрын файлыг logos.pl ашиглан харж болох бөгөөд .m гэх зэргийн файл үүсгэдэг.
Жишээ нь: # /path/to/logos.pl Tweak.xm > Tweak.m гэх мэт

Дараагийн удаа цаг зав болбол хялбар Tweak хэрхэн хөгжүүлэх талаар бичье.

MobileSubstrate болон Theos/Logos-той холбоотой бусад мэдээллүүдийг интернэтээс хайж олоод уншина бизээ.

No comments:

Post a Comment