αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αžŸαŸαž…αž€αŸ’αžαžΈαžŽαŸ‚αž“αžΆαŸ†

αž“αŸ…αž…αž»αž„αžαŸ‚αž˜αžΈαž“αžΆαž™αžΎαž„ αžšαžΆαž™αž€αžΆαžšαžŽαŸαžŠαŸ‚αž›αž–αž½αž€αž‚αŸαž”αžΆαž“αžšαž€αžƒαžΎαž‰αžŸαž˜αžαŸ’αžαž—αžΆαž–αž›αžΆαž€αŸ‹αž€αŸ†αž”αžΆαŸ†αž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΌαžŠαžŠαŸ‚αž›αž˜αž·αž“αž”αžΆαž“αž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser αŸ” αžαŸ’αž„αŸƒαž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž›αž˜αŸ’αž’αž·αžαž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž€αžΆαžšαž‘αžΆαž‰αž™αž€αž“αŸαŸ‡αž€αžΎαžαž‘αžΎαž„ αž“αž·αž„αžšαž”αŸ€αž”αžŠαŸ‚αž›αž–αž½αž€ Hacker αž’αžΆαž…αž”αŸ’αžšαžΎαžœαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸ„αž›αž”αŸ†αžŽαž„αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαŸ”

αž˜αž½αž™αžšαž™αŸˆαž˜αž»αž“ UC Browser αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžŸαž–αŸ’αžœαž•αŸ’αžŸαžΆαž™ αž“αž·αž„αž…αŸ‚αž€αž…αžΆαž™αž™αŸ‰αžΆαž„αž‚αžƒαŸ’αž›αžΎαž“αŸ– αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αž“αŸ…αž›αžΎαž§αž”αž€αžšαžŽαŸαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αŸαžšαŸ„αž‚ αž…αŸ‚αž€αž…αžΆαž™αž–αžΈαž‚αŸαž αž‘αŸ†αž–αŸαžšαž•αŸ’αžŸαŸαž„αŸ—αž€αŸ’αžšαŸ„αž˜αž€αžΆαžšαž€αŸ’αž›αŸ‚αž„αž”αž“αŸ’αž›αŸ†αž―αž€αžŸαžΆαžšαžœαžΈαžŠαŸαž’αžΌ (αž§αž‘αžΆαž αžšαžŽαŸ αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‚αž·αžαžαžΆαž–αž½αž€αž‚αŸαž€αŸ†αž–αž»αž„αž‘αžΆαž‰αž™αž€ αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αžœαžΈαžŠαŸαž’αžΌαž’αžΆαžŸαž’αžΆαž—αžΆαžŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚ αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“ APK αž‡αžΆαž˜αž½αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αžαžΆαž˜αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαž“αŸαŸ‡) αž”αžΆαž“αž”αŸ’αžšαžΎαž”αžŠαžΆαžŠαŸαž‚αž½αžšαž±αŸ’αž™αžαŸ’αž›αžΆαž…αžŠαŸ‚αž›αž˜αžΆαž“αžŸαžΆαžšαžŠαŸ‚αž›αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αžαžΆαž˜αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαž αž½αžŸαžŸαž˜αŸαž™ αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡ αž“αž·αž„αž’αŸ’αžœαžΈαŸ—αžŠαžΌαž…αž“αŸ„αŸ‡αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž»αž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€ UC αž•αŸ’αž›αžΌαžœαž€αžΆαžšαž“αŸ…αž›αžΎ VK αž˜αžΆαž“ αž”αŸ’αžšαž’αžΆαž“αž”αž‘αžŠαŸ‚αž›αž€αŸ’αž“αž»αž„αž“αŸ„αŸ‡αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αžΆαž…αžαŸ’αž’αžΌαž‰αžαŸ’αž’αŸ‚αžšαž’αŸ†αž–αžΈαž€αžΆαžšαž•αŸ’αžŸαžΆαž™αž–αžΆαžŽαž·αž‡αŸ’αž‡αž€αž˜αŸ’αž˜αž˜αž·αž“αž™αž»αžαŸ’αžαž·αž’αž˜αŸŒ αž˜αžΆαž“αž§αž‘αžΆαž αžšαžŽαŸαž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αŸ” αž“αŸ…αž†αŸ’αž“αžΆαŸ† 2016 αž˜αžΆαž“αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚ αžœαžΈαžŠαŸαž’αžΌαž•αŸ’αžŸαžΆαž™αž–αžΆαžŽαž·αž‡αŸ’αž‡αž€αž˜αŸ’αž˜ αž‡αžΆαž—αžΆαžŸαžΆαžšαž»αžŸαŸ’αžŸαžΈ (αž”αžΆαž‘ αž€αžΆαžšαž•αŸ’αžŸαžΆαž™αž–αžΆαžŽαž·αž‡αŸ’αž‡αž€αž˜αŸ’αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αžαžΆαž˜αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αž)αŸ”

αž“αŸ…αž–αŸαž›αžŸαžšαžŸαŸαžš UC Browser αž˜αžΆαž“αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž‡αžΆαž„ 500 αž“αŸ…αž›αžΎ Google Play αŸ” αž“αŸαŸ‡αž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαžŽαžΆαžŸαŸ‹ - αž˜αžΆαž“αžαŸ‚ Google Chrome αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αž˜αžΆαž“αž…αŸ’αžšαžΎαž“αž‘αŸ€αžαŸ” αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™ αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž€αžΆαžšαžαŸ’αž’αžΌαž‰αžαŸ’αž’αŸ‚αžšαž‡αžΆαž…αŸ’αžšαžΎαž“αž’αŸ†αž–αžΈαž€αžΆαžšαž•αŸ’αžŸαžΆαž™αž–αžΆαžŽαž·αž‡αŸ’αž‡αž€αž˜αŸ’αž˜ αž“αž·αž„αž€αžΆαžšαž”αž‰αŸ’αž‡αžΌαž“αž”αž“αŸ’αžαž‘αŸ…αž€αžΆαž“αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸ…αž›αžΎ Google Play αŸ” αž“αŸαŸ‡αž‡αžΆαž αŸαžαž»αž•αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŸαŸ’αžšαžΆαžœαž‡αŸ’αžšαžΆαžœαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ– αž™αžΎαž„αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž˜αžΎαž›αžαžΆαžαžΎ UC Browser αž€αŸ†αž–αž»αž„αžαŸ‚αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαž˜αž·αž“αž›αŸ’αž’αŸ” αž αžΎαž™αžœαžΆαž”αžΆαž“αž”αŸ’αžšαŸ‚αž€αŸ’αž›αžΆαž™αžαžΆαž‚αžΆαžαŸ‹αž’αŸ’αžœαžΎ!

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‘αžΆαž‰αž™αž€ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΌαžŠαžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αžƒαžΎαž‰αŸ” αžŠαŸ‚αž›αž•αŸ’αž‘αž»αž™αž“αžΉαž„αž…αŸ’αž”αžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αŸ…αž›αžΎ Google Play αŸ” αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎαž€αžΆαžšαž‘αžΆαž‰αž™αž€αž€αžΌαžŠαžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“ UC Browser αž’αŸ’αžœαžΎαžŠαžΌαž…αŸ’αž“αŸαŸ‡αž€αŸ’αž“αž»αž„αž›αž€αŸ’αžαžŽαŸˆαž’αžŸαž“αŸ’αžαž·αžŸαž»αž αžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αžΎαž€αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžš MitM αŸ” αž…αžΆαŸ†αž˜αžΎαž›αžαžΆαžαžΎαž™αžΎαž„αž’αžΆαž…αž’αŸ’αžœαžΎαž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαž”αŸ‚αž”αž“αŸαŸ‡αž”αžΆαž“αžŠαŸ‚αžšαž¬αž‘αŸ?

αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αž”αžΆαž“αžŸαžšαžŸαŸαžšαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž‚αžΊαž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ†αžŽαŸ‚αžšαž”αžŸαŸ‹ UC Browser αžŠαŸ‚αž›αž˜αžΆαž“αž“αŸ…αž›αžΎ Google Play αž“αŸ…αž–αŸαž›αžŸαž·αž€αŸ’αžŸαžΆαŸ–

package: com.UCMobile.intl
versionName: 12.10.8.1172
versionCode: 10598
sha1 APK-Ρ„Π°ΠΉΠ»Π°: f5edb2243413c777172f6362876041eb0c3a928c

αžœαŸ‰αž·αž…αž‘αŸαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžš

αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser manifest αž’αŸ’αž“αž€αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αžšαž€αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαŸ‚αž›αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αž–αž“αŸ’αž™αž›αŸ‹αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αŸ” com.uc.deployment.UpgradeDeployService.

    <service android_exported="false" android_name="com.uc.deployment.UpgradeDeployService" android_process=":deploy" />

αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž“αŸαŸ‡αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αž“αžΉαž„αž’αŸ’αžœαžΎαž€αžΆαžšαžŸαŸ’αž“αžΎαžŸαž»αŸ† POST αž‘αŸ… puds.ucweb.com/upgrade/index.xhtmlαžŠαŸ‚αž›αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž…αžšαžΆαž…αžšαžŽαŸαž˜αž½αž™αžšαž™αŸˆαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αŸ” αž‡αžΆαž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž” αž‚αžΆαžαŸ‹αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαžΎαž˜αŸ’αž”αžΈαž‘αžΆαž‰αž™αž€αž€αžΆαžšαž’αžΆαž”αŸ‹αžŠαŸαž αž¬αž˜αŸ‰αžΌαžŒαž»αž›αžαŸ’αž˜αžΈαŸ” αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž“αŸƒαž€αžΆαžšαžœαž·αž—αžΆαž‚ αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž˜αž·αž“αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž”αŸ‚αž”αž“αŸαŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αžŸαž„αŸ’αž€αŸαžαžƒαžΎαž‰αžαžΆ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž™αžΎαž„αž–αŸ’αž™αžΆαž™αžΆαž˜αž”αžΎαž€ PDF αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αžαžΆαž˜αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αž αžœαžΆαž’αŸ’αžœαžΎαž€αžΆαžšαžŸαŸ’αž“αžΎαžŸαž»αŸ†αž‘αžΈαž–αžΈαžšαž‘αŸ…αž€αžΆαž“αŸ‹αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžαžΆαž„αž›αžΎ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžœαžΆαž‘αžΆαž‰αž™αž€αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαžΎαž˜αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžš αž™αžΎαž„αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž”αŸ’αžšαžΎαž˜αž»αžαž„αžΆαžšαž“αŸαŸ‡αžšαž”αžŸαŸ‹ UC BrowserαŸ– αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αžΎαž€ PDF αžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαžΎαž˜ αžŠαŸ‚αž›αž˜αž·αž“αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„ APK αž“αž·αž„αžŠαŸ‚αž›αžœαžΆαž‘αžΆαž‰αž™αž€αž–αžΈαž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž…αžΆαŸ†αž”αžΆαž…αŸ‹αŸ” αž‚αž½αžšαž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆαžαžΆαž˜αž‘αŸ’αžšαžΉαžŸαŸ’αžαžΈ UC Browser αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αžαŸ†αž±αŸ’αž™αž‘αžΆαž‰αž™αž€αž’αŸ’αžœαžΈαž˜αž½αž™αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ - αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αžŠαŸ‚αž›αž˜αžΆαž“αž‘αž˜αŸ’αžšαž„αŸ‹αž›αŸ’αž’αž…αŸ†αž–αŸ„αŸ‡αžŸαŸ†αžŽαžΎαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž™αžΎαž„αžαŸ’αžšαžΌαžœαžŸαž·αž€αŸ’αžŸαžΆαž–αžΈαž–αž·αž’αžΈαž€αžΆαžšαž“αŸƒαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž±αŸ’αž™αž€αžΆαž“αŸ‹αžαŸ‚αž›αž˜αŸ’αž’αž·αž αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαžαžΆαžœαžΆαž“αžΉαž„αž€αžΆαž“αŸ‹αžαŸ‚αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αž‘αžΆαž€αŸ‹αž…αžΆαž”αŸ‹ αž αžΎαž™αž‡αŸ†αž“αž½αžŸαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ PDF αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž…αž„αŸ‹αž”αžΎαž€ PDF αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αžαžΆαž˜αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αž αžŸαŸ†αžŽαžΎαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž…αžšαžΆαž…αžšαžŽαŸαŸ–

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αžŠαŸ†αž”αžΌαž„αž˜αžΆαž“αžŸαŸ†αžŽαžΎ POST αž‘αŸ… puds.ucweb.com/upgrade/index.xhtmlαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€
αž”αžŽαŸ’αžŽαžŸαžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αžΎαž› PDF αž“αž·αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž€αžΆαžšαž·αž™αžΆαž›αŸαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž‰αž™αž€αŸ” αžœαžΆαžŸαž˜αž αŸαžαž»αž•αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαž“αŸ’αž˜αžαŸ‹αžαžΆαžŸαŸ†αžŽαžΎαžŠαŸ†αž”αžΌαž„αž”αž‰αŸ’αž‡αžΌαž“αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαž”αŸ’αžšαž–αŸαž“αŸ’αž’ (αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αžαž›αŸ‹αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžš) αž αžΎαž™αž‡αžΆαž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αž‘αŸ…αž“αžΉαž„αžœαžΆ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αž‘αž‘αž½αž›αž”αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ†αž–αžΈαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαž‘αžΆαž‰αž™αž€αŸ– αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ αž“αž·αž„ αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆ , αž’αŸ’αžœαžΈβ€‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž”αž‰αŸ’αž αžΆαž‚αžΊαžαžΆαžŸαŸ†αžŽαžΎαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αŸ”

αžŸαŸ’αž“αžΎαžŸαž»αŸ†αž”αŸ†αžŽαŸ‚αž€

αž”αŸ†αžŽαŸ‚αž€αž“αŸƒαž…αž˜αŸ’αž›αžΎαž™

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžαŸ’αž›αž½αž“αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ’αž…αž”αŸ‹αž‡αžΆ ZIP αž αžΎαž™αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αž‘αŸαŸ”

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αžΌαžŠαžŒαž·αž‚αŸ’αžšαžΈαž”αž…αžšαžΆαž…αžšαžŽαŸ

αžαŸ„αŸ‡αž–αŸ’αž™αžΆαž™αžΆαž˜αžŒαž·αž‚αŸ’αžšαžΈαž”αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αžšαž”αžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαŸ” αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž›αŸαžαž€αžΌαžŠαžαŸ’αž“αžΆαž€αŸ‹ com.uc.deployment.UpgradeDeployServiceαŸ– αž–αžΈαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž onStartCommand αž‘αŸ… com.uc.deployment.bxαž“αž·αž„αž–αžΈαžœαžΆαž‘αŸ… com.uc.browser.core.dcfe:

    public final void e(l arg9) {
int v4_5;
String v3_1;
byte[] v3;
byte[] v1 = null;
if(arg9 == null) {
v3 = v1;
}
else {
v3_1 = arg9.iGX.ipR;
StringBuilder v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]product:");
v4.append(arg9.iGX.ipR);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]version:");
v4.append(arg9.iGX.iEn);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]upgrade_type:");
v4.append(arg9.iGX.mMode);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]force_flag:");
v4.append(arg9.iGX.iEo);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]silent_mode:");
v4.append(arg9.iGX.iDQ);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]silent_type:");
v4.append(arg9.iGX.iEr);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]silent_state:");
v4.append(arg9.iGX.iEp);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]silent_file:");
v4.append(arg9.iGX.iEq);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]apk_md5:");
v4.append(arg9.iGX.iEl);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]download_type:");
v4.append(arg9.mDownloadType);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]download_group:");
v4.append(arg9.mDownloadGroup);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]download_path:");
v4.append(arg9.iGH);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]apollo_child_version:");
v4.append(arg9.iGX.iEx);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]apollo_series:");
v4.append(arg9.iGX.iEw);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]apollo_cpu_arch:");
v4.append(arg9.iGX.iEt);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]apollo_cpu_vfp3:");
v4.append(arg9.iGX.iEv);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]apollo_cpu_vfp:");
v4.append(arg9.iGX.iEu);
ArrayList v3_2 = arg9.iGX.iEz;
if(v3_2 != null && v3_2.size() != 0) {
Iterator v3_3 = v3_2.iterator();
while(v3_3.hasNext()) {
Object v4_1 = v3_3.next();
StringBuilder v5 = new StringBuilder("[");
v5.append(((au)v4_1).getName());
v5.append("]component_name:");
v5.append(((au)v4_1).getName());
v5 = new StringBuilder("[");
v5.append(((au)v4_1).getName());
v5.append("]component_ver_name:");
v5.append(((au)v4_1).aDA());
v5 = new StringBuilder("[");
v5.append(((au)v4_1).getName());
v5.append("]component_ver_code:");
v5.append(((au)v4_1).gBl);
v5 = new StringBuilder("[");
v5.append(((au)v4_1).getName());
v5.append("]component_req_type:");
v5.append(((au)v4_1).gBq);
}
}
j v3_4 = new j();
m.b(v3_4);
h v4_2 = new h();
m.b(v4_2);
ay v5_1 = new ay();
v3_4.hS("");
v3_4.setImsi("");
v3_4.hV("");
v5_1.bPQ = v3_4;
v5_1.bPP = v4_2;
v5_1.yr(arg9.iGX.ipR);
v5_1.gBF = arg9.iGX.mMode;
v5_1.gBI = arg9.iGX.iEz;
v3_2 = v5_1.gAr;
c.aBh();
v3_2.add(g.fs("os_ver", c.getRomInfo()));
v3_2.add(g.fs("processor_arch", com.uc.b.a.a.c.getCpuArch()));
v3_2.add(g.fs("cpu_arch", com.uc.b.a.a.c.Pb()));
String v4_3 = com.uc.b.a.a.c.Pd();
v3_2.add(g.fs("cpu_vfp", v4_3));
v3_2.add(g.fs("net_type", String.valueOf(com.uc.base.system.a.Jo())));
v3_2.add(g.fs("fromhost", arg9.iGX.iEm));
v3_2.add(g.fs("plugin_ver", arg9.iGX.iEn));
v3_2.add(g.fs("target_lang", arg9.iGX.iEs));
v3_2.add(g.fs("vitamio_cpu_arch", arg9.iGX.iEt));
v3_2.add(g.fs("vitamio_vfp", arg9.iGX.iEu));
v3_2.add(g.fs("vitamio_vfp3", arg9.iGX.iEv));
v3_2.add(g.fs("plugin_child_ver", arg9.iGX.iEx));
v3_2.add(g.fs("ver_series", arg9.iGX.iEw));
v3_2.add(g.fs("child_ver", r.aVw()));
v3_2.add(g.fs("cur_ver_md5", arg9.iGX.iEl));
v3_2.add(g.fs("cur_ver_signature", SystemHelper.getUCMSignature()));
v3_2.add(g.fs("upgrade_log", i.bjt()));
v3_2.add(g.fs("silent_install", String.valueOf(arg9.iGX.iDQ)));
v3_2.add(g.fs("silent_state", String.valueOf(arg9.iGX.iEp)));
v3_2.add(g.fs("silent_file", arg9.iGX.iEq));
v3_2.add(g.fs("silent_type", String.valueOf(arg9.iGX.iEr)));
v3_2.add(g.fs("cpu_archit", com.uc.b.a.a.c.Pc()));
v3_2.add(g.fs("cpu_set", SystemHelper.getCpuInstruction()));
boolean v4_4 = v4_3 == null || !v4_3.contains("neon") ? false : true;
v3_2.add(g.fs("neon", String.valueOf(v4_4)));
v3_2.add(g.fs("cpu_cores", String.valueOf(com.uc.b.a.a.c.Jl())));
v3_2.add(g.fs("ram_1", String.valueOf(com.uc.b.a.a.h.Po())));
v3_2.add(g.fs("totalram", String.valueOf(com.uc.b.a.a.h.OL())));
c.aBh();
v3_2.add(g.fs("rom_1", c.getRomInfo()));
v4_5 = e.getScreenWidth();
int v6 = e.getScreenHeight();
StringBuilder v7 = new StringBuilder();
v7.append(v4_5);
v7.append("*");
v7.append(v6);
v3_2.add(g.fs("ss", v7.toString()));
v3_2.add(g.fs("api_level", String.valueOf(Build$VERSION.SDK_INT)));
v3_2.add(g.fs("uc_apk_list", SystemHelper.getUCMobileApks()));
Iterator v4_6 = arg9.iGX.iEA.entrySet().iterator();
while(v4_6.hasNext()) {
Object v6_1 = v4_6.next();
v3_2.add(g.fs(((Map$Entry)v6_1).getKey(), ((Map$Entry)v6_1).getValue()));
}
v3 = v5_1.toByteArray();
}
if(v3 == null) {
this.iGY.iGI.a(arg9, "up_encode", "yes", "fail");
return;
}
v4_5 = this.iGY.iGw ? 0x1F : 0;
if(v3 == null) {
}
else {
v3 = g.i(v4_5, v3);
if(v3 == null) {
}
else {
v1 = new byte[v3.length + 16];
byte[] v6_2 = new byte[16];
Arrays.fill(v6_2, 0);
v6_2[0] = 0x5F;
v6_2[1] = 0;
v6_2[2] = ((byte)v4_5);
v6_2[3] = -50;
System.arraycopy(v6_2, 0, v1, 0, 16);
System.arraycopy(v3, 0, v1, 16, v3.length);
}
}
if(v1 == null) {
this.iGY.iGI.a(arg9, "up_encrypt", "yes", "fail");
return;
}
if(TextUtils.isEmpty(this.iGY.mUpgradeUrl)) {
this.iGY.iGI.a(arg9, "up_url", "yes", "fail");
return;
}
StringBuilder v0 = new StringBuilder("[");
v0.append(arg9.iGX.ipR);
v0.append("]url:");
v0.append(this.iGY.mUpgradeUrl);
com.uc.browser.core.d.c.i v0_1 = this.iGY.iGI;
v3_1 = this.iGY.mUpgradeUrl;
com.uc.base.net.e v0_2 = new com.uc.base.net.e(new com.uc.browser.core.d.c.i$a(v0_1, arg9));
v3_1 = v3_1.contains("?") ? v3_1 + "&dataver=pb" : v3_1 + "?dataver=pb";
n v3_5 = v0_2.uc(v3_1);
m.b(v3_5, false);
v3_5.setMethod("POST");
v3_5.setBodyProvider(v1);
v0_2.b(v3_5);
this.iGY.iGI.a(arg9, "up_null", "yes", "success");
this.iGY.iGI.b(arg9);
}

αž™αžΎαž„αžƒαžΎαž‰αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžŸαŸ†αžŽαžΎ POST αž“αŸ…αž‘αžΈαž“αŸαŸ‡αŸ” αž™αžΎαž„αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž›αžΎαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž’αžΆαžšαŸαž“αŸƒ 16 αž”αŸƒ αž“αž·αž„αž€αžΆαžšαž”αŸ†αž–αŸαž‰αžšαž”αžŸαŸ‹αžœαžΆ: 0x5F, 0, 0x1F, -50 (= 0xCE) αŸ” αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαž“αžΉαž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ†αžŽαžΎαžαžΆαž„αž›αžΎαŸ”

αž€αŸ’αž“αž»αž„β€‹αžαŸ’αž“αžΆαž€αŸ‹β€‹αžŠαžΌαž…αž‚αŸ’αž“αžΆ αž’αŸ’αž“αž€β€‹αž’αžΆαž…β€‹αž˜αžΎαž›β€‹αžƒαžΎαž‰β€‹αžαŸ’αž“αžΆαž€αŸ‹β€‹αžŠαŸ‚αž›β€‹αž”αž„αŸ’αž€αž”αŸ‹β€‹αžŠαŸ„αž™β€‹αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšβ€‹αž‚αž½αžšβ€‹αž±αŸ’αž™β€‹αž…αžΆαž”αŸ‹β€‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸβ€‹αž˜αž½αž™β€‹αž‘αŸ€αžαŸ–

        public final void a(l arg10, byte[] arg11) {
f v0 = this.iGQ;
StringBuilder v1 = new StringBuilder("[");
v1.append(arg10.iGX.ipR);
v1.append("]:UpgradeSuccess");
byte[] v1_1 = null;
if(arg11 == null) {
}
else if(arg11.length < 16) {
}
else {
if(arg11[0] != 0x60 && arg11[3] != 0xFFFFFFD0) {
goto label_57;
}
int v3 = 1;
int v5 = arg11[1] == 1 ? 1 : 0;
if(arg11[2] != 1 && arg11[2] != 11) {
if(arg11[2] == 0x1F) {
}
else {
v3 = 0;
}
}
byte[] v7 = new byte[arg11.length - 16];
System.arraycopy(arg11, 16, v7, 0, v7.length);
if(v3 != 0) {
v7 = g.j(arg11[2], v7);
}
if(v7 == null) {
goto label_57;
}
if(v5 != 0) {
v1_1 = g.P(v7);
goto label_57;
}
v1_1 = v7;
}
label_57:
if(v1_1 == null) {
v0.iGY.iGI.a(arg10, "up_decrypt", "yes", "fail");
return;
}
q v11 = g.b(arg10, v1_1);
if(v11 == null) {
v0.iGY.iGI.a(arg10, "up_decode", "yes", "fail");
return;
}
if(v0.iGY.iGt) {
v0.d(arg10);
}
if(v0.iGY.iGo != null) {
v0.iGY.iGo.a(0, ((o)v11));
}
if(v0.iGY.iGs) {
v0.iGY.a(((o)v11));
v0.iGY.iGI.a(v11, "up_silent", "yes", "success");
v0.iGY.iGI.a(v11);
return;
}
v0.iGY.iGI.a(v11, "up_silent", "no", "success");
}
}

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž™αž€αž’αžΆαžšαŸαž“αŸƒαž”αŸƒαž‡αžΆαž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž› αž αžΎαž™αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαžŸαžΌαž“αŸ’αž™αž”αŸƒαž‚αžΊ 0x60 αž¬αž”αŸƒαž‘αžΈαž”αžΈαž‚αžΊ 0xD0 αž αžΎαž™αž”αŸƒαž‘αžΈαž–αžΈαžšαž‚αžΊ 1, 11 ឬ 0x1F αŸ” αž™αžΎαž„αž˜αžΎαž›αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαŸ– αžŸαžΌαž“αŸ’αž™αž”αŸƒαž‚αžΊ 0x60 αž‘αžΈαž–αžΈαžšαž‚αžΊ 0x1F αž‘αžΈαž”αžΈαž‚αžΊ 0x60 αŸ” αžŸαŸ’αžαžΆαž”αŸ‹αž‘αŸ…αžŠαžΌαž…αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαŸ” αž€αžΆαžšαžœαž·αž“αž·αž…αŸ’αž†αŸαž™αžŠαŸ„αž™αž”αž“αŸ’αž‘αžΆαžαŸ‹ (αž§αž‘αžΆαž αžšαžŽαŸ "up_decrypt") αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž αŸ…αž“αŸ…αž‘αžΈαž“αŸαŸ‡αžŠαŸ‚αž›αž“αžΉαž„αžŒαž·αž‚αŸ’αžšαžΈαž”αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αžšαž”αžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαŸ”
αž…αžΌαžšαž”αž“αŸ’αžαž‘αŸ…αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž gj. αž…αŸ†αžŽαžΆαŸ†αžαžΆαž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž‘αžΈαž˜αž½αž™αž‚αžΊαž‡αžΆαž”αŸƒαž“αŸ…αž’αž»αž αŸ’αžœαžŸαž·αž 2 (αž§αž‘αžΆαž αžšαžŽαŸ 0x1F αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„) αž αžΎαž™αž‘αžΈαž–αžΈαžšαž‚αžΊαž‡αžΆαž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αžšαž”αžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“
16 αž”αŸƒαžŠαŸ†αž”αžΌαž„αŸ”

     public static byte[] j(int arg1, byte[] arg2) {
if(arg1 == 1) {
arg2 = c.c(arg2, c.adu);
}
else if(arg1 == 11) {
arg2 = m.aF(arg2);
}
else if(arg1 != 0x1F) {
}
else {
arg2 = EncryptHelper.decrypt(arg2);
}
return arg2;
}

αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„ αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž™αžΎαž„αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αžΆαžšαžŒαž·αž‚αŸ’αžšαžΈαž” αž“αž·αž„αž”αŸƒαžŠαžΌαž…αž‚αŸ’αž“αžΆαžŠαŸ‚αž›αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”
αž€αžšαžŽαžΈαžŸαŸ’αž˜αžΎαž“αžΉαž„ 0x1F αžαŸ†αžŽαžΆαž„αž±αŸ’αž™αž‡αž˜αŸ’αžšαžΎαžŸαž˜αž½αž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž‡αž˜αŸ’αžšαžΎαžŸαž”αžΈαŸ”

αž™αžΎαž„αž”αž“αŸ’αžαžœαž·αž—αžΆαž‚αž€αžΌαžŠαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž›αŸ„αžαž–αžΈαžšαž”αžΈαžŠαž„ αž™αžΎαž„αžšαž€αžƒαžΎαž‰αžαŸ’αž›αž½αž“αž™αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž˜αž½αž™αžŠαŸ‚αž›αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αž–αž“αŸ’αž™αž›αŸ‹αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αŸ” αžŒαž·αž‚αŸ’αžšαžΈαž”BytesByKey.

αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž–αžΈαžšαž”αŸƒαž‘αŸ€αžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ†αž”αŸ‚αž€αž…αŸαž‰αž–αžΈαž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αžšαž”αžŸαŸ‹αž™αžΎαž„ αž αžΎαž™αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αž–αžΈαž–αž½αž€αž‚αŸαŸ” αžœαžΆαž…αŸ’αž”αžΆαžŸαŸ‹αžŽαžΆαžŸαŸ‹αžαžΆαžαžΆαž˜αžšαž”αŸ€αž”αž“αŸαŸ‡αž‚αž“αŸ’αž›αžΉαŸ‡αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŒαž·αž‚αŸ’αžšαžΈαž”αžŸαžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαŸ”

    private static byte[] decryptBytesByKey(byte[] bytes) {
byte[] v0 = null;
if(bytes != null) {
try {
if(bytes.length < EncryptHelper.PREFIX_BYTES_SIZE) {
}
else if(bytes.length == EncryptHelper.PREFIX_BYTES_SIZE) {
return v0;
}
else {
byte[] prefix = new byte[EncryptHelper.PREFIX_BYTES_SIZE];  // 2 Π±Π°ΠΉΡ‚Π°
System.arraycopy(bytes, 0, prefix, 0, prefix.length);
String keyId = c.ayR().d(ByteBuffer.wrap(prefix).getShort()); // Π’Ρ‹Π±ΠΎΡ€ ΠΊΠ»ΡŽΡ‡Π°
if(keyId == null) {
return v0;
}
else {
a v2 = EncryptHelper.ayL();
if(v2 == null) {
return v0;
}
else {
byte[] enrypted = new byte[bytes.length - EncryptHelper.PREFIX_BYTES_SIZE];
System.arraycopy(bytes, EncryptHelper.PREFIX_BYTES_SIZE, enrypted, 0, enrypted.length);
return v2.l(keyId, enrypted);
}
}
}
}
catch(SecException v7_1) {
EncryptHelper.handleDecryptException(((Throwable)v7_1), v7_1.getErrorCode());
return v0;
}
catch(Throwable v7) {
EncryptHelper.handleDecryptException(v7, 2);
return v0;
}
}
return v0;
}

αžŸαž˜αŸ’αž›αžΉαž„αž‘αŸ…αž˜αž»αž αž™αžΎαž„αž€αžαŸ‹αžŸαŸ†αž‚αžΆαž›αŸ‹αžαžΆ αž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž“αŸαŸ‡ αž™αžΎαž„αž˜αž·αž“αž‘αžΆαž“αŸ‹αž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ„αžšαž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“αžαŸ‚ "αž§αž”αž€αžšαžŽαŸαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽ" αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“αž€αžΌαž“αžŸαŸ„αž‚αžΊαžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž”αž“αŸ’αžαž·αž…αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹ αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž–αžΈαžšαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αžšαž”αžŸαŸ‹αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹ αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž±αŸ’αž™αž–αž½αž€αž‚αŸαž…αŸ†αž“αž½αž“αž”αž½αž“αŸ– αž›αŸαžαžœαŸαž‘αž˜αž“αŸ’αž 16 αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž‚αž“αŸ’αž›αžΉαŸ‡ αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž” αž“αž·αž„αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšαžŠαŸ‚αž›αž˜αž·αž“αž’αžΆαž…αž™αž›αŸ‹αž”αžΆαž“ (αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αž‚αžΊαž‘αž‘αŸ)αŸ”

    public final byte[] l(String keyId, byte[] encrypted) throws SecException {
return this.ayJ().staticBinarySafeDecryptNoB64(16, keyId, encrypted, "");
}

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž™αžΎαž„αž˜αž€αžŠαž›αŸ‹αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž staticBinarySafeDecryptNoB64 αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹ com.alibaba.wireless.security.open.staticdataencrypt.IStaticDataEncryptComponentαŸ” αž˜αž·αž“αž˜αžΆαž“αžαŸ’αž“αžΆαž€αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŸαŸ†αžαžΆαž“αŸ‹αžŠαŸ‚αž›αž’αž“αž»αžœαžαŸ’αžαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž“αŸαŸ‡αž‘αŸαŸ” αž˜αžΆαž“αžαŸ’αž“αžΆαž€αŸ‹αž”αŸ‚αž”αž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš lib/armeabi-v7a/libsgmain.soαžŠαŸ‚αž›αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆ .so αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆ .jar αŸ” αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžŠαŸ‚αž›αž™αžΎαž„αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜:

package com.alibaba.wireless.security.a.i;
// ...
public class a implements IStaticDataEncryptComponent {
private ISecurityGuardPlugin a;
// ...
private byte[] a(int mode, int magicInt, int xzInt, String keyId, byte[] encrypted, String magicString) {
return this.a.getRouter().doCommand(10601, new Object[]{Integer.valueOf(mode), Integer.valueOf(magicInt), Integer.valueOf(xzInt), keyId, encrypted, magicString});
}
// ...
private byte[] b(int magicInt, String keyId, byte[] encrypted, String magicString) {
return this.a(2, magicInt, 0, keyId, encrypted, magicString);
}
// ...
public byte[] staticBinarySafeDecryptNoB64(int magicInt, String keyId, byte[] encrypted, String magicString) throws SecException {
if(keyId != null && keyId.length() > 0 && magicInt >= 0 && magicInt < 19 && encrypted != null && encrypted.length > 0) {
return this.b(magicInt, keyId, encrypted, magicString);
}
throw new SecException("", 301);
}
//...
}

αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸαŸ‡αž‡αžΆαž”αž‰αŸ’αž‡αžΈαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžšαž”αžŸαŸ‹αž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αžŠαŸ„αž™αž…αŸ†αž“αž½αž“αž‚αžαŸ‹αž–αžΈαžšαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαŸ– 2 αž“αž·αž„ 0αŸ” αžœαž·αž“αž·αž…αŸ’αž†αŸαž™αžŠαŸ„αž™
αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„, 2 αž˜αžΆαž“αž“αŸαž™αžαžΆαž€αžΆαžšαžŒαž·αž‚αŸ’αžšαžΈαž”, αžŠαžΌαž…αž“αŸ…αž€αŸ’αž“αž»αž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž doFinal αžαŸ’αž“αžΆαž€αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’ javax.crypto.Cipher. αž αžΎαž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‘αŸαžšαž‘αŸ… Router αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™αžŠαŸ‚αž›αž˜αžΆαž“αž›αŸαž 10601 - αž“αŸαŸ‡αž…αŸ’αž”αžΆαžŸαŸ‹αž‡αžΆαž›αŸαžαž”αž‰αŸ’αž‡αžΆαŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžαŸ’αžŸαŸ‚αžŸαž„αŸ’αžœαžΆαž€αŸ‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž“αŸƒαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž™αžΎαž„αžšαž€αžƒαžΎαž‰αžαŸ’αž“αžΆαž€αŸ‹αžŠαŸ‚αž›αž’αž“αž»αžœαžαŸ’αžαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹ αžŸαž˜αžΆαžŸαž’αžΆαžαž» IRouter αž“αž·αž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž αž”αž‰αŸ’αž‡αžΆ:

package com.alibaba.wireless.security.mainplugin;
import com.alibaba.wireless.security.framework.IRouterComponent;
import com.taobao.wireless.security.adapter.JNICLibrary;
public class a implements IRouterComponent {
public a() {
super();
}
public Object doCommand(int arg2, Object[] arg3) {
return JNICLibrary.doCommandNative(arg2, arg3);
}
}

αž“αž·αž„αžαŸ’αž“αžΆαž€αŸ‹αž•αž„αžŠαŸ‚αžšαŸ” αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ JNICLαžŠαŸ‚αž›αž€αŸ’αž“αž»αž„αž“αŸ„αŸ‡αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžŠαžΎαž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαž€αžΆαžŸ doCommandNative:

package com.taobao.wireless.security.adapter;
public class JNICLibrary {
public static native Object doCommandNative(int arg0, Object[] arg1);
}

αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆαž™αžΎαž„αžαŸ’αžšαžΌαžœαžŸαŸ’αžœαŸ‚αž„αžšαž€αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αŸ’αž“αž»αž„αž€αžΌαžŠαžŠαžΎαž˜ doCommandNative. αž αžΎαž™αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž—αžΆαž–αžŸαž”αŸ’αž”αžΆαž™αžšαžΈαž€αžšαžΆαž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αŸ”

αž—αžΆαž–αž…αŸ’αžšαž”αžΌαž€αž…αŸ’αžšαž”αž›αŸ‹αž“αŸƒαž›αŸαžαž€αžΌαžŠαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“

αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš libsgmain.so (αžŠαŸ‚αž›αž–αž·αžαž‡αžΆ .jar αž αžΎαž™αžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αžšαž€αžƒαžΎαž‰αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž€αžΆαžšαž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸ…αžαžΆαž„αž›αžΎ) αž˜αžΆαž“αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαžΎαž˜αž˜αž½αž™αŸ– libsgmainso-6.4.36.so. αž™αžΎαž„αž”αžΎαž€αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„ IDA αž αžΎαž™αž‘αž‘αž½αž›αž”αžΆαž“αž”αŸ’αžšαž’αž”αŸ‹αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž˜αžΆαž“αž€αŸ†αž αž»αžŸαŸ” αž”αž‰αŸ’αž αžΆαž‚αžΊαžαžΆαžαžΆαžšαžΆαž„αž”αž‹αž˜αž€αžαžΆαž“αŸƒαž•αŸ’αž“αŸ‚αž€αž‚αžΊαž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‘αŸαŸ” αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž€αŸ’αž“αž»αž„αž‚αŸ„αž›αž”αŸ†αžŽαž„αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž±αŸ’αž™αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αžŠαž›αŸ‹αž€αžΆαžšαžœαž·αž—αžΆαž‚αŸ”

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž‘αŸαŸ– αžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αž‘αž»αž€αž―αž€αžŸαžΆαžš ELF αž“αž·αž„αžœαž·αž—αžΆαž‚αžœαžΆαž±αŸ’αž™αž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αžαžΆαžšαžΆαž„αž”αž‹αž˜αž€αžαžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αžΊαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αž αžΎαž™αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž™αžΎαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž›αž»αž”αžαžΆαžšαžΆαž„αž•αŸ’αž“αŸ‚αž€ αžŠαŸ„αž™αž›αž»αž”αžœαžΆαž›αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž”αž‹αž˜αž€αžαžΆαŸ”

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž”αžΎαž€αž―αž€αžŸαžΆαžšαž€αŸ’αž“αž»αž„ IDA αž˜αŸ’αžαž„αž‘αŸ€αžαŸ”

αž˜αžΆαž“αžœαž·αž’αžΈαž–αžΈαžšαž™αŸ‰αžΆαž„αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΆαž”αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αž Java αžŠαŸ‚αž›αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαž“αŸ…αž€αŸ’αž“αž»αž„αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαžΎαž˜αž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαž€αžΆαžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠ Java αž‡αžΆαž”αŸ’αžšαž—αž–αžŠαžΎαž˜αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αŸ” αž‘αžΈαž˜αž½αž™αž‚αžΊαžαŸ’αžšαžΌαžœαžŠαžΆαž€αŸ‹αžˆαŸ’αž˜αŸ„αŸ‡αž”αŸ’αžšαž—αŸαž‘αžŸαžαŸ’αžœ Java_package_name_ClassName_MethodName.

αž‘αžΈαž–αžΈαžšαž‚αžΊαžαŸ’αžšαžΌαžœαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αžœαžΆαž“αŸ…αž–αŸαž›αž•αŸ’αž‘αž»αž€αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ (αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αž»αžαž„αžΆαžš JNI_OnLoad)
αžŠαŸ„αž™αž”αŸ’αžšαžΎαž˜αž»αžαž„αžΆαžšαž αŸ… αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž‡αž“αž‡αžΆαžαž·αžŠαžΎαž˜.

αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž”αŸ’αžšαžΎαžœαž·αž’αžΈαž‘αžΈαž˜αž½αž™ αžˆαŸ’αž˜αŸ„αŸ‡αž‚αž½αžšαžαŸ‚αžŠαžΌαž…αž“αŸαŸ‡αŸ– Java_com_taobao_wireless_security_adapter_JNICLibrary_doCommandNative.

αž˜αž·αž“αž˜αžΆαž“αž˜αž»αžαž„αžΆαžšαž”αŸ‚αž”αž“αŸαŸ‡αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž“αžΆαŸ†αž…αŸαž‰αž‘αŸ αžŠαŸ‚αž›αž˜αžΆαž“αž“αŸαž™αžαžΆαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžšαž€αž˜αžΎαž›αž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘ αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž‡αž“αž‡αžΆαžαž·αžŠαžΎαž˜.
αžαŸ„αŸ‡αž‘αŸ…αž˜αž»αžαž„αžΆαžš JNI_OnLoad αž αžΎαž™αž™αžΎαž„αžƒαžΎαž‰αžšαžΌαž”αž—αžΆαž–αž“αŸαŸ‡αŸ–

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αžαžΎαž˜αžΆαž“αž’αŸ’αžœαžΈαž€αžΎαžαž‘αžΎαž„αž“αŸ…αž‘αžΈαž“αŸαŸ‡? αž“αŸ… glance αžŠαŸ†αž”αžΌαž„ αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αž“αž·αž„αž…αž»αž„αž”αž‰αŸ’αž…αž”αŸ‹αž“αŸƒαž˜αž»αžαž„αžΆαžšαž‚αžΊαž‡αžΆαžαž½αž™αŸ‰αžΆαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜ ARM αŸ” αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αžŠαŸ†αž”αžΌαž„αž“αŸ…αž›αžΎαž‡αž„αŸ‹αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž˜αžΆαžαž·αž€αžΆαž“αŸƒαž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ‚αž›αž˜αž»αžαž„αžΆαžšαž“αžΉαž„αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžšαž”αžŸαŸ‹αžœαžΆ (αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ R0, R1 αž“αž·αž„ R2) αž€αŸαžŠαžΌαž…αž‡αžΆαž˜αžΆαžαž·αž€αžΆαž“αŸƒαž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡ LR αžŠαŸ‚αž›αž˜αžΆαž“αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžαŸ’αžšαž‘αž”αŸ‹αž–αžΈαž˜αž»αžαž„αžΆαžš . αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž…αž»αž„αž€αŸ’αžšαŸ„αž™αžŸαŸ’αžŠαžΆαžšαž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ‚αž›αž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž αžΎαž™αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžαŸ’αžšαž‘αž”αŸ‹αž˜αž€αžœαž·αž‰αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž—αŸ’αž›αžΆαž˜αŸ—αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžš - αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžαŸ’αžšαž‘αž”αŸ‹αž–αžΈαž˜αž»αžαž„αžΆαžšαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž±αŸ’αž™αž‡αž·αž αž’αŸ’αž“αž€αž“αžΉαž„αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžƒαžΎαž‰αžαžΆ αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžαŸ’αžšαž‘αž”αŸ‹αž˜αž€αžœαž·αž‰αžŠαŸ‚αž›αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž“αŸ…αž›αžΎαž‡αž„αŸ‹αŸ” αž…αžΌαžšαž™αžΎαž„αž‚αžŽαž“αžΆαžαžΆαžαžΎαžœαžΆαž“αžΉαž„αž‘αŸ…αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸ„αŸ‡αŸ”
αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αžΌαžŠαŸ” αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹ 1xB0 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‘αž»αž€αž‘αŸ…αž€αŸ’αž“αž»αž„ R130, 5 αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαž€αž…αŸαž‰αž–αžΈαžœαžΆ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‘αŸαžšαž‘αŸ… R0 αž αžΎαž™ 0x10 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αžœαžΆαŸ” αžœαžΆαž”αŸ’αžšαŸ‚αž…αŸαž‰ 0xB13B αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ IDA αž‚αž·αžαžαžΆαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž‚αžΊαž‡αžΆαž€αžΆαžšαžαŸ’αžšαž‘αž”αŸ‹αž˜αž»αžαž„αžΆαžšαž’αž˜αŸ’αž˜αžαžΆ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαžΆαž˜αž–αž·αžαžœαžΆαž“αžΉαž„αž‘αŸ…αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αž”αžΆαž“αž‚αžŽαž“αžΆ 0xB13BαŸ”

αžœαžΆαž‚αž½αžšαž’αŸ„αž™αž…αž„αž…αžΆαŸ†αž“αŸ…αž‘αžΈαž“αŸαŸ‡αžαžΆ ARM processors αž˜αžΆαž“αžšαž”αŸ€αž”αž–αžΈαžš αž“αž·αž„αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž–αžΈαžšαž‚αžΊ ARM αž“αž·αž„ Thumb αŸ” αž’αžΆαžŸαŸαž™αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αžŸαŸ†αžαžΆαž“αŸ‹αžαž·αž…αž”αŸ†αž•αž»αžαž”αŸ’αžšαžΆαž”αŸ‹ processor αžαžΆαžαžΎαžŸαŸ†αžŽαž»αŸ†αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž˜αž½αž™αžŽαžΆαž€αŸ†αž–αž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ” αž“αŸ„αŸ‡αž‚αžΊαž‡αžΆαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαž‚αžΊ 0xB13A αž αžΎαž™αž˜αž½αž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž”αŸŠαžΈαžαžŠαŸαžŸαŸ†αžαžΆαž“αŸ‹αž”αŸ†αž•αž»αžαž”αž„αŸ’αž αžΆαž‰αž–αžΈαžšαž”αŸ€αž”αž˜αŸαžŠαŸƒαŸ”

"αž’αžΆαžŠαžΆαž”αŸ‹αž‘αŸαžš" αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž“αŸƒαž˜αž»αžαž„αžΆαžšαž“αžΈαž˜αž½αž™αŸ—αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž“αŸαŸ‡ αž“αž·αž„
αž›αŸαžαž€αžΌαžŠαžŸαŸ†αžšαžΆαž˜αŸ” αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αžšαžŸαŸ‹αž“αŸ…αž›αžΎαž–αž½αž€αž‚αŸαž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαž‘αŸ - αž™αžΎαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž…αž„αž…αžΆαŸ†
αžαžΆαž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαž“αŸƒαž˜αž»αžαž„αžΆαžšαžŸαŸ’αž‘αžΎαžšαžαŸ‚αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αžΊαž“αŸ…αž†αŸ’αž„αžΆαž™αž”αž“αŸ’αžαž·αž…αŸ”

αžŠαŸ„αž™αžŸαžΆαžšαž›αŸαžαž€αžΌαžŠαž˜αž·αž“αž›αŸ„αžαž‘αŸ… 0xB13A αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹ IDA αžαŸ’αž›αž½αž“αž―αž„αž˜αž·αž“αž”αžΆαž“αž‘αž‘αž½αž›αžŸαŸ’αž‚αžΆαž›αŸ‹αžαžΆαž›αŸαžαž€αžΌαžŠαž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž‘αžΈαžαžΆαŸ†αž„αž“αŸαŸ‡αž‘αŸαŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž αŸαžαž»αž•αž›αžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸαŸ‡ αžœαžΆαž˜αž·αž“αž‘αž‘αž½αž›αžŸαŸ’αž‚αžΆαž›αŸ‹αž€αžΌαžŠαž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžαžΆαž‡αžΆαž€αžΌαžŠαžŠαŸ‚αž›αž’αŸ’αžœαžΎαž±αŸ’αž™αž€αžΆαžšαžœαž·αž—αžΆαž‚αž–αž·αž”αžΆαž€αž”αž“αŸ’αžαž·αž…αŸ” αž™αžΎαž„αž”αŸ’αžšαžΆαž”αŸ‹ IDA αžαžΆαž“αŸαŸ‡αž‡αžΆαž€αžΌαžŠ αž αžΎαž™αž“αŸαŸ‡αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž€αžΎαžαž‘αžΎαž„αŸ–

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αžαžΆαžšαžΆαž„αž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž“αŸ… 0xB144 αŸ” αžαžΎαž˜αžΆαž“αž’αŸ’αžœαžΈαž“αŸ…αž€αŸ’αž“αž»αž„ sub_494C?

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž“αŸ…αž–αŸαž›αž αŸ…αž˜αž»αžαž„αžΆαžšαž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡ LR αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž“αŸƒαžαžΆαžšαžΆαž„αžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αžšαžΆαž”αŸ‹αž–αžΈαž˜αž»αž“ (0xB144) αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„ R0 - αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž“αŸ…αž€αŸ’αž“αž»αž„αžαžΆαžšαžΆαž„αž“αŸαŸ‡αŸ” αž“αŸ„αŸ‡αž‚αžΊαžαž˜αŸ’αž›αŸƒαžαŸ’αžšαžΌαžœαž”αžΆαž“αž™αž€αž…αŸαž‰αž–αžΈαžαžΆαžšαžΆαž„αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ… LR αž αžΎαž™αž›αž‘αŸ’αž’αž•αž›αž‚αžΊ
αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‘αŸ…αŸ” αžαŸ„αŸ‡αž–αŸ’αž™αžΆαž™αžΆαž˜αž‚αžŽαž“αžΆαžœαžΆαŸ– 0xB144 + [0xB144 + 8* 4] = 0xB144 + 0x120 = 0xB264 αŸ” αž™αžΎαž„αž‘αŸ…αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αž‘αž‘αž½αž›αž”αžΆαž“ αž αžΎαž™αž˜αžΎαž›αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αžŠαŸαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž˜αž½αž™αž…αŸ†αž“αž½αž“ αž αžΎαž™αž˜αŸ’αžαž„αž‘αŸ€αžαž‘αŸ…αž€αžΆαž“αŸ‹ 0xB140αŸ–

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž“αžΉαž„αž˜αžΆαž“αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž“αŸ…αž’αž»αž αŸ’αžœαžŸαž·αžαž‡αžΆαž˜αž½αž™αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸ 0x20 αž–αžΈαžαžΆαžšαžΆαž„αŸ”

αžŠαŸ„αž™αžœαž·αž“αž·αž…αŸ’αž†αŸαž™αžŠαŸ„αž™αž‘αŸ†αž αŸ†αž“αŸƒαžαžΆαžšαžΆαž„αžœαžΆαž“αžΉαž„αž˜αžΆαž“αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αŸ‚αž”αž“αŸαŸ‡αž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαŸ” αžŸαŸ†αžŽαž½αžšαž€αžΎαžαž‘αžΎαž„αžαžΆαžαžΎαžœαžΆαž’αžΆαž…αž‘αŸ…αžšαž½αž…αž‘αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‡αžΆαž˜αž½αž™αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž‚αžŽαž“αžΆαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžŠαŸ„αž™αžŠαŸƒαŸ” αž αžΎαž™αžŸαŸ’αž‚αŸ’αžšαžΈαž” αž“αž·αž„αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ†αžŽαŸ‡αž€αžΌαžŠαž“αŸ…αž€αŸ’αž“αž»αž„ IDA αž˜αž€αž‡αžΆαž‡αŸ†αž“αž½αž™αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ–

def put_unconditional_branch(source, destination):
offset = (destination - source - 4) >> 1
if offset > 2097151 or offset < -2097152:
raise RuntimeError("Invalid offset")
if offset > 1023 or offset < -1024:
instruction1 = 0xf000 | ((offset >> 11) & 0x7ff)
instruction2 = 0xb800 | (offset & 0x7ff)
patch_word(source, instruction1)
patch_word(source + 2, instruction2)
else:
instruction = 0xe000 | (offset & 0x7ff)
patch_word(source, instruction)
ea = here()
if get_wide_word(ea) == 0xb503: #PUSH {R0,R1,LR}
ea1 = ea + 2
if get_wide_word(ea1) == 0xbf00: #NOP
ea1 += 2
if get_operand_type(ea1, 0) == 1 and get_operand_value(ea1, 0) == 0 and get_operand_type(ea1, 1) == 2:
index = get_wide_dword(get_operand_value(ea1, 1))
print "index =", hex(index)
ea1 += 2
if get_operand_type(ea1, 0) == 7:
table = get_operand_value(ea1, 0) + 4
elif get_operand_type(ea1, 1) == 2:
table = get_operand_value(ea1, 1) + 4
else:
print "Wrong operand type on", hex(ea1), "-", get_operand_type(ea1, 0), get_operand_type(ea1, 1)
table = None
if table is None:
print "Unable to find table"
else:
print "table =", hex(table)
offset = get_wide_dword(table + (index << 2))
put_unconditional_branch(ea, table + offset)
else:
print "Unknown code", get_operand_type(ea1, 0), get_operand_value(ea1, 0), get_operand_type(ea1, 1) == 2
else:
print "Unable to detect first instruction"

αžŠαžΆαž€αŸ‹αž‘αžŸαŸ’αžŸαž“αŸαž‘αŸ’αžšαž“αž·αž…αž“αŸ…αž›αžΎαž”αž“αŸ’αž‘αžΆαžαŸ‹ 0xB26A αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž” αž αžΎαž™αž˜αžΎαž›αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ… 0xB4B0αŸ–

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

IDA αž˜αŸ’αžαž„αž‘αŸ€αžαž˜αž·αž“αž”αžΆαž“αž‘αž‘αž½αž›αžŸαŸ’αž‚αžΆαž›αŸ‹αžαŸ†αž”αž“αŸ‹αž“αŸαŸ‡αž‡αžΆαž›αŸαžαž€αžΌαžŠαž‘αŸαŸ” αž™αžΎαž„αž‡αž½αž™αž“αžΆαž„ αž αžΎαž™αž˜αžΎαž›αž€αžΆαžšαžšαž…αž“αžΆαž˜αž½αž™αž‘αŸ€αžαž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αŸ–

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈ BLX αž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαž˜αž·αž“αž˜αžΆαž“αž’αžαŸ’αžαž“αŸαž™αž…αŸ’αžšαžΎαž“αž‘αŸ αžœαžΆαžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαž›αŸ†αž“αŸ…αž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ” αžαŸ„αŸ‡αž˜αžΎαž› sub_4964αŸ–

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž αžΎαž™αž‡αžΆαž€αžΆαžšαž–αž·αž αž“αŸ…αž‘αžΈαž“αŸαŸ‡ dword αž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž™αž€αž“αŸ…αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„ LR αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž“αŸαŸ‡ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸ„αŸ‡αžαž˜αŸ’αž›αŸƒαž“αŸ…αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž›αž‘αŸ’αž’αž•αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž™αž€αž αžΎαž™αžŠαžΆαž€αŸ‹αž›αžΎαž‡αž„αŸ‹αŸ” αžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸαŸ‡αž•αž„αžŠαŸ‚αžš 4 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ… LR αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžαŸ’αžšαž‘αž”αŸ‹αž–αžΈαž˜αž»αžαž„αžΆαžš αž’αž»αž αŸ’αžœαžŸαž·αžαžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ†αž›αž„αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸ„αŸ‡αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ POP {R1} αž™αž€αžαž˜αŸ’αž›αŸƒαž›αž‘αŸ’αž’αž•αž›αž–αžΈαž‡αž„αŸ‹αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ 0xB4BA + 0xEA = 0xB5A4 αž’αŸ’αž“αž€αž“αžΉαž„αžƒαžΎαž‰αž’αŸ’αžœαžΈαž˜αž½αž™αžŠαŸ‚αž›αžŸαŸ’αžšαžŠαŸ€αž„αž“αžΉαž„αžαžΆαžšαžΆαž„αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αŸ–

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αžŠαžΎαž˜αŸ’αž”αžΈαž‡αž½αžŸαž‡αž»αž›αž€αžΆαžšαžšαž…αž“αžΆαž“αŸαŸ‡ αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž‘αž‘αž½αž›αž”αžΆαž“αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž–αžΈαžšαž–αžΈαž€αžΌαžŠαŸ– αž’αž»αž αŸ’αžœαžŸαž·αž αž“αž·αž„αž›αŸαžαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ‚αž›αž’αŸ’αž“αž€αž…αž„αŸ‹αžŠαžΆαž€αŸ‹αž›αž‘αŸ’αž’αž•αž›αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž“αžΈαž˜αž½αž™αŸ—αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“ αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαžšαŸ€αž”αž…αŸ†αž”αŸ†αžŽαŸ‚αž€αž“αŸƒαž›αŸαžαž€αžΌαžŠαž‡αžΆαž˜αž»αž“αŸ”

patches = {}
patches[0] = (0x00, 0xbf, 0x01, 0x48, 0x00, 0x68, 0x02, 0xe0)
patches[1] = (0x00, 0xbf, 0x01, 0x49, 0x09, 0x68, 0x02, 0xe0)
patches[2] = (0x00, 0xbf, 0x01, 0x4a, 0x12, 0x68, 0x02, 0xe0)
patches[3] = (0x00, 0xbf, 0x01, 0x4b, 0x1b, 0x68, 0x02, 0xe0)
patches[4] = (0x00, 0xbf, 0x01, 0x4c, 0x24, 0x68, 0x02, 0xe0)
patches[5] = (0x00, 0xbf, 0x01, 0x4d, 0x2d, 0x68, 0x02, 0xe0)
patches[8] = (0x00, 0xbf, 0xdf, 0xf8, 0x06, 0x80, 0xd8, 0xf8, 0x00, 0x80, 0x01, 0xe0)
patches[9] = (0x00, 0xbf, 0xdf, 0xf8, 0x06, 0x90, 0xd9, 0xf8, 0x00, 0x90, 0x01, 0xe0)
patches[10] = (0x00, 0xbf, 0xdf, 0xf8, 0x06, 0xa0, 0xda, 0xf8, 0x00, 0xa0, 0x01, 0xe0)
patches[11] = (0x00, 0xbf, 0xdf, 0xf8, 0x06, 0xb0, 0xdb, 0xf8, 0x00, 0xb0, 0x01, 0xe0)
ea = here()
if (get_wide_word(ea) == 0xb082 #SUB SP, SP, #8
and get_wide_word(ea + 2) == 0xb503): #PUSH {R0,R1,LR}
if get_operand_type(ea + 4, 0) == 7:
pop = get_bytes(ea + 12, 4, 0)
if pop[1] == 'xbc':
register = -1
r = get_wide_byte(ea + 12)
for i in range(8):
if r == (1 << i):
register = i
break
if register == -1:
print "Unable to detect register"
else:
address = get_wide_dword(ea + 8) + ea + 8
for b in patches[register]:
patch_byte(ea, b)
ea += 1
if ea % 4 != 0:
ea += 2
patch_dword(ea, address)
elif pop[:3] == 'x5dxf8x04':
register = ord(pop[3]) >> 4
if register in patches:
address = get_wide_dword(ea + 8) + ea + 8
for b in patches[register]:
patch_byte(ea, b)
ea += 1
patch_dword(ea, address)
else:
print "POP instruction not found"
else:
print "Wrong operand type on +4:", get_operand_type(ea + 4, 0)
else:
print "Unable to detect first instructions"

αž™αžΎαž„αžŠαžΆαž€αŸ‹αž‘αžŸαŸ’αžŸαž“αŸαž‘αŸ’αžšαž“αž·αž…αž“αŸ…αžŠαžΎαž˜αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž™αžΎαž„αž…αž„αŸ‹αž‡αŸ†αž“αž½αžŸ - 0xB4B2 - αž αžΎαž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž”αŸ–

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αžšαžΆαž”αŸ‹αžšαž½αž…αž αžΎαž™ αž€αžΌαžŠαž€αŸαž˜αžΆαž“αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αžŠαžΌαž…αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž˜αž»αž“ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ† BLX αž˜αžΆαž“αž’αž»αž αŸ’αžœαžŸαž·αžαž˜αž½αž™αŸ–

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž™αžΎαž„αž™αž€αž’αž»αž αŸ’αžœαžŸαž·αžαž‘αŸ…αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž–αžΈ LR αž”αž“αŸ’αžαŸ‚αž˜αžœαžΆαž‘αŸ… LR αž αžΎαž™αž‘αŸ…αž‘αžΈαž“αŸ„αŸ‡αŸ” 0x72044 + 0xC = 0x72050 αŸ” αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžšαž…αž“αžΆαž“αŸαŸ‡αž‚αžΊαžŸαžΆαž˜αž‰αŸ’αž‰αžŽαžΆαžŸαŸ‹αŸ–

def put_unconditional_branch(source, destination):
offset = (destination - source - 4) >> 1
if offset > 2097151 or offset < -2097152:
raise RuntimeError("Invalid offset")
if offset > 1023 or offset < -1024:
instruction1 = 0xf000 | ((offset >> 11) & 0x7ff)
instruction2 = 0xb800 | (offset & 0x7ff)
patch_word(source, instruction1)
patch_word(source + 2, instruction2)
else:
instruction = 0xe000 | (offset & 0x7ff)
patch_word(source, instruction)
ea = here()
if get_wide_word(ea) == 0xb503: #PUSH {R0,R1,LR}
ea1 = ea + 6
if get_wide_word(ea + 2) == 0xbf00: #NOP
ea1 += 2
offset = get_wide_dword(ea1)
put_unconditional_branch(ea, (ea1 + offset) & 0xffffffff)
else:
print "Unable to detect first instruction"

αž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžŸαŸ’αž‚αŸ’αžšαžΈαž”αŸ–

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αžœαžΈαŸ—αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αž½αžŸαž‡αž»αž›αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αž»αžαž„αžΆαžš αž’αŸ’αž“αž€αž’αžΆαž…αž…αž„αŸ’αž’αž»αž› IDA αž‘αŸ…αž€αžΆαž“αŸ‹αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαžšαž”αžŸαŸ‹αžœαžΆαŸ” αžœαžΆαž“αžΉαž„αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž“αžΌαžœαž€αžΌαžŠαž˜αž»αžαž„αžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž αžΎαž™αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ†αž”αŸ‚αž€αžŠαŸ„αž™αž”αŸ’αžšαžΎ HexRaysαŸ”

αž€αžΆαžšαžŒαž·αž€αžΌαžŠαžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžš

αž™αžΎαž„β€‹αž”αžΆαž“β€‹αžšαŸ€αž“β€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™β€‹αž‡αžΆαž˜αž½αž™β€‹αž“αžΉαž„β€‹αž€αžΆαžšβ€‹αž…αŸ’αžšαž”αžΌαž€αž…αŸ’αžšαž”αž›αŸ‹β€‹αž“αŸƒβ€‹αž€αžΌαžŠβ€‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“β€‹αž“αŸ…β€‹αž€αŸ’αž“αž»αž„β€‹αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ libsgmainso-6.4.36.so αž–αžΈ UC Browser αž αžΎαž™αž”αžΆαž“αž‘αž‘αž½αž›αž€αžΌαžŠαž˜αž»αžαž„αžΆαžš JNI_OnLoad.

int __fastcall real_JNI_OnLoad(JavaVM *vm)
{
int result; // r0
jclass clazz; // r0 MAPDST
int v4; // r0
JNIEnv *env; // r4
int v6; // [sp-40h] [bp-5Ch]
int v7; // [sp+Ch] [bp-10h]
v7 = *(_DWORD *)off_8AC00;
if ( !vm )
goto LABEL_39;
sub_7C4F4();
env = (JNIEnv *)sub_7C5B0(0);
if ( !env )
goto LABEL_39;
v4 = sub_72CCC();
sub_73634(v4);
sub_73E24(&unk_83EA6, &v6, 49);
clazz = (jclass)((int (__fastcall *)(JNIEnv *, int *))(*env)->FindClass)(env, &v6);
if ( clazz
&& (sub_9EE4(),
sub_71D68(env),
sub_E7DC(env) >= 0
&& sub_69D68(env) >= 0
&& sub_197B4(env, clazz) >= 0
&& sub_E240(env, clazz) >= 0
&& sub_B8B0(env, clazz) >= 0
&& sub_5F0F4(env, clazz) >= 0
&& sub_70640(env, clazz) >= 0
&& sub_11F3C(env) >= 0
&& sub_21C3C(env, clazz) >= 0
&& sub_2148C(env, clazz) >= 0
&& sub_210E0(env, clazz) >= 0
&& sub_41B58(env, clazz) >= 0
&& sub_27920(env, clazz) >= 0
&& sub_293E8(env, clazz) >= 0
&& sub_208F4(env, clazz) >= 0) )
{
result = (sub_B7B0(env, clazz) >> 31) | 0x10004;
}
else
{
LABEL_39:
result = -1;
}
return result;
}

αž…αžΌαžšαž™αžΎαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž±αŸ’αž™αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αž”αžΆαžŸαŸ‹αž“αžΌαžœαž”αž“αŸ’αž‘αžΆαžαŸ‹αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

  sub_73E24(&unk_83EA6, &v6, 49);
clazz = (jclass)((int (__fastcall *)(JNIEnv *, int *))(*env)->FindClass)(env, &v6);

αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αž»αžαž„αžΆαžš sub_73E24 αžˆαŸ’αž˜αŸ„αŸ‡αžαŸ’αž“αžΆαž€αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŒαž·αž‚αŸ’αžšαžΈαž”αž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹αŸ” αž‡αžΆαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž“αŸƒαž˜αž»αžαž„αžΆαžšαž“αŸαŸ‡ αž‘αŸ’αžšαž“αž·αž…αž‘αŸ…αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŸαŸ’αžšαžŠαŸ€αž„αž“αžΉαž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž” αžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹ αž“αž·αž„αž›αŸαžαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αŸ” αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž αŸ…αž˜αž»αžαž„αžΆαžšαžšαž½αž… αžœαžΆαž“αžΉαž„αž˜αžΆαž“αž”αž“αŸ’αž‘αžΆαžαŸ‹αžŒαž·αž‚αŸ’αžšαžΈαž”αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“ αž–αŸ’αžšαŸ„αŸ‡αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž‘αŸ…αž˜αž»αžαž„αžΆαžš αžŸαŸ’αžœαŸ‚αž„αžšαž€αžαŸ’αž“αžΆαž€αŸ‹αžŠαŸ‚αž›αž™αž€αžˆαŸ’αž˜αŸ„αŸ‡αžαŸ’αž“αžΆαž€αŸ‹αž‡αžΆαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž‘αžΈαž–αžΈαžšαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž›αŸαžαž‚αžΊαž‡αžΆαž‘αŸ†αž αŸ†αž“αŸƒαžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“ αž¬αž”αŸ’αžšαžœαŸ‚αž„αž“αŸƒαž”αž“αŸ’αž‘αžΆαžαŸ‹αŸ” αž…αžΌαžšαž™αžΎαž„αž–αŸ’αž™αžΆαž™αžΆαž˜ decipher αžˆαŸ’αž˜αŸ„αŸ‡αžαŸ’αž“αžΆαž€αŸ‹ αžœαžΆαž‚αž½αžšαžαŸ‚αž”αŸ’αžšαžΆαž”αŸ‹αž™αžΎαž„αžαžΆαžαžΎαž™αžΎαž„αž€αŸ†αž–αž»αž„αžŠαžΎαžšαž€αŸ’αž“αž»αž„αž‘αž·αžŸαžŠαŸ…αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž¬αž’αžαŸ‹ αž…αžΌαžšαž™αžΎαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž±αŸ’αž™αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αž”αžΆαžŸαŸ‹αž“αžΌαžœαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„ sub_73E24.

int __fastcall sub_73E56(unsigned __int8 *in, unsigned __int8 *out, size_t size)
{
int v4; // r6
int v7; // r11
int v8; // r9
int v9; // r4
size_t v10; // r5
int v11; // r0
struc_1 v13; // [sp+0h] [bp-30h]
int v14; // [sp+1Ch] [bp-14h]
int v15; // [sp+20h] [bp-10h]
v4 = 0;
v15 = *(_DWORD *)off_8AC00;
v14 = 0;
v7 = sub_7AF78(17);
v8 = sub_7AF78(size);
if ( !v7 )
{
v9 = 0;
goto LABEL_12;
}
(*(void (__fastcall **)(int, const char *, int))(v7 + 12))(v7, "DcO/lcK+h?m3c*q@", 16);
if ( !v8 )
{
LABEL_9:
v4 = 0;
goto LABEL_10;
}
v4 = 0;
if ( !in )
{
LABEL_10:
v9 = 0;
goto LABEL_11;
}
v9 = 0;
if ( out )
{
memset(out, 0, size);
v10 = size - 1;
(*(void (__fastcall **)(int, unsigned __int8 *, size_t))(v8 + 12))(v8, in, v10);
memset(&v13, 0, 0x14u);
v13.field_4 = 3;
v13.field_10 = v7;
v13.field_14 = v8;
v11 = sub_6115C(&v13, &v14);
v9 = v11;
if ( v11 )
{
if ( *(_DWORD *)(v11 + 4) == v10 )
{
qmemcpy(out, *(const void **)v11, v10);
v4 = *(_DWORD *)(v9 + 4);
}
else
{
v4 = 0;
}
goto LABEL_11;
}
goto LABEL_9;
}
LABEL_11:
sub_7B148(v7);
LABEL_12:
if ( v8 )
sub_7B148(v8);
if ( v9 )
sub_7B148(v9);
return v4;
}

αž˜αž»αžαž„αžΆαžš sub_7AF78 αž”αž„αŸ’αž€αžΎαžαž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž€αž»αž„αžαžΊαž“αŸαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αžΆαžšαŸαž”αŸƒαž“αŸƒαž‘αŸ†αž αŸ†αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹ (αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αžšαžŸαŸ‹αž“αŸ…αž›αžΎαž’αž»αž„αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž›αž˜αŸ’αž’αž·αžαž‘αŸ)αŸ” αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž’αž»αž„αž–αžΈαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„: αž˜αž½αž™αž˜αžΆαž“αž”αž“αŸ’αž‘αžΆαžαŸ‹ "DcO/lcK+h?m3c*q@" (αžœαžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž‘αžΆαž™αžαžΆαž“αŸαŸ‡αž‚αžΊαž‡αžΆαžŸαŸ„) αž˜αž½αž™αž‘αŸ€αžαž˜αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αžœαžαŸ’αžαž»αž‘αžΆαŸ†αž„αž–αžΈαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž€αŸ’αž“αž»αž„αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™ αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž‘αŸ…αž˜αž»αžαž„αžΆαžš sub_6115C. αž…αžΌαžšαž™αžΎαž„αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžœαžΆαž›αž˜αž½αž™αžŠαŸ‚αž›αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒ 3 αž€αŸ’αž“αž»αž„αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸαŸ‡αž•αž„αžŠαŸ‚αžšαŸ” αžαŸ„αŸ‡αž˜αžΎαž›αžαžΆαžαžΎαž˜αžΆαž“αž’αŸ’αžœαžΈαž€αžΎαžαž‘αžΎαž„αž…αŸ†αž–αŸ„αŸ‡αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸαŸ‡αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž‘αŸ€αžαŸ”

int __fastcall sub_611B4(struc_1 *a1, _DWORD *a2)
{
int v3; // lr
unsigned int v4; // r1
int v5; // r0
int v6; // r1
int result; // r0
int v8; // r0
*a2 = 820000;
if ( a1 )
{
v3 = a1->field_14;
if ( v3 )
{
v4 = a1->field_4;
if ( v4 < 0x19 )
{
switch ( v4 )
{
case 0u:
v8 = sub_6419C(a1->field_0, a1->field_10, v3);
goto LABEL_17;
case 3u:
v8 = sub_6364C(a1->field_0, a1->field_10, v3);
goto LABEL_17;
case 0x10u:
case 0x11u:
case 0x12u:
v8 = sub_612F4(
a1->field_0,
v4,
*(_QWORD *)&a1->field_8,
*(_QWORD *)&a1->field_8 >> 32,
a1->field_10,
v3,
a2);
goto LABEL_17;
case 0x14u:
v8 = sub_63A28(a1->field_0, v3);
goto LABEL_17;
case 0x15u:
sub_61A60(a1->field_0, v3, a2);
return result;
case 0x16u:
v8 = sub_62440(a1->field_14);
goto LABEL_17;
case 0x17u:
v8 = sub_6226C(a1->field_10, v3);
goto LABEL_17;
case 0x18u:
v8 = sub_63530(a1->field_14);
LABEL_17:
v6 = 0;
if ( v8 )
{
*a2 = 0;
v6 = v8;
}
return v6;
default:
LOWORD(v5) = 28032;
goto LABEL_5;
}
}
}
}
LOWORD(v5) = -27504;
LABEL_5:
HIWORD(v5) = 13;
v6 = 0;
*a2 = v5;
return v6;
}

αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšβ€‹αž”αŸ’αžŠαžΌαžšβ€‹αž‚αžΊβ€‹αž‡αžΆβ€‹αžœαžΆαž›β€‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’β€‹αžŠαŸ‚αž›β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž€αŸ†αžŽαžαŸ‹β€‹αžαž˜αŸ’αž›αŸƒβ€‹αž–αžΈβ€‹αž˜αž»αž“ 3. αž˜αžΎαž›β€‹αž€αžšαžŽαžΈβ€‹αž‘αžΈ 3αŸ– αž‘αŸ…β€‹αž˜αž»αžαž„αžΆαžš sub_6364C αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž–αžΈαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αž€αŸ’αž“αž»αž„αž˜αž»αžαž„αžΆαžšαž˜αž»αž“ αž–αŸ„αž›αž‚αžΊ αžŸαŸ„ αž“αž·αž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž™αŸ‰αžΆαž„αž‡αž·αžαžŸαŸ’αž“αž·αž‘αŸ’αž’ sub_6364Cαž’αŸ’αž“αž€αž’αžΆαž…αžŸαŸ’αž‚αžΆαž›αŸ‹ RC4 algorithm αž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆαŸ”

αž™αžΎαž„αž˜αžΆαž“αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ αž“αž·αž„αž‚αž“αŸ’αž›αžΉαŸ‡αž˜αž½αž™αŸ” αžαŸ„αŸ‡β€‹αž–αŸ’αž™αžΆαž™αžΆαž˜β€‹αžŒαž·αž‚αŸ’αžšαžΈαž”β€‹αžˆαŸ’αž˜αŸ„αŸ‡β€‹αžαŸ’αž“αžΆαž€αŸ‹αŸ” αž“αŸαŸ‡αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž”αžΆαž“αž€αžΎαžαž‘αžΎαž„αŸ– com/taobao/wireless/security/adapter/JNICLibrary. αž’αžŸαŸ’αž…αžΆαžšαŸ’αž™! αž™αžΎαž„αžŸαŸ’αžαž·αžαž“αŸ…αž›αžΎαž•αŸ’αž›αžΌαžœαžαŸ’αžšαžΌαžœαŸ”

αžŠαžΎαž˜αžˆαžΎαž”αž‰αŸ’αž‡αžΆ

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αžαŸ’αžšαžΌαžœαžŸαŸ’αžœαŸ‚αž„αžšαž€αž”αž‰αŸ’αž αžΆαž”αŸ’αžšαžˆαž˜αž˜αž½αž™αŸ” αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž‡αž“αž‡αžΆαžαž·αžŠαžΎαž˜αžŠαŸ‚αž›αž“αžΉαž„αž…αž„αŸ’αž’αž»αž›αž™αžΎαž„αž‘αŸ…αž˜αž»αžαž„αžΆαžš doCommandNative. αžαŸ„αŸ‡αž˜αžΎαž›αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž αŸ…αžαžΆαž–αžΈ JNI_OnLoad, αž αžΎαž™αž™αžΎαž„αžšαž€αžƒαžΎαž‰αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„ sub_B7B0:

int __fastcall sub_B7F6(JNIEnv *env, jclass clazz)
{
char signature[41]; // [sp+7h] [bp-55h]
char name[16]; // [sp+30h] [bp-2Ch]
JNINativeMethod method; // [sp+40h] [bp-1Ch]
int v8; // [sp+4Ch] [bp-10h]
v8 = *(_DWORD *)off_8AC00;
decryptString((unsigned __int8 *)&unk_83ED9, (unsigned __int8 *)name, 0x10u);// doCommandNative
decryptString((unsigned __int8 *)&unk_83EEA, (unsigned __int8 *)signature, 0x29u);// (I[Ljava/lang/Object;)Ljava/lang/Object;
method.name = name;
method.signature = signature;
method.fnPtr = sub_B69C;
return ((int (__fastcall *)(JNIEnv *, jclass, JNINativeMethod *, int))(*env)->RegisterNatives)(env, clazz, &method, 1) >> 31;
}

αž αžΎαž™αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžŠαžΎαž˜αžŠαŸ‚αž›αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž“αŸ…αž‘αžΈαž“αŸαŸ‡ doCommandNative. αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αžŠαžΉαž„αž–αžΈαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžšαž”αžŸαŸ‹αž‚αžΆαžαŸ‹αŸ” αžαŸ„αŸ‡αž˜αžΎαž›αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž‚αžΆαžαŸ‹αž’αŸ’αžœαžΎαŸ”

int __fastcall doCommandNative(JNIEnv *env, jobject obj, int command, jarray args)
{
int v5; // r5
struc_2 *a5; // r6
int v9; // r1
int v11; // [sp+Ch] [bp-14h]
int v12; // [sp+10h] [bp-10h]
v5 = 0;
v12 = *(_DWORD *)off_8AC00;
v11 = 0;
a5 = (struc_2 *)malloc(0x14u);
if ( a5 )
{
a5->field_0 = 0;
a5->field_4 = 0;
a5->field_8 = 0;
a5->field_C = 0;
v9 = command % 10000 / 100;
a5->field_0 = command / 10000;
a5->field_4 = v9;
a5->field_8 = command % 100;
a5->field_C = env;
a5->field_10 = args;
v5 = sub_9D60(command / 10000, v9, command % 100, 1, (int)a5, &v11);
}
free(a5);
if ( !v5 && v11 )
sub_7CF34(env, v11, &byte_83ED7);
return v5;
}

αžαžΆαž˜αžˆαŸ’αž˜αŸ„αŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž‘αžΆαž™αž”αžΆαž“αžαžΆαž“αŸαŸ‡αž‚αžΊαž‡αžΆαž…αŸ†αžŽαž»αž…αž…αžΌαž›αž“αŸƒαž˜αž»αžαž„αžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž•αŸ’αž‘αŸαžšαž‘αŸ…αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαžΎαž˜αŸ” αž™αžΎαž„αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž›αžΎαž˜αž»αžαž„αžΆαžš 10601 αŸ”

αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž–αžΈαž€αžΌαžŠαžŠαŸ‚αž›αž›αŸαžαž”αž‰αŸ’αž‡αžΆαž”αž„αŸ’αž€αžΎαžαž›αŸαžαž”αžΈαŸ– αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ / 10000, αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ % 10000 / 100 ΠΈ αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ % 10ឧ. αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„ 1, 6 αž“αž·αž„ 1αŸ” αž›αŸαžαž‘αžΆαŸ†αž„αž”αžΈαž“αŸαŸ‡ αž€αŸαžŠαžΌαž…αž‡αžΆαž‘αŸ’αžšαž“αž·αž…αž‘αŸ… JNIEnv αž αžΎαž™αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž‘αŸ…αž’αž“αž»αž‚αž˜αž“αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž˜αž½αž™αž αžΎαž™αž”αž‰αŸ’αž‡αžΌαž“αž”αž“αŸ’αžαŸ” αžŠαŸ„αž™β€‹αž”αŸ’αžšαžΎβ€‹αž›αŸαžβ€‹αž”αžΈβ€‹αžŠαŸ‚αž›β€‹αž‘αž‘αž½αž›β€‹αž”αžΆαž“ (αžŸαžΌαž˜β€‹αž”αž‰αŸ’αž‡αžΆαž€αŸ‹β€‹αž–αž½αž€αžœαžΆ N1, N2 αž“αž·αž„ N3) αž˜αŸ‚αž€αž’αžΆαž„β€‹αž–αžΆαž€αŸ’αž™β€‹αž”αž‰αŸ’αž‡αžΆβ€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž‘αžΎαž„αŸ”

αž’αŸ’αžœαžΈαž˜αž½αž™β€‹αžŠαžΌαž…αž“αŸαŸ‡:

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αžŠαžΎαž˜αžˆαžΎαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ†αž–αŸαž‰αžŠαŸ„αž™αžαžΆαž˜αžœαž“αŸ’αž JNI_OnLoad.
αž›αŸαžαž”αžΈαž”αžΆαž“αž’αŸŠαž·αž“αž€αžΌαžŠαž•αŸ’αž›αžΌαžœαž“αŸ…αž€αŸ’αž“αž»αž„αžŠαžΎαž˜αžˆαžΎαŸ” αžŸαŸ’αž›αžΉαž€αž“αžΈαž˜αž½αž™αŸ—αž“αŸƒαž˜αŸ‚αž€αž’αžΆαž„αž˜αžΆαž“αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ pocked αž“αŸƒαž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαŸ” αž‚αž“αŸ’αž›αžΉαŸ‡αž‚αžΊαž“αŸ…αž€αŸ’αž“αž»αž„αžαŸ’αž“αžΆαŸ†αž„αž˜αŸαŸ” αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αž“αŸ’αž›αŸ‚αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαžŠαŸ‚αž›αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž˜αŸ‚αž€αž’αžΆαž„αž˜αž·αž“αž–αž·αž”αžΆαž€αž‘αŸ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž™αž›αŸ‹αž–αžΈαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαžΎ (αž™αžΎαž„αž˜αž·αž“αž–αžŽαŸŒαž“αžΆαž–αž½αž€αžœαžΆαžŠαžΎαž˜αŸ’αž”αžΈαž€αž»αŸ†αž±αŸ’αž™αž’αžαŸ’αžαž”αž‘αž’αŸ†αž‡αžΆαž„αž“αŸαŸ‡)αŸ”

αž—αžΆαž–αž…αŸ’αžšαž”αžΌαž€αž…αŸ’αžšαž”αž›αŸ‹αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αž

αž™αžΎαž„αž”αžΆαž“αž‘αž‘αž½αž›αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž“αŸƒαž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž‚αž½αžšαžŒαž·αž‚αŸ’αžšαžΈαž”αž…αžšαžΆαž…αžšαžŽαŸαŸ– 0x5F1AC αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž›αžΏαž“αž–αŸαž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαžšαžΈαž€αžšαžΆαž™αŸ– αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ UC Browser αž”αžΆαž“αžšαŸ€αž”αž…αŸ†αž€αžΆαžšαž—αŸ’αž‰αžΆαž€αŸ‹αž•αŸ’αž’αžΎαž›αž˜αž½αž™αž‘αŸ€αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αž½αž€αž™αžΎαž„αŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž‘αž‘αž½αž›αž”αžΆαž“αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž–αžΈαž’αžΆαžšαŸαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠ Java αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“
αž‘αŸ…αž˜αž»αžαž„αžΆαžšαž“αŸ…αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ 0x4D070 αŸ” αž αžΎαž™αž“αŸ…αž‘αžΈαž“αŸαŸ‡ αž”αŸ’αžšαž—αŸαž‘αž“αŸƒαž€αžΆαžšαž›αžΆαž€αŸ‹αž”αžΆαŸ†αž„αž€αžΌαžŠαž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž€αŸ†αž–αž»αž„αžšαž„αŸ‹αž…αžΆαŸ†αž™αžΎαž„αŸ”

αž™αžΎαž„αžŠαžΆαž€αŸ‹αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž–αžΈαžšαž€αŸ’αž“αž»αž„ R7 αž“αž·αž„ R4αŸ–

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž™αžΎαž„αž”αŸ’αžαžΌαžšαžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž‘αžΈαž˜αž½αž™αž‘αŸ… R11αŸ–

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž–αžΈαžαžΆαžšαžΆαž„ αžŸαžΌαž˜αž”αŸ’αžšαžΎαž›αž·αž”αž·αž€αŸ’αžšαž˜αŸ–

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž‘αžΈαž˜αž½αž™ αž›αž·αž”αž·αž€αŸ’αžšαž˜αž‘αžΈαž–αžΈαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎ αžŠαŸ‚αž›αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„ R4αŸ” αž˜αžΆαž“ 230 αž’αžΆαžαž»αž“αŸ…αž€αŸ’αž“αž»αž„αžαžΆαžšαžΆαž„αŸ”

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαž’αŸ†αž–αžΈαžœαžΆ? αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΆαž”αŸ‹ IDA αžαžΆαž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αž»αž„αžαžΆαž€αŸ‹αŸ– αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž› -> αž•αŸ’αžŸαŸαž„αž‘αŸ€αž -> αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž€αžΆαžšαž”αŸ’αžαžΌαžš idiom αŸ”

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž›αŸαžαž€αžΌαžŠαž›αž‘αŸ’αž’αž•αž›αž‚αžΊαž‚αž½αžšαž±αŸ’αž™αžαŸ’αž›αžΆαž…αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚ αž€αžΆαžšβ€‹αž’αŸ’αžœαžΎβ€‹αž•αŸ’αž›αžΌαžœβ€‹αž€αžΆαžαŸ‹β€‹αž–αŸ’αžšαŸƒβ€‹αžšαž”αžŸαŸ‹β€‹αžœαžΆ αž’αŸ’αž“αž€β€‹αž’αžΆαž…β€‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹β€‹αžƒαžΎαž‰β€‹αž€αžΆαžšβ€‹αž αŸ…β€‹αž‘αŸ…β€‹αž˜αž»αžαž„αžΆαžšβ€‹αžŠαŸ‚αž›β€‹αž™αžΎαž„β€‹αž’αŸ’αž›αžΆαž”αŸ‹β€‹αžŸαŸ’αž‚αžΆαž›αŸ‹β€‹αžšαž½αž…β€‹αž αžΎαž™αŸ” sub_6115C:

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž˜αžΆαž“αž€αž»αž„αžαžΆαž€αŸ‹αžŠαŸ‚αž›αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž‘αžΈ 3 αž˜αžΆαž“αž€αžΆαžšαžŒαž·αž‚αŸ’αžšαžΈαž”αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ RC4 αŸ” αž αžΎαž™αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž‘αŸ…αž˜αž»αžαž„αžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ†αž–αŸαž‰αž–αžΈαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž‘αŸ… doCommandNative. αž…αžΌαžšαž™αžΎαž„αž…αž„αž…αžΆαŸ†αž“αžΌαžœαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αž˜αžΆαž“αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡ αžœαŸαž‘αž˜αž“αŸ’αžαž’αŸŠαžΈαž“ αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžαž˜αŸ’αž›αŸƒ 16. αž™αžΎαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž€αžšαžŽαžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆ αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‡αžΆαž…αŸ’αžšαžΎαž“ αž™αžΎαž„αžšαž€αžƒαžΎαž‰αž€αžΌαžŠαžŠαŸ‚αž›αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαŸ”

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž“αŸαŸ‡αž‚αžΊαž‡αžΆ AES!

αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž˜αžΆαž“αž αžΎαž™ αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž“αŸ…αžŸαŸαžŸαžŸαž›αŸ‹αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžšαž”αžŸαŸ‹αžœαžΆαŸ– αžšαž”αŸ€αž” αž‚αž“αŸ’αž›αžΉαŸ‡ αž“αž·αž„ αžœαŸ‰αž·αž…αž‘αŸαžšαž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ (αžœαžαŸ’αžαž˜αžΆαž“αžšαž”αžŸαŸ‹αžœαžΆαž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαžšαž”αŸ€αž”αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸƒαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ AES) αŸ” αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‡αžΆαž˜αž½αž™αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αž“αŸ’αž›αŸ‚αž„αžŽαžΆαž˜αž½αž™αž˜αž»αž“αž–αŸαž›αž€αžΆαžšαž αŸ…αž˜αž»αžαž„αžΆαžš sub_6115Cαž”αŸ‰αž»αž“αŸ’αžαŸ‚αž•αŸ’αž“αŸ‚αž€αž“αŸƒαž€αžΌαžŠαž“αŸαŸ‡αž˜αžΆαž“αž—αžΆαž–αž…αŸ’αžšαž”αžΌαž€αž…αŸ’αžšαž”αž›αŸ‹αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‚αŸ†αž“αž·αžαž€αžΎαžαž‘αžΎαž„αžŠαžΎαž˜αŸ’αž”αžΈαž‡αž½αžŸαž‡αž»αž›αž€αžΌαžŠ αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸƒαž˜αž»αžαž„αžΆαžšαžŒαž·αž‚αŸ’αžšαžΈαž”αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ„αŸ‡αž…αŸ„αž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαŸ”

αž”αŸ†αžŽαŸ‡

αžŠαžΎαž˜αŸ’αž”αžΈαž€αž»αŸ†αž±αŸ’αž™αžŸαžšαžŸαŸαžšαž€αžΌαžŠαž”αŸ†αžŽαŸ‡αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‡αžΆαž—αžΆαžŸαžΆαžŠαŸ†αž‘αžΎαž„αžŠαŸ„αž™αžŠαŸƒ αž’αŸ’αž“αž€αž’αžΆαž…αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Android Studio αžŸαžšαžŸαŸαžšαž˜αž»αžαž„αžΆαžšαž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αžŠαŸ‚αž›αž‘αž‘αž½αž›αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž”αž‰αŸ’αž…αžΌαž›αžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αžΉαž„αž˜αž»αžαž„αžΆαžšαžŒαž·αž‚αŸ’αžšαžΈαž”αžšαž”αžŸαŸ‹αž™αžΎαž„ αž αžΎαž™αžŸαžšαžŸαŸαžšαž‘αŸ…αž―αž€αžŸαžΆαžš αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž…αž˜αŸ’αž›αž„-αž”αž·αž‘αž—αŸ’αž‡αžΆαž”αŸ‹αž€αžΌαžŠαžŠαŸ‚αž›αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„αž“αžΉαž„ αž”αž„αŸ’αž€αžΎαžαŸ”

αž˜αž·αžαŸ’αžαž—αŸαž€αŸ’αžαž·αžšαž”αžŸαŸ‹αž™αžΎαž„αž˜αž€αž–αžΈαž€αŸ’αžšαž»αž˜ UC Browser αž€αŸαž”αžΆαž“αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž›αžΎαž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž“αŸƒαž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž€αžΌαžŠαž•αž„αžŠαŸ‚αžšαŸ” αž…αžΌαžšαž™αžΎαž„αž…αžΆαŸ†αžαžΆαž“αŸ…αžŠαžΎαž˜αž“αŸƒαž˜αž»αžαž„αžΆαžšαž“αžΈαž˜αž½αž™αŸ— αž™αžΎαž„αž˜αžΆαž“αž›αŸαžαž€αžΌαžŠαžŸαŸ†αžšαžΆαž˜αžŠαŸ‚αž›αž’αžΆαž…αž‡αŸ†αž“αž½αžŸαž”αžΆαž“αžŠαŸ„αž™αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ” αž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŽαžΆαžŸαŸ‹ πŸ™‚ αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™αž“αŸ…αžŠαžΎαž˜αž˜αž»αžαž„αžΆαžšαž‚αŸ„αž›αžŠαŸ…αž˜αž·αž“αž˜αžΆαž“αž€αž“αŸ’αž›αŸ‚αž„αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΌαžŠαžŠαŸ‚αž›αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‘αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž˜αž½αž™αŸ” αžαŸ’αž‰αž»αŸ†β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αŸ†αž”αŸ‚αž€β€‹αžœαžΆβ€‹αž‡αžΆβ€‹αž•αŸ’αž“αŸ‚αž€ αž αžΎαž™β€‹αž”αŸ’αžšαžΎβ€‹αž”αŸ’αž›αž»αž€β€‹αžŸαŸ†αžšαžΆαž˜β€‹αž–αžΈβ€‹αž˜αž»αžαž„αžΆαžšβ€‹αž‡αž·αžαžαžΆαž„αŸ” αžŸαžšαž»αž”αž˜αžΆαž“αž”αž½αž“αž•αŸ’αž“αŸ‚αž€αŸ”

αž•αŸ’αž“αŸ‚αž€αžŠαŸ†αž”αžΌαž„αŸ–

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜ ARM αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž˜αž»αžαž„αžΆαžšαž”αž½αž“αžŠαŸ†αž”αžΌαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡ R0-R3 αž“αŸ…αžŸαž›αŸ‹αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž‡αž„αŸ‹αŸ” αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡ LR αž•αŸ’αž‘αž»αž€αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžαŸ’αžšαž‘αž”αŸ‹αž˜αž€αžœαž·αž‰αŸ” αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžαŸ’αžšαžΌαžœαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αž˜αž»αžαž„αžΆαžšαž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž™αžΎαž„αž”αŸ„αŸ‡αž…αŸ„αž›αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžšαž”αžŸαŸ‹αžœαžΆαŸ” αž™αžΎαž„αž€αŸαžαŸ’αžšαžΌαžœαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αž’αŸ’αžœαžΎ PUSH.W {R0-R10,LR}αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„ R7 αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž“αŸƒαž”αž‰αŸ’αž‡αžΈαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž‘αŸ…αž˜αž»αžαž„αžΆαžšαžαžΆαž˜αžšαž™αŸˆαž‡αž„αŸ‹αŸ”

αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αž»αžαž„αžΆαžš fopen αžαŸ„αŸ‡αž”αžΎαž€αž―αž€αžŸαžΆαžš /data/local/tmp/aes αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž” "ab"
i.e. αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„ R0 αž™αžΎαž„αž•αŸ’αž‘αž»αž€αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž“αŸƒαžˆαŸ’αž˜αŸ„αŸ‡αž―αž€αžŸαžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„ R1 - αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž“αŸƒαž”αž“αŸ’αž‘αžΆαžαŸ‹αžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž–αžΈαžšαž”αŸ€αž”αŸ” αž αžΎαž™αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž›αŸαžαž€αžΌαžŠαžŸαŸ†αžšαžΆαž˜αž”αž‰αŸ’αž…αž”αŸ‹ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αž”αž“αŸ’αžαž‘αŸ…αž˜αž»αžαž„αžΆαžšαž”αž“αŸ’αž‘αžΆαž”αŸ‹αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αžœαžΆαž”αž“αŸ’αžαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž™αžΎαž„αž”αžΆαž“αžŠαžΆαž€αŸ‹αž“αŸ…αžŠαžΎαž˜αžŠαŸ†αž”αžΌαž„αž“αžΌαžœαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ…αž€αžΌαžŠαž–αž·αžαž“αŸƒαž˜αž»αžαž„αžΆαžš αžŠαŸ„αž™αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžŸαŸ†αžšαžΆαž˜ αž αžΎαž™αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αžŸαŸ†αžšαžΆαž˜αž™αžΎαž„αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž”αž“αŸ’αžαž“αŸƒαž”αŸ†αžŽαŸ‡αŸ”

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘ fopen.

αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž”αžΈαžŠαŸ†αž”αžΌαž„αž“αŸƒαž˜αž»αžαž„αžΆαžš aes αž˜αžΆαž“αž”αŸ’αžšαž—αŸαž‘ int. αžŠαŸ„αž™αžŸαžΆαžšβ€‹αž™αžΎαž„β€‹αž”αžΆαž“β€‹αžšαž€αŸ’αžŸαžΆβ€‹αž‘αž»αž€β€‹αž€αžΆαžšβ€‹αž…αž»αŸ‡β€‹αžˆαŸ’αž˜αŸ„αŸ‡β€‹αž€αŸ’αž“αž»αž„β€‹αž‡αž„αŸ‹β€‹αž“αŸ…β€‹αžŠαžΎαž˜β€‹αžŠαŸ†αž”αžΌαž„ αž™αžΎαž„β€‹αž’αžΆαž…β€‹αž αž»αž…β€‹αž˜αž»αžαž„αžΆαžšβ€‹αž”αžΆαž“β€‹αž™αŸ‰αžΆαž„β€‹αžŸαžΆαž˜αž‰αŸ’αž‰ សរសេរ αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž“αŸ…αž›αžΎαž‡αž„αŸ‹αŸ”

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž”αž“αŸ’αž‘αžΆαž”αŸ‹β€‹αž˜αž€β€‹αž™αžΎαž„β€‹αž˜αžΆαž“β€‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’β€‹αž”αžΈβ€‹αžŠαŸ‚αž›β€‹αž˜αžΆαž“β€‹αž‘αŸ†αž αŸ†β€‹αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž“αž·αž„β€‹αž…αž„αŸ’αž’αž»αž›β€‹αž‘αŸ…β€‹αž‘αž·αž“αŸ’αž“αž“αŸαž™β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž€αžΌαž“αžŸαŸ„ αžœαŸ‰αž·αž…αž‘αŸαžšβ€‹αž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜ αž“αž·αž„β€‹αž‘αž·αž“αŸ’αž“αž“αŸαž™β€‹αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αŸ”

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž“αŸ…αž…αž»αž„αž”αž‰αŸ’αž…αž”αŸ‹αž”αž·αž‘αž―αž€αžŸαžΆαžš αžŸαŸ’αžŠαžΆαžšαž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡ αž“αž·αž„αž•αŸ’αž‘αŸαžšαž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž‘αŸ…αž˜αž»αžαž„αžΆαžšαž–αž·αž aes.

αž™αžΎαž„αž”αŸ’αžšαž˜αžΌαž› APK αž‡αžΆαž˜αž½αž™αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž‡αž½αžŸαž‡αž»αž› αž…αž»αŸ‡αž αžαŸ’αžαž›αŸαžαžΆαž›αžΎαžœαžΆ αž”αž„αŸ’αž αŸ„αŸ‡αžœαžΆαž‘αŸ…αž€αŸ’αž“αž»αž„αž§αž”αž€αžšαžŽαŸ/αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ αž αžΎαž™αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžœαžΆαŸ” αž™αžΎαž„αžƒαžΎαž‰αžαžΆαž€αžΆαžšαž…αžΆαž€αŸ‹αžŸαŸ†αžšαžΆαž˜αžšαž”αžŸαŸ‹αž™αžΎαž„αž€αŸ†αž–αž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαž αž αžΎαž™αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‡αžΆαž…αŸ’αžšαžΎαž“αž€αŸ†αž–αž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αž”αŸ’αžšαžΎαž€αžΆαžšαž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž…αžšαžΆαž…αžšαžŽαŸαž‘αŸ αž αžΎαž™αž€αžΆαžšαž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž…αŸ„αž‘αžŸαž½αžšαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž αŸαžαž»αž•αž›αž˜αž½αž™αž…αŸ†αž“αž½αž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž˜αž·αž“αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡ αž αžΎαž™αžŸαŸ†αžŽαžΎαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαž˜αž·αž“αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž…αžšαžΆαž…αžšαžŽαŸαž‘αŸαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž€αž»αŸ†αž±αŸ’αž™αžšαž„αŸ‹αž…αžΆαŸ†αžšαž αžΌαžαžŠαž›αŸ‹ UC Browser αžšαž…αž“αžΆαžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŸαŸ†αžŽαžΎαž…αžΆαŸ†αž”αžΆαž…αŸ‹ αžŸαžΌαž˜αž‘αž‘αž½αž›αž™αž€αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αžŠαŸ‚αž›αž”αžΆαž“αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŠαŸ‚αž›αž”αžΆαž“αž‘αž‘αž½αž›αž˜αž»αž“αž“αŸαŸ‡ αž αžΎαž™αž‡αž½αžŸαž‡αž»αž›αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αŸ’αžαž„αž‘αŸ€αžαŸ– αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαžŒαž·αž‚αŸ’αžšαžΈαž”αž‘αŸ… onCreate αž“αŸƒαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž…αž˜αŸ’αž”αž„αŸ”

    const/16 v1, 0x62
new-array v1, v1, [B
fill-array-data v1, :encrypted_data
const/16 v0, 0x1f
invoke-static {v0, v1}, Lcom/uc/browser/core/d/c/g;->j(I[B)[B
move-result-object v1
array-length v2, v1
invoke-static {v2}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
move-result-object v2
const-string v0, "ololo"
invoke-static {v0, v2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

αž™αžΎαž„αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ† αž…αž»αŸ‡αž αžαŸ’αžαž›αŸαžαžΆ αžŠαŸ†αž‘αžΎαž„ αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“ NullPointerException αž–αžΈαž–αŸ’αžšαŸ„αŸ‡αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžαŸ’αžšαž‘αž”αŸ‹ null αŸ”

αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž“αŸƒαž€αžΆαžšαžœαž·αž—αžΆαž‚αž”αž“αŸ’αžαŸ‚αž˜αž“αŸƒαž€αžΌαžŠ αž˜αž»αžαž„αžΆαžšαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžšαž€αžƒαžΎαž‰αžŠαŸ‚αž› deciphers αž”αž“αŸ’αž‘αžΆαžαŸ‹αž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸ: "META-INF/" αž“αž·αž„ ".RSA" αŸ” αžœαžΆαž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αž–αž»αž„αž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžšαžšαž”αžŸαŸ‹αžœαžΆαŸ” αž¬αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž”αž„αŸ’αž€αžΎαžαžŸαŸ„αž–αžΈαžœαžΆαŸ” αžαŸ’αž‰αž»αŸ†αž–αž·αžαž‡αžΆαž˜αž·αž“αž…αž„αŸ‹αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αž€αžΎαžαž‘αžΎαž„αž‡αžΆαž˜αž½αž™αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžšαž‘αŸ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‘αž˜αŸ’αž›αžΆαž€αŸ‹αžœαžΆαž“αžΌαžœαžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžšαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ” αžαŸ„αŸ‡αž‡αž½αžŸαž‡αž»αž›αž”αž“αŸ’αž‘αžΆαžαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™ "META-INF/" αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“ "BLABLINF/" αž”αž„αŸ’αž€αžΎαžαžαžαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αž“αŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ APK αž αžΎαž™αž”αž“αŸ’αžαŸ‚αž˜αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αžαžΆαž˜αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αŸ”

αž™αžΎαž„αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ† αž…αž»αŸ‡αž αžαŸ’αžαž›αŸαžαžΆ αžŠαŸ†αž‘αžΎαž„ αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αž”αŸŠαžΈαž„αž αŸ’αž‚αŸ„! αž™αžΎαž„αž˜αžΆαž“αž‚αž“αŸ’αž›αžΉαŸ‡!

αž˜αžΈαž’αžΈαž’αžΉαž˜

αž™αžΎαž„αž”αžΆαž“αž‘αž‘αž½αž›αž€αžΌαž“αžŸαŸ„αž˜αž½αž™ αž“αž·αž„αžœαŸ‰αž·αž…αž‘αŸαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŸαŸ’αž˜αžΎαž“αžΉαž„αž€αžΌαž“αžŸαŸ„αŸ” αžαŸ„αŸ‡αž–αŸ’αž™αžΆαž™αžΆαž˜αžŒαž·αž‚αŸ’αžšαžΈαž”αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αžšαž”αžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž” CBC αŸ”

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αž™αžΎαž„αžƒαžΎαž‰αž”αŸαžŽαŸ’αžŽαžŸαžΆαžš URL αžŠαŸ‚αž›αžŸαŸ’αžšαžŠαŸ€αž„αž“αžΉαž„ MD5 β€œextract_unzipsize” αž“αž·αž„αž›αŸαžαž˜αž½αž™αŸ” αž™αžΎαž„αž–αž·αž“αž·αžαŸ’αž™αŸ– MD5 αž“αŸƒαž”αžŽαŸ’αžŽαžŸαžΆαžšαž‚αžΊαžŠαžΌαž…αž‚αŸ’αž“αžΆ αž‘αŸ†αž αŸ†αž“αŸƒαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αž˜αž·αž“αž”αžΆαž“αžœαŸαž…αžαŸ’αž…αž”αŸ‹αž‚αžΊαžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ” αž™αžΎαž„αž€αŸ†αž–αž»αž„αž–αŸ’αž™αžΆαž™αžΆαž˜αž‡αž½αžŸαž‡αž»αž›αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž“αŸαŸ‡ αž αžΎαž™αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αžœαžΆαž‘αŸ…αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž αžΆαž‰αžαžΆαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ†αžŽαŸ‡αžšαž”αžŸαŸ‹αž™αžΎαž„αž”αžΆαž“αž•αŸ’αž‘αž»αž€ αž™αžΎαž„αž“αžΉαž„αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Intent αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαžŸαžΆαžš SMS αžŠαŸ‚αž›αž˜αžΆαž“αž’αž€αŸ’αžŸαžš β€œPWNED!” αž™αžΎαž„αž“αžΉαž„αž‡αŸ†αž“αž½αžŸαž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αž–αžΈαžšαž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαŸ– puds.ucweb.com/upgrade/index.xhtml αž“αž·αž„αžŠαžΎαž˜αŸ’αž”αžΈαž‘αžΆαž‰αž™αž€αž”αŸαžŽαŸ’αžŽαžŸαžΆαžšαŸ” αžŠαŸ†αž”αžΌαž„αž™αžΎαž„αž‡αŸ†αž“αž½αžŸ MD5 (αž‘αŸ†αž αŸ†αž˜αž·αž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž–αž“αŸ’αž›αžΆ) αž“αŸ…αž‘αžΈαž–αžΈαžšαž™αžΎαž„αž•αŸ’αžαž›αŸ‹αž”αŸαžŽαŸ’αžŽαžŸαžΆαžšαž‡αžΆαž˜αž½αž™αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž‡αž½αžŸαž‡αž»αž›αŸ”

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αžαžΆαž˜αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαž–αŸ’αž™αžΆαž™αžΆαž˜αž‘αžΆαž‰αž™αž€αž”αžŽαŸ’αžŽαžŸαžΆαžšαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαž„ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸ„αŸ‡αžœαžΆαž•αŸ’αžαž›αŸ‹αž€αŸ†αž αž»αžŸαŸ” αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αž’αŸ’αžœαžΈαž˜αž½αž™
αž‚αžΆαžαŸ‹β€‹αž˜αž·αž“β€‹αž…αžΌαž›αž…αž·αžαŸ’αžαŸ” αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‘αž˜αŸ’αžšαž„αŸ‹αžŠαŸ‚αž›αžŸαŸ’αžšαž–αž·αž…αžŸαŸ’αžšαž–αž·αž›αž“αŸαŸ‡ αžœαžΆαž”αžΆαž“αž”αŸ’αžšαŸ‚αž€αŸ’αž›αžΆαž™αžαžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž€αŸαž”αž‰αŸ’αž‡αžΌαž“αž‘αŸ†αž αŸ†αž“αŸƒαž”αŸαžŽαŸ’αžŽαžŸαžΆαžšαž•αž„αžŠαŸ‚αžšαŸ–

αž€αŸ†αž–αž»αž„αžšαž€αž˜αžΎαž›αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ UC Browser

αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸŠαž·αž“αž€αžΌαžŠαž“αŸ…αž€αŸ’αž“αž»αž„ LEB128 αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αŸ†αžŽαŸ‡ αž‘αŸ†αž αŸ†αž“αŸƒαž”αŸαžŽαŸ’αžŽαžŸαžΆαžšαž‡αžΆαž˜αž½αž™αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αž“αŸ’αžαž·αž…αž”αž“αŸ’αžαž½αž… αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αž”αžΆαž“αž…αžΆαžαŸ‹αž‘αž»αž€αžαžΆαž”αžŽαŸ’αžŽαžŸαžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž‰αž™αž€αžŠαŸ„αž™αž’αž…αŸαžαž“αžΆ αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž–αŸ’αž™αžΆαž™αžΆαž˜αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαž„ αžœαžΆαž”αžΆαž“αž”αž„αŸ’αž€αž€αŸ†αž αž»αžŸαŸ”

αž™αžΎαž„αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αž‘αŸ†αž αŸ†αž“αŸƒαž”αžŽαŸ’αžŽαžŸαžΆαžš... αž αžΎαž™ - αž‡αŸαž™αž‡αŸ†αž“αŸ‡! πŸ™‚ αž›αž‘αŸ’αž’αž•αž›αž‚αžΊαž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΈαžŠαŸαž’αžΌαŸ”

https://www.youtube.com/watch?v=Nfns7uH03J8

αž•αž›αžœαž·αž”αžΆαž€ αž“αž·αž„αž”αŸ’αžšαžαž·αž€αž˜αŸ’αž˜αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ

αžŠαžΌαž…αž‚αŸ’αž“αžΆαžŠαŸ‚αžš αž–αž½αž€ Hacker αž’αžΆαž…αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αž»αžαž„αžΆαžšαž˜αž·αž“αž˜αžΆαž“αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αžšαž”αžŸαŸ‹ UC Browser αžŠαžΎαž˜αŸ’αž”αžΈαž…αŸ‚αž€αž…αžΆαž™ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αž˜αžΆαž“αž‚αŸ†αž“αž·αžαž’αžΆαž€αŸ’αžšαž€αŸ‹αŸ” αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αž”αž‘αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž–αž½αž€αž‚αŸαž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžšαž”αžŸαŸ‹αžœαžΆαŸ” αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž αžΆαž‰αž”αž„αŸ’αž’αž½αž…αž”αž“αŸ’αž›αŸ† αž€αŸαžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž―αž€αžŸαžΆαžšαž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αžŸαžαŸ’αžœαž€αŸ†αž”αŸ’αžšαž»αž€αž…αž·αž“αž–αžŽαŸŒαž‘αžΉαž€αž€αŸ’αžšαžΌαž… αžšαž½αž˜αž‘αžΆαŸ†αž„αž€αžΆαžšαž…αžΌαž› αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αž“αž·αž„αžαžΌαž‚αžΈαžŠαŸ‚αž›αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ”

αž™αžΎαž„αž”αžΆαž“αž‘αžΆαž€αŸ‹αž‘αž„αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ UC Browser αž“αž·αž„αž‡αžΌαž“αžŠαŸ†αžŽαžΉαž„αž–αž½αž€αž‚αŸαž’αŸ†αž–αžΈαž”αž‰αŸ’αž αžΆαžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αžšαž€αžƒαžΎαž‰ αž–αŸ’αž™αžΆαž™αžΆαž˜αž…αž„αŸ’αž’αž»αž›αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡ αž“αž·αž„αž‚αŸ’αžšαŸ„αŸ‡αžαŸ’αž“αžΆαž€αŸ‹αžšαž”αžŸαŸ‹αžœαžΆ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž–αž½αž€αž‚αŸαž˜αž·αž“αž”αžΆαž“αž–αž·αž—αžΆαž€αŸ’αžŸαžΆαž’αŸ’αžœαžΈαž‡αžΆαž˜αž½αž™αž™αžΎαž„αž‘αŸαŸ” αž‘αž“αŸ’αž‘αžΉαž˜αž“αžΉαž„αž“αŸαŸ‡ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αžαžΆαž˜αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαž”αžΆαž“αž”αž“αŸ’αžαž”αž„αŸ’αž αžΆαž‰αž–αžΈαž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαžŠαŸαž‚αŸ’αžšαŸ„αŸ‡αžαŸ’αž“αžΆαž€αŸ‹αžšαž”αžŸαŸ‹αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž˜αžΎαž›αžƒαžΎαž‰αž’αž˜αŸ’αž˜αžαžΆαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž™αžΎαž„αž”αž„αŸ’αž αžΆαž‰αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž“αŸƒαž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ„αŸ‡ αžœαžΆαž˜αž·αž“αž’αžΆαž…αž˜αž·αž“αž’αžΎαž–αžΎαžœαžΆαžŠαžΌαž…αž–αžΈαž˜αž»αž“αž‘αŸ€αžαž‘αŸαŸ” αžαŸ’αž„αŸƒαž‘αžΈ 27 αžαŸ‚αž˜αžΈαž“αžΆ
αž€αŸ†αžŽαŸ‚αžαŸ’αž˜αžΈαž“αŸƒ UC Browser 12.10.9.1193 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™ αžŠαŸ‚αž›αž…αžΌαž›αž”αŸ’αžšαžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžαžΆαž˜αžšαž™αŸˆ HTTPSαŸ– puds.ucweb.com/upgrade/index.xhtml.

αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ€αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈ "αž‡αž½αžŸαž‡αž»αž›" αž“αž·αž„αžšαž αžΌαžαžŠαž›αŸ‹αž–αŸαž›αž“αŸƒαž€αžΆαžšαžŸαžšαžŸαŸαžšαž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡ αž€αžΆαžšαž–αŸ’αž™αžΆαž™αžΆαž˜αž”αžΎαž€ PDF αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αž”αžΆαž“αž”αžŽαŸ’αžαžΆαž›αž±αŸ’αž™αž˜αžΆαž“αžŸαžΆαžšαž€αŸ†αž αž»αžŸαž‡αžΆαž˜αž½αž™αž’αžαŸ’αžαž”αž‘ "ធូ! αž˜αžΆαž“αž’αŸ’αžœαžΈαžαž»αžŸ!" αžŸαŸ†αžŽαžΎαž‘αŸ…αž€αžΆαž“αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αž“αŸ…αž–αŸαž›αž–αŸ’αž™αžΆαž™αžΆαž˜αž”αžΎαž€ PDF αž“αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαŸ†αžŽαžΎαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž›αž‘αŸ’αž’αž—αžΆαž–αž”αž“αŸ’αžαž€αŸ’αž“αž»αž„αž€αžΆαžšαž‘αžΆαž‰αž™αž€αž€αžΌαžŠαžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“αžŠαŸ„αž™αž”αŸ†αž–αžΆαž“αž…αŸ’αž”αžΆαž”αŸ‹ Google Play αŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹