ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ื”ืงื“ืžื”

ืื™ืŸ ื“ื™ ืกื•ืฃ ืคื•ืŸ ืžืึทืจืฅ ืžื™ืจ ื’ืขืžืืœื“ืŸ, ืึทื– ื–ื™ื™ ื“ื™ืกืงืึทื•ื•ืขืจื“ ืึท ืคืึทืจื‘ืึธืจื’ืŸ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืœืึธื“ืŸ ืื•ืŸ ืœื•ื™ืคืŸ ืึทื ื•ื•ืขืจืึทืคื™ื™ื“ ืงืึธื“ ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ. ื”ื™ื™ึทื ื˜ ืžื™ืจ ื•ื•ืขืœืŸ ืงื•ืงืŸ ืื™ืŸ ื“ืขื˜ืึทืœ ื•ื•ื™ ื“ืขื ืืจืืคืงืืคื™ืข ืึทืงืขืจื– ืื•ืŸ ื•ื•ื™ ื›ืึทืงืขืจื– ืงืขื ืขืŸ ื ื•ืฆืŸ ืขืก ืคึฟืึทืจ ื–ื™ื™ืขืจ ืื™ื™ื’ืขื ืข ืฆื•ื•ืขืงืŸ.

ืขื˜ืœืขื›ืข ืžืึธืœ ืฆื•ืจื™ืง, UC ื‘ืจืึทื•ื–ืขืจ ืื™ื– ื’ืขื•ื•ืขืŸ ืึทื“ื•ื•ืขืจื˜ื™ื™ื–ื“ ืื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื–ื™ื™ืขืจ ืึทื’ืจืขืกื™ื•ื•: ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืื™ื ืกื˜ืึทืœื™ืจืŸ ืื•ื™ืฃ ื™ื•ื–ืขืจื– 'ื“ื™ื•ื•ื™ื™ืกืึทื– ื ื™ืฆืŸ ืžืึทืœื•ื•ืึทืจืข, ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ืคึฟื•ืŸ ืคืึทืจืฉื™ื“ืŸ ื–ื™ื™ื˜ืœืขืš ืื•ื ื˜ืขืจ ื“ื™ ื’ื™ื™ื– ืคื•ืŸ ื•ื•ื™ื“ืขื ื˜ืขืงืขืก (ื“"ื” ื™ื•ื–ืขืจื– ื’ืขื“ืึทื ืง ื–ื™ื™ ื–ืขื ืขืŸ ื“ืึทื•ื ืœืึธื•ื“ื™ื ื’, ืœืžืฉืœ, ืึท ืคึผืึธืจืŸ ื•ื•ื™ื“ืขื, ืึธื‘ืขืจ ืึทื ืฉื˜ืึธื˜ ืึท ืึทืคึผืง ืžื™ื˜ ื“ืขื ื‘ืœืขื˜ืขืจืขืจ), ื’ืขื•ื•ื™ื™ื ื˜ ืกืงืขืจื™ ื‘ืึทื ืขืจื– ืžื™ื˜ ืึทืจื˜ื™ืงืœืขืŸ ืึทื– ื“ืขืจ ื‘ืœืขื˜ืขืจืขืจ ืื™ื– ืึทื•ื˜ื“ื™ื™ื˜ื™ื“, ืฉืคึผื™ืจืขื•ื•ื“ื™ืง, ืื•ืŸ ืึทื–ื•ื™ ืื•ื™ืฃ. ืื™ืŸ ื“ืขืจ ื‘ืึทืึทืžื˜ืขืจ UC ื‘ืจืึทื•ื–ืขืจ ื’ืจื•ืคึผืข ืื•ื™ืฃ VK ืขืก ืื™ื– ื˜ืขืžืข, ืื™ืŸ ื•ื•ืึธืก ื ื™ืฆืขืจืก ืงืขื ืขืŸ ื‘ืึทืงืœืึธื’ื  ื–ื™ืš ื•ื•ืขื’ืŸ ื•ืžื™ื•ื™ืฉืขืจื“ื™ืง ื’ืึทื ืฆืข, ืขืก ื–ืขื ืขืŸ ืคื™ืœืข ื‘ื™ื™ืฉืคื™ืœืŸ ื“ืึธืจื˜. ืื™ืŸ 2016 ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืืคื™ืœื• ื•ื•ื™ื“ืขื ื’ืึทื ืฆืข ืื™ืŸ ืจื•ืกื™ืฉ (ื™ืึธ, ื’ืึทื ืฆืข ืคึฟืึทืจ ืึทืŸ ืึทื“-ื‘ืœืึทืงื™ื ื’ ื‘ืœืขื˜ืขืจืขืจ).

ืื™ืŸ ื“ืขืจ ืฆื™ื™ื˜ ืคื•ืŸ ืฉืจื™ื™ื‘ืŸ, UC ื‘ืจืึทื•ื–ืขืจ ื”ืื˜ ืื™ื‘ืขืจ 500 ื™ื ืกื˜ืึทืœื™ื™ืฉืึทื ื– ืื•ื™ืฃ Google ืคึผืœื™ื™ึท. ื“ืึธืก ืื™ื– ื™ืžืคึผืจืขืกื™ื•ื• - ื‘ืœื•ื™ื– Google ืงืจืึธื•ื ื”ืื˜ ืžืขืจ. ืฆื•ื•ื™ืฉืŸ ื“ื™ ื‘ืืจื™ื›ื˜ืŸ ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ื˜ืขื ื•ืช ื•ื•ืขื’ืŸ ื’ืึทื ืฆืข ืื•ืŸ ืจื™ื“ืขืจืขืงืฅ ืฆื• ืขื˜ืœืขื›ืข ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื•ื™ืฃ Google ืคึผืœื™ื™ึท. ื“ืึธืก ืื™ื– ื’ืขื•ื•ืขืŸ ื“ื™ ืกื™ื‘ื” ืคึฟืึทืจ ืื•ื ื“ื–ืขืจ ืคืึธืจืฉื•ื ื’: ืžื™ืจ ื‘ืึทืฉืœืึธืกืŸ ืฆื• ื–ืขืŸ ืื•ื™ื‘ UC Browser ืื™ื– ื˜ืืŸ ืขืคึผืขืก ืฉืœืขื›ื˜. ืื•ืŸ ืขืก ื”ืึธื˜ ื–ื™ืš ืึทืจื•ื™ืกื’ืขื•ื•ื™ื–ืŸ ืึทื– ืขืจ ื˜ื•ื˜!

ืื™ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืึธื“, ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืึธืคึผืœืึธื“ื™ืจืŸ ืื•ืŸ ืœื•ื™ืคืŸ ืขืงืกืขืงื•ื˜ืึทื‘ืœืข ืงืึธื“ ืื™ื– ื“ื™ืกืงืึทื•ื•ืขืจื“, ื•ื•ืึธืก ืื™ื– ืคืึทืจืงืขืจื˜ ืฆื• ื“ื™ ื›ึผืœืœื™ื ืคึฟืึทืจ ืืจื•ื™ืกื’ืขื‘ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื•ื™ืฃ Google ืคึผืœื™ื™ึท. ืื™ืŸ ืึทื“ื™ืฉืึทืŸ ืฆื• ื“ืึทื•ื ืœืึธื•ื“ื™ื ื’ ืขืงืกืขืงื•ื˜ืึทื‘ืœืข ืงืึธื“, UC ื‘ืจืึทื•ื–ืขืจ ื˜ื•ื˜ ื“ืึธืก ืื•ื™ืฃ ืึท ื™ื ืกืึทืงื™ืขืจ ืฉื˜ื™ื™ื’ืขืจ, ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืฆื• ืงืึทื˜ืขืจ ืึท ืžื™ื˜ื ื‘ืึทืคืึทืœืŸ. ืœืึธืžื™ืจ ื–ืขืŸ ืฆื™ ืžื™ืจ ืงืขื ืขืŸ ื“ื•ืจื›ืคื™ืจืŸ ืึทื–ืึท ืึทื˜ืึทืง.

ืึทืœืฅ ื•ื•ืึธืก ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืื•ื ื˜ืŸ ืื™ื– ื‘ืึทื˜ื™ื™ึทื˜ื™ืง ืคึฟืึทืจ ื“ื™ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹UC ื‘ืจืึทื•ื–ืขืจ ื•ื•ืึธืก ืื™ื– ื’ืขื•ื•ืขืŸ ื‘ืืจืขื›ื˜ื™ื’ื˜ ืื•ื™ืฃ Google ืคึผืœื™ื™ึท ืื™ืŸ ื“ืขืจ ืฆื™ื™ื˜ ืคื•ืŸ ื“ืขื ืœืขืจื ืขืŸ:

package: com.UCMobile.intl
versionName: 12.10.8.1172
versionCode: 10598
sha1 APK-ั„ะฐะนะปะฐ: f5edb2243413c777172f6362876041eb0c3a928c

ื‘ืึทืคืึทืœืŸ ื•ื•ืขืงื˜ืึธืจ

ืื™ืŸ ื“ื™ UC ื‘ืจืึทื•ื–ืขืจ ื‘ืึทืฉื™ื™ึทืžืคึผืขืจืœืขืš ืื™ืจ ืงืขื ืขืŸ ื’ืขืคึฟื™ื ืขืŸ ืึท ื“ื™ื ืกื˜ ืžื™ื˜ ืึท ื–ื™ืš-ื™ืงืกืคึผืœืึทื ืึทื˜ืึธืจื™ ื ืึธืžืขืŸ com.uc.deployment.UpgradeDeployService.

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

ื•ื•ืขืŸ ื“ืขืจ ื“ื™ื ืกื˜ ืกื˜ืึทืจืฅ, ื“ืขืจ ื‘ืœืขื˜ืขืจืขืจ ืžืื›ื˜ ืึท POST ื‘ืขื˜ืŸ ืฆื• puds.ucweb.com/upgrade/index.xhtml, ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื–ืขืŸ ืื™ืŸ ืคืึทืจืงืขืจ ืขื˜ืœืขื›ืข ืžืึธืœ ื ืึธืš ื“ื™ ืึธื ื”ื™ื™ื‘. ืื™ืŸ ืขื ื˜ืคืขืจ, ืขืจ ืงืขืŸ ื‘ืึทืงื•ืžืขืŸ ืึท ื‘ืึทืคึฟืขืœ ืฆื• ืึธืคึผืœืึธื“ื™ืจืŸ ืขื˜ืœืขื›ืข ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ ืึธื“ืขืจ ื ื™ื™ึทืข ืžืึธื“ื•ืœืข. ื‘ืขืฉืึทืก ื“ื™ ืึทื ืึทืœื™ืกื™ืก, ื“ืขืจ ืกืขืจื•ื•ืขืจ ื”ืื˜ ื ื™ืฉื˜ ื’ืขื‘ืŸ ืึทื–ืึท ืงืึทืžืึทื ื“ื–, ืึธื‘ืขืจ ืžื™ืจ ื‘ืืžืขืจืงื˜ ืึทื– ื•ื•ืขืŸ ืžื™ืจ ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ืขืคึฟืขื ืขืŸ ืึท ืคึผื“ืฃ ืื™ืŸ ื“ืขื ื‘ืœืขื˜ืขืจืขืจ, โ€‹โ€‹ืขืก ืžืื›ื˜ ืึท ืฆื•ื•ื™ื™ื˜ ื‘ืขื˜ืŸ ืฆื• ื“ื™ ืึทื“ืจืขืก ืกืคึผืขืกื™ืคื™ืขื“ ืื•ื™ื‘ืŸ, ื ืึธืš ื•ื•ืึธืก ืขืก ื“ืึทื•ื ืœืึธื•ื“ื– ื“ื™ ื’ืขื‘ื•ื™ืจืŸ ื‘ื™ื‘ืœื™ืึธื˜ืขืง. ืฆื• ื“ื•ืจื›ืคื™ืจืŸ ื“ื™ ื‘ืึทืคืึทืœืŸ, ืžื™ืจ ื‘ืึทืฉืœืึธืกืŸ ืฆื• ื ื•ืฆืŸ ื“ืขื ืฉื˜ืจื™ืš ืคื•ืŸ UC ื‘ืจืึทื•ื–ืขืจ: ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืขืคึฟืขื ืขืŸ ืคึผื“ืฃ ื ื™ืฆืŸ ืึท ื’ืขื‘ื•ื™ืจืŸ ื‘ื™ื‘ืœื™ืึธื˜ืขืง, ื•ื•ืึธืก ืื™ื– ื ื™ืฉื˜ ืื™ืŸ ื“ื™ ืึทืคึผืง ืื•ืŸ ื•ื•ืึธืก ืขืก ื“ืึทื•ื ืœืึธื•ื“ื– ืคื•ืŸ ื“ื™ ืื™ื ื˜ืขืจื ืขื˜ ืื•ื™ื‘ ื ื™ื™ื˜ื™ืง. ืขืก ืื™ื– ื›ื“ืื™ ืฆื• ื‘ืืžืขืจืงืŸ ืึทื–, ื˜ื”ืขืึธืจืขื˜ื™ืงืึทืœืœื™, UC ื‘ืจืึทื•ื–ืขืจ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืฆื•ื•ื•ื ื’ืขืŸ ืฆื• ืึธืคึผืœืึธื“ื™ืจืŸ ืขืคึผืขืก ืึธืŸ ื‘ืึทื ื™ืฆืขืจ ื™ื ื˜ืขืจืึทืงืฉืึทืŸ - ืื•ื™ื‘ ืื™ืจ ืฆื•ืฉื˜ืขืœืŸ ืึท ื’ืขื–ื•ื ื˜-ื’ืขื’ืจื™ื ื“ืขื˜ ืขื ื˜ืคืขืจ ืฆื• ืึท ื‘ืงืฉื” ื•ื•ืึธืก ืื™ื– ืขืงืกืึทืงื™ื•ื˜ืึทื“ ื ืึธืš ื“ืขื ื‘ืœืขื˜ืขืจืขืจ ืื™ื– ืœืึธื ื˜ืฉื˜. ืึธื‘ืขืจ ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืœืขืจื ืขืŸ ื“ื™ ืคึผืจืึธื˜ืึธืงืึธืœ ืคื•ืŸ ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืžื™ื˜ ื“ื™ ืกืขืจื•ื•ืขืจ ืื™ืŸ ืžืขืจ ื“ืขื˜ืึทืœ, ืึทื–ื•ื™ ืžื™ืจ ื‘ืึทืฉืœืึธืกืŸ ืึทื– ืขืก ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ื’ืจื™ื ื’ืขืจ ืฆื• ืจืขื“ืึทื’ื™ืจืŸ ื“ื™ ื™ื ื˜ืขืจืกืขืคึผื˜ืึทื“ ืขื ื˜ืคืขืจ ืื•ืŸ ืคืึทืจื‘ื™ื™ึทื˜ืŸ ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ PDF.

ืึทื–ื•ื™, ื•ื•ืขืŸ ืึท ื‘ืึทื ื™ืฆืขืจ ื•ื•ื™ืœ ืฆื• ืขืคึฟืขื ืขืŸ ืึท ืคึผื“ืฃ ื’ืœื™ื™ืš ืื™ืŸ ื“ืขื ื‘ืœืขื˜ืขืจืขืจ, โ€‹โ€‹ื“ื™ ืคืืœื’ืขื ื“ืข ืจื™ืงื•ื•ืขืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื–ืขืŸ ืื™ืŸ ื“ื™ ืคืึทืจืงืขืจ:

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ืขืจืฉื˜ืขืจ ืขืก ืื™ื– ืึท POST ื‘ืขื˜ืŸ ืฆื• puds.ucweb.com/upgrade/index.xhtmlื ืึธืš ื•ื•ืึธืก
ืึทืŸ ืึทืจืงื™ื™ื•ื• ืžื™ื˜ ืึท ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืคึฟืึทืจ ื•ื•ื™ื•ื™ื ื’ ืคึผื“ืฃ ืื•ืŸ ืึธืคื™ืก ืคึฟืึธืจืžืึทื˜ื™ืจื•ื ื’ืขืŸ ืื™ื– ื“ืึทื•ื ืœืึธื•ื“ื™ื“. ืขืก ืื™ื– ืœืึทื“ื–ืฉื™ืงืึทืœ ืฆื• ื™ื‘ืขืจื ืขืžืขืŸ ืึทื– ื“ืขืจ ืขืจืฉื˜ืขืจ ื‘ืขื˜ืŸ ื˜ืจืึทื ืกืžื™ื˜ื˜ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ื“ื™ ืกื™ืกื˜ืขื (ื‘ื™ื™ึท ืžื™ื ื“ืกื˜ืขืจ ื“ื™ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ืฆื• ืฆื•ืฉื˜ืขืœืŸ ื“ื™ ืคืืจืœืื ื’ื˜ ื‘ื™ื‘ืœื™ืึธื˜ืขืง), ืื•ืŸ ืื™ืŸ ืขื ื˜ืคืขืจ ืฆื• ืขืก ื“ืขืจ ื‘ืœืขื˜ืขืจืขืจ ื ืขืžื˜ ืขื˜ืœืขื›ืข ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ื•ื•ืึธืก ื“ืึทืจืฃ ื–ื™ื™ืŸ ื“ืึทื•ื ืœืึธื•ื“ื™ื“: ื“ื™ ืึทื“ืจืขืก ืื•ืŸ, ืขืคืฉืขืจ. , ืขืคึผืขืก ืึทื ื“ืขืจืฉ. ื“ื™ ืคึผืจืึธื‘ืœืขื ืื™ื– ืึทื– ื“ื™ ื‘ืงืฉื” ืื™ื– ื™ื ืงืจื™ืคึผื˜ื™ื“.

ื‘ืขื˜ืŸ ืคืจืึทื’ืžืขื ื˜

ืขื ื˜ืคืขืจ ืคืจืึทื’ืžืขื ื˜

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ื–ื™ืš ืื™ื– ืคึผืึทืงื™ื“ื–ืฉื“ ืื™ืŸ ืคืึทืจืฉืœืขืกืœืขืŸ ืื•ืŸ ืื™ื– ื ื™ืฉื˜ ื™ื ืงืจื™ืคึผื˜ื™ื“.

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ื–ื•ื›ืŸ ืคึฟืึทืจ ืคืึทืจืงืขืจ ื“ืขืงืจื™ืคึผื˜ื™ืึธืŸ ืงืึธื“

ื–ืืœ ืก ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ื“ื™ืกื™ื™ืคืขืจ ื“ื™ ืกืขืจื•ื•ืขืจ ืขื ื˜ืคืขืจ. ื–ืืœ ืก ืงื•ืง ืื™ืŸ ื“ื™ ืงืœืึทืก ืงืึธื“ 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, ื“ื™ื ืึธื•ืฅ ืื™ื™ื ืขืจ ืคื•ืŸ ื“ืจื™ื™ ืžืขื’ืœืขืš ืึธืคึผืฆื™ืขืก.

ืžื™ืจ ืคืึธืจื–ืขืฆืŸ ืฆื• ืึทื ืึทืœื™ื™ื– ื“ื™ ืงืึธื“. ื ืึธืš ืึท ืคึผืึธืจ ืฉืคึผืจื•ื ื’ืขืŸ ื’ืขืคึฟื™ื ืขืŸ ืžื™ืจ ื–ื™ืš ืื™ืŸ ืึท ืื•ืคึฟืŸ ืžื™ื˜ ืึท ื–ืขืœื‘ืกื˜ึพื“ืขืจืงืœืขืจื ื“ื™ืงืŸ ื ืึธืžืขืŸ decryptBytesByKey.

ื“ืึธ ื–ืขื ืขืŸ ื ืึธืš ืฆื•ื•ื™ื™ ื‘ื™ื™ื˜ืขืก ืืคื’ืขืฉื™ื™ื“ื˜ ืคื•ืŸ ืื•ื ื“ื–ืขืจ ืขื ื˜ืคืขืจ, ืื•ืŸ ืึท ืฉื˜ืจื™ืงืœ ืื™ื– ื‘ืืงื•ืžืขืŸ ืคื•ืŸ ื–ื™ื™. ืขืก ืื™ื– ืงืœืึธืจ ืึทื– ืื™ืŸ ื“ืขื ื•ื•ืขื’ ื“ืขืจ ืฉืœื™ืกืœ ืคึฟืึทืจ ื“ืขืงืจื™ืคึผื˜ื™ื ื’ ื“ื™ ืึธื ื–ืึธื’ ืื™ื– ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ.

    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, ื•ื•ืึธืก ืื™ื– ื ื™ืฉื˜ ืคืืงื˜ื™ืฉ ืึท .ืึทื–ื•ื™, ืึธื‘ืขืจ ืึท .ื“ื–ืฉืึทืจ. ื“ืขืจ ืื•ืคึฟืŸ ื•ื•ืึธืก ืžื™ืจ ื–ืขื ืขืŸ ืื™ื ื˜ืขืจืขืกื™ืจื˜ ืื™ืŸ ืื™ื– ื™ืžืคึผืœืึทืžืขื ืึทื“ ื•ื•ื™ ื’ื™ื™ื˜:

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.ืกื™ืคืขืจ. ืื•ืŸ ืึทืœืข ื“ืขื ืื™ื– ื˜ืจืึทื ืกืคืขืจื“ ืฆื• ืึท ื–ื™ื›ืขืจ ืจืึทื•ื˜ืขืจ ืžื™ื˜ ื“ื™ ื ื•ืžืขืจ 10601 - ื“ืึธืก ืื™ื– ืžืฉืžืขื•ืช ื“ื™ ื‘ืึทืคึฟืขืœ ื ื•ืžืขืจ.

ื ืึธืš ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ืงื™ื™ื˜ ืคื•ืŸ ื˜ืจืึทื ื–ื™ืฉืึทื ื– ืžื™ืจ ื’ืขืคึฟื™ื ืขืŸ ืึท ืงืœืึทืก ื•ื•ืึธืก ื™ืžืคึผืœืึทืžืึทื ืฅ ื“ื™ ืฆื•ื‘ื™ื ื“ IRouterComponent ืื•ืŸ ืฉื™ื˜ื” doCommand:

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);
}
}

ืื•ืŸ ืื•ื™ืš ืงืœืึทืก JNICLibrary, ืื™ ืŸ ืฐืขืœื›ืข ืจ ื“ืข ืจ ื’ืขื‘ื•ื™ืจืข ืจ ืžืขื˜ื ื“ ืฐืขืจ ื˜ ื“ืขืจืงืœืขืจื˜ 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 ื‘ืจืึทื•ื–ืขืจ

ืื‘ืขืจ ืขืก ืื™ื– ื ื™ื˜ ื“ืืจืฃ: ืฆื• ืจื™ื›ื˜ื™ืง ืœืึธื“ืŸ ืึทืŸ ELF ื˜ืขืงืข ืื•ืŸ ืึทื ืึทืœื™ื™ื– ืขืก, ืึท ืคึผืจืึธื’ืจืึทื ื›ืขื“ืขืจ ื˜ื™ืฉ ืื™ื– ื’ืขื ื•ื’. ื“ืขืจื™ื‘ืขืจ, ืžื™ืจ ืคืฉื•ื˜ ื•ื™ืกืžืขืงืŸ ื“ื™ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ื˜ื™ืฉ, ื ื•ืœ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืคืขืœื“ืขืจ ืื™ืŸ ื“ื™ ื›ืขื“ืขืจ.

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ืขืคึฟืขื ืขืŸ ื“ื™ ื˜ืขืงืข ืื™ืŸ IDA ื•ื•ื™ื“ืขืจ.

ืขืก ื–ืขื ืขืŸ ืฆื•ื•ื™ื™ ื•ื•ืขื’ืŸ ืฆื• ื–ืึธื’ืŸ ื“ื™ Java ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ื•ื•ื• ืคึผื•ื ืงื˜ ืื™ืŸ ื“ืขืจ ื’ืขื‘ื•ื™ืจืŸ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ืึท ืื•ืคึฟืŸ ื“ืขืจืงืœืขืจื˜ ืื™ืŸ Java ืงืึธื“ ื•ื•ื™ ื’ืขื‘ื•ื™ืจืŸ ืื™ื– ืœื™ื’ืŸ. ื“ืขืจ ืขืจืฉื˜ืขืจ ืื™ื– ืฆื• ื’ืขื‘ืŸ ืขืก ืึท ืžื™ื ื™ื ื ืึธืžืขืŸ Java_package_name_ClassName_MethodName.

ื“ื™ ืจื’ืข ืื™ื– ืฆื• ืคืึทืจืฉืจื™ื™ึทื‘ืŸ ืขืก ื•ื•ืขืŸ ืœืึธื•ื“ื™ื ื’ ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง (ืื™ืŸ ื“ื™ ืคึฟื•ื ืงืฆื™ืข JNI_OnLoad)
ื ื™ืฆืŸ ืึท ืคึฟื•ื ืงืฆื™ืข ืจื•ืคืŸ RegisterNatives.

ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคืึทืœ, ืื•ื™ื‘ ืžื™ืจ ื ื•ืฆืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ืื•ืคึฟืŸ, ื“ืขืจ ื ืึธืžืขืŸ ื–ืึธืœ ื–ื™ื™ืŸ ื•ื•ื™ ื“ืึธืก: Java_com_taobao_wireless_security_adapter_JNICLibrary_doCommandNative.

ืขืก ืื™ื– ื ื™ื˜ ืึทื–ืึท ืคื•ื ืงืฆื™ืข ืฆื•ื•ื™ืฉืŸ ื“ื™ ื™ืงืกืคึผืึธืจื˜ืึทื“ ืคืึทื ื’ืงืฉืึทื ื–, ื•ื•ืึธืก ืžื™ื˜ืœ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืงื•ืงืŸ ืคึฟืึทืจ ืึท ืจื•ืคืŸ RegisterNatives.
ื–ืืœ ืก ื’ื™ื™ืŸ ืฆื• ื“ื™ ืคึฟื•ื ืงืฆื™ืข JNI_OnLoad ืื•ืŸ ืžื™ืจ ื–ืขืŸ ื“ืขื ื‘ื™ืœื“:

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ื•ื•ืืก ื’ื™ื™ื˜ ื“ื ืคืืจ? ืื™ืŸ ืขืจืฉื˜ืขืจ ื‘ืœื™ืง, ื“ืขืจ ืึธื ื”ื™ื™ื‘ ืื•ืŸ ืกื•ืฃ ืคื•ืŸ ื“ื™ ืคื•ื ืงืฆื™ืข ื–ืขื ืขืŸ ื˜ื™ืคึผื™ืฉ ืคึฟืึทืจ ARM ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ. ื“ืขืจ ืขืจืฉื˜ืขืจ ืœื™ืžืขื“ ืื•ื™ืฃ ื“ืขื ืึธื ืœื™ื™ื’ืŸ ืกื˜ืึธืจื– ื“ื™ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ื™ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ื•ื•ืึธืก ื“ื™ ืคึฟื•ื ืงืฆื™ืข ื•ื•ืขื˜ ื ื•ืฆืŸ ืื™ืŸ ื–ื™ื™ืŸ ืึธืคึผืขืจืึทืฆื™ืข (ืื™ืŸ ื“ืขื ืคืึทืœ, R0, R1 ืื•ืŸ R2), ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ื“ื™ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ื™ LR ืจืขื’ื™ืกื˜ืจื™ืจืŸ, ื•ื•ืึธืก ื›ึผื•ืœืœ ื“ื™ ืฆื•ืจื™ืงืงื•ืžืขืŸ ืึทื“ืจืขืก ืคื•ืŸ ื“ื™ ืคึฟื•ื ืงืฆื™ืข. . ื“ื™ ืœืขืฆื˜ืข ืœื™ืžืขื“ ืจื™ืกื˜ืึธืจื– ื“ื™ ื’ืขืจืื˜ืขื•ื•ืขื˜ ืจืขื“ื–ืฉื™ืกื˜ืขืจื–, ืื•ืŸ ื“ื™ ืฆื•ืจื™ืงืงื•ืžืขืŸ ืึทื“ืจืขืก ืื™ื– ืžื™ื“ ื’ืขืฉื˜ืขืœื˜ ืื™ืŸ ื“ื™ ืคึผื™ืกื™ ืจืขื’ื™ืกื˜ืจื™ืจืŸ - ืึทื–ื•ื™ ืฆื•ืจื™ืงืงื•ืžืขืŸ ืคื•ืŸ ื“ื™ ืคื•ื ืงืฆื™ืข. ืึธื‘ืขืจ ืื•ื™ื‘ ืื™ืจ ืงื•ืง ืขื ื’, ืื™ืจ ื•ื•ืขื˜ ื‘ืึทืžืขืจืงืŸ ืึทื– ื“ื™ ืคึผืขื ืึทืœื˜ืึทืžืึทื˜ ืœื™ืžืขื“ ืขื ื“ืขืจื•ื ื’ืขืŸ ื“ื™ ืฆื•ืจื™ืงืงื•ืžืขืŸ ืึทื“ืจืขืก ืกื˜ืึธืจื“ ืื•ื™ืฃ ื“ื™ ืึธื ืœื™ื™ื’ืŸ. ืœืืžื™ืจ ืื•ื™ืกืจืขื›ืขื ืขืŸ ื•ื•ืืก ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื ืื›ื“ืขื
ืงืึธื“ ื“ื•ืจื›ืคื™ืจื•ื ื’. ื ื–ื™ื›ืขืจ ืึทื“ืจืขืก 1ืงืกื‘0 ืื™ื– ืœืึธื•ื“ื™ื“ ืื™ืŸ ืจ130, 5 ืื™ื– ืกืึทื‘ื˜ืจืึทืงื˜ื™ื“ ืคื•ืŸ ืขืก, ื“ืขืžืึธืœื˜ ืขืก ืื™ื– ื˜ืจืึทื ืกืคืขืจื“ ืฆื• ืจ0 ืื•ืŸ 0ืงืก10 ืื™ื– ืžื•ืกื™ืฃ ืฆื• ืขืก. ืขืก ื˜ื•ืจื ืก ืื•ื™ืก 0xB13B. ืื–ื•ื™, IDA ืžื™ื™ื ื˜ ืึทื– ื“ื™ ืœืขืฆื˜ืข ืœื™ืžืขื“ ืื™ื– ืึท ื ืึธืจืžืึทืœ ืคื•ื ืงืฆื™ืข ืฆื•ืจื™ืงืงื•ืžืขืŸ, ืึธื‘ืขืจ ืื™ืŸ ืคืึทืงื˜ ืขืก ืื™ื– ื’ืขื’ืื ื’ืขืŸ ืฆื• ื“ื™ ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื“ ืึทื“ืจืขืก 0xB13B.

ืขืก ืื™ื– ื•ื•ืขืจื˜ ืฆื• ื“ืขืจืžืึธื ืขืŸ ื“ืึธ ืึทื– ARM ืคึผืจืึทืกืขืกืขืจื– ื”ืึธื‘ืŸ ืฆื•ื•ื™ื™ ืžืึธื“ืขืก ืื•ืŸ ืฆื•ื•ื™ื™ ืฉื˜ืขืœื˜ ืคื•ืŸ ื™ื ืกื˜ืจืึทืงืฉืึทื ื–: ARM ืื•ืŸ Thumb. ื“ืขืจ ืงืœืขื ืกื˜ืขืจ ื‘ืึทื˜ื™ื™ื˜ื™ืง ื‘ื™ืกืœ ืคื•ืŸ ื“ื™ ืึทื“ืจืขืก ื“ืขืจืฆื™ื™ืœื˜ ื“ื™ ืคึผืจืึทืกืขืกืขืจ ื•ื•ืึธืก ืœื™ืžืขื“ ืฉื˜ืขืœืŸ ืื™ื– ื’ืขื ื™ืฆื˜. ื“ืึธืก ืื™ื–, ื“ื™ ืึทื“ืจืขืก ืื™ื– ืึทืงืฉืœื™ 0xB13A, ืื•ืŸ ืื™ื™ื ืขืจ ืื™ืŸ ื“ืขืจ ืงืœืขื ืกื˜ืขืจ ื‘ืึทื˜ื™ื™ื˜ื™ืง ื‘ื™ืกืœ ื™ื ื“ื™ืงื™ื™ืฅ ื“ื™ ื’ืจืึธื‘ืขืจ ืคื™ื ื’ืขืจ ืžืึธื“ืข.

ื ืขื ืœืขืš "ืึทื“ืึทืคึผื˜ืขืจ" ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ ืฆื• ื“ื™ ืึธื ื”ื™ื™ื‘ ืคื•ืŸ ื™ืขื“ืขืจ ืคื•ื ืงืฆื™ืข ืื™ืŸ ื“ืขื ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืื•ืŸ
ืžื™ืกื˜ ืงืึธื“. ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ื•ื•ื•ื™ื ืขืŸ ืื•ื™ืฃ ื–ื™ื™ ืื™ืŸ ื“ืขื˜ืึทืœ ื•ื•ื™ื™ึทื˜ืขืจ - ืžื™ืจ ื ืึธืจ ื’ืขื“ืขื ืงืขืŸ
ืึทื– ื“ืขืจ ืขืžืขืก ืึธื ื”ื™ื™ื‘ ืคื•ืŸ ื›ึผืžืขื˜ ืึทืœืข ืคืึทื ื’ืงืฉืึทื ื– ืื™ื– ืึท ื‘ื™ืกืœ ื•ื•ื™ื™ึทื˜ืขืจ ืึทื•ื•ืขืง.

ื–ื™ื ื˜ ื“ื™ ืงืึธื“ ืื™ื– ื ื™ืฉื˜ ื‘ืคื™ืจื•ืฉ ืฉืคึผืจื•ื ื’ ืฆื• 0xB13A, IDA ื–ื™ืš ื”ืื˜ ื ื™ืฉื˜ ื“ืขืจืงืขื ืขืŸ ืึทื– ื“ื™ ืงืึธื“ ืื™ื– ืœื™ื’ืŸ ืื™ืŸ ื“ืขื ืึธืจื˜. ืคึฟืึทืจ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืกื™ื‘ื”, ืขืก ืงืขืŸ ื ื™ืฉื˜ ื“ืขืจืงืขื ืขืŸ ืจื•ื‘ึฟ ืคื•ืŸ ื“ื™ ืงืึธื“ ืื™ืŸ ื“ืขืจ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ื•ื•ื™ ืงืึธื“, ื•ื•ืึธืก ืžืื›ื˜ ืึทื ืึทืœื™ืกื™ืก ืขืคึผืขืก ืฉื•ื•ืขืจ. ืžื™ืจ ื–ืึธื’ืŸ IDA ืึทื– ื“ืึธืก ืื™ื– ื“ืขืจ ืงืึธื“, ืื•ืŸ ื“ืึธืก ืื™ื– ื•ื•ืึธืก ื›ืึทืคึผืึทื ื–:

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ื“ืขืจ ื˜ื™ืฉ ืกื˜ืึทืจืฅ ืงืœืืจ ื‘ื™ื™ 0xB144. ื•ื•ืึธืก ืื™ื– ืื™ืŸ ืกื•ื‘_494C?

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ื•ื•ืขืŸ ืื™ืจ ืจื•ืคืŸ ื“ืขื ืคึฟื•ื ืงืฆื™ืข ืื™ืŸ ื“ื™ LR ืจืขื’ื™ืกื˜ืจื™ืจืŸ, ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ ื“ื™ ืึทื“ืจืขืก ืคื•ืŸ ื“ื™ ืคืจื™ืขืจ ื“ืขืจืžืื ื˜ ื˜ื™ืฉ (0xB144). ืื™ืŸ R0 - ืื™ื ื“ืขืงืก ืื™ืŸ ื“ืขื ื˜ื™ืฉ. ืึทื– ืื™ื–, ื“ื™ ื•ื•ืขืจื˜ ืื™ื– ื’ืขื ื•ืžืขืŸ ืคื•ืŸ ื“ื™ ื˜ื™ืฉ, ืฆื•ื’ืขื’ืขื‘ืŸ ืฆื• LR ืื•ืŸ ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืื™ื–
ื“ื™ ืึทื“ืจืขืก ืฆื• ื’ื™ื™ืŸ ืฆื•. ืœืึธืžื™ืจ ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ืจืขื›ืขื ืขืŸ ืขืก: 0xB144 + [0xB144 + 8* 4] = 0xB144 + 0x120 = 0xB264. ืžื™ืจ ื’ื™ื™ืŸ ืฆื• ื“ื™ ื‘ืืงื•ืžืขืŸ ืึทื“ืจืขืก ืื•ืŸ ื–ืขืŸ ืžืžืฉ ืึท ืคึผืึธืจ ืคื•ืŸ ื ื•ืฆื™ืง ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ืื•ืŸ ื•ื•ื™ื“ืขืจ ื’ื™ื™ืŸ ืฆื• 0xB140:

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ืื™ืฆื˜ ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืึท ื™ื‘ืขืจื’ืึทื ื’ ื‘ื™ื™ ืคืึธื˜ืึธ ืžื™ื˜ ืื™ื ื“ืขืงืก 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 ื‘ืจืึทื•ื–ืขืจ

IDA ื”ืึธื˜ ื•ื•ื™ื“ืขืจ ื ื™ืฉื˜ ื“ืขืจืงืขื ื˜ ื“ืขื ืฉื˜ื— ื•ื•ื™ ืึท ืงืึธื“. ืžื™ืจ ื”ืขืœืคึฟืŸ ืื™ืจ ืื•ืŸ ื–ืขืŸ ืืŸ ืื ื“ืขืจ ืคึผืœืึทืŸ ื“ืึธืจื˜:

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ื“ื™ ืื™ื ืกื˜ืจื•ืงืฆื™ืขืก ื ืึธืš BLX ื˜ืึธืŸ ื ื™ื˜ ื•ื™ืกืงื•ืžืขืŸ ืฆื• ืžืึทื›ืŸ ืคื™ืœ ื–ื™ื ืขืŸ, ืขืก ืื™ื– ืžืขืจ ื•ื•ื™ ืึท ืžื™ืŸ ืคื•ืŸ ื“ื™ืกืคึผืœื™ื™ืกืžืึทื ื˜. ืœืึธืžื™ืจ ืงื•ืงืŸ ืื™ืŸ ืกื•ื‘_4964:

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ืื•ืŸ ื˜ืืงืข ื“ื ื ืขืžื˜ ืžืขืŸ ื ื“ื•ื•ืขืจื“ ืื•ื™ืคืŸ ืื“ืจืขืก ื•ื•ืืก ืœื™ื’ื˜ ืื™ืŸ ืœ"ืจ, ืžื•ืกื™ืฃ ืฆื• ื“ืขื ืื“ืจืขืก, ื ืื›ื“ืขื ื ืขืžื˜ ืžืขืŸ ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ื“ื™ ืจื™ื–ืึทืœื˜ื™ื ื’ ืื“ืจืขืก ืื•ืŸ ืœื™ื™ื’ื˜ ืขืก ืื•ื™ืคืŸ ืฉื˜ืืง. ืื•ื™ืš, 4 ืื™ื– ืžื•ืกื™ืฃ ืฆื• LR ืึทื–ื•ื™ ืึทื– ื ืึธืš ืฆื•ืจื™ืงืงื•ืžืขืŸ ืคื•ืŸ ื“ื™ ืคึฟื•ื ืงืฆื™ืข, ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืคืึธื˜ืึธ ืื™ื– ืกืงื™ืคึผื˜. ื ืึธืš ื•ื•ืึธืก ื“ื™ POP {R1} ื‘ืึทืคึฟืขืœ ื ืขืžื˜ ื“ื™ ืจื™ื–ืึทืœื˜ื™ื ื’ ื•ื•ืขืจื˜ ืคื•ืŸ ื“ื™ ืึธื ืœื™ื™ื’ืŸ. ืื•ื™ื‘ ืื™ืจ ืงื•ืง ื•ื•ืึธืก ืื™ื– ืœื™ื’ืŸ ืื™ืŸ ืึทื“ืจืขืก 0xB4BA + 0xEA = 0xB5A4, ืื™ืจ ื•ื•ืขื˜ ื–ืขืŸ ืขืคึผืขืก ืขื ืœืขืš ืฆื• ืึทืŸ ืึทื“ืจืขืก ื˜ื™ืฉ:

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ืฆื• ืœืึทื˜ืข ื“ืขื ืคึผืœืึทืŸ, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื‘ืึทืงื•ืžืขืŸ ืฆื•ื•ื™ื™ ืคึผืึทืจืึทืžืขื˜ืขืจืก ืคื•ืŸ ื“ื™ ืงืึธื“: ื“ื™ ืคืึธื˜ืึธ ืื•ืŸ ื“ื™ ืจืขื’ื™ืกื˜ืจื™ืจืŸ ื ื•ืžืขืจ ืื™ืŸ ื•ื•ืึธืก ืื™ืจ ื•ื•ื™ืœืŸ ืฆื• ืฉื˜ืขืœืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜. ืคึฟืึทืจ ื™ืขื“ืขืจ ืžืขื’ืœืขืš ืจืขื’ื™ืกื˜ืจื™ืจืŸ, ืื™ืจ ื•ื•ืขื˜ ื”ืึธื‘ืŸ ืฆื• ืฆื•ื’ืจื™ื™ื˜ืŸ ืึท ืฉื˜ื™ืง ืคื•ืŸ ืงืึธื“ ืื™ืŸ ืฉื˜ื™ื™ึทื’ืŸ.

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 ื‘ืจืึทื•ื–ืขืจ

ืื™ืŸ ืึทื“ื™ืฉืึทืŸ ืฆื• ื“ื™ ืฉื•ื™ืŸ ื“ืขืจืžืื ื˜ ืกื˜ืจืึทืงื˜ืฉืขืจื–, ื“ื™ ืงืึธื“ ืื•ื™ืš ื›ึผื•ืœืœ ื“ื™ ืคืืœื’ืขื ื“ืข:

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ื•ื•ื™ ืื™ืŸ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ืคืึทืœ, ื ืึธืš ื“ื™ BLX ืœื™ืžืขื“, ืขืก ืื™ื– ืึท ืคืึธื˜ืึธ:

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ืžื™ืจ ื ืขืžืขืŸ ื“ื™ ืึธืคืกืขื˜ ืฆื• ื“ื™ ืึทื“ืจืขืก ืคื•ืŸ 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 ื‘ืจืึทื•ื–ืขืจ

ืึทืžืึธืœ ืึทืœืฅ ืื™ื– ืคึผืึทื˜ืฉื˜ ืื™ืŸ ื“ื™ ืคึฟื•ื ืงืฆื™ืข, ืื™ืจ ืงืขื ืขืŸ ืคื•ื ื˜ IDA ืฆื• ื–ื™ื™ืŸ ืคืึทืงื˜ื™ืฉ ืึธื ื”ื™ื™ื‘. ืขืก ื•ื•ืขื˜ ืฆื•ื ื•ื™ืคืฉื˜ืขืœื  ืึทืœืข ื“ื™ ืคื•ื ืงืฆื™ืข ืงืึธื“, ืื•ืŸ ืขืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื“ื™ืงืึทืžืคึผื™ื™ืœื“ ืžื™ื˜ ื”ืขืงืกืจื™ื™ึทืก.

ื“ื™ืงืึธื•ื“ื™ื ื’ ืกื˜ืจื™ื ื’ืก

ืžื™ืจ ื”ืึธื‘ืŸ ื’ืขืœืขืจื ื˜ ืฆื• ื”ืึทื ื“ืœืขืŸ ืžื™ื˜ ืึทื‘ืคืึทืกืงื™ื™ืฉืึทืŸ ืคื•ืŸ ืžืึทืฉื™ืŸ ืงืึธื“ ืื™ืŸ ื“ืขืจ ื‘ื™ื‘ืœื™ืึธื˜ืขืง libsgmainso-6.4.36.so ืคึฟื•ืŸ UC ื‘ืจืึทื•ื–ืขืจ ืื•ืŸ ื‘ืืงื•ืžืขืŸ ื“ื™ ืคื•ื ืงืฆื™ืข ืงืึธื“ 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);

ืื™ืŸ ืคึฟื•ื ืงืฆื™ืข ืกื•ื‘_73E24 ื“ืขืจ ืงืœืึทืก ื ืึธืžืขืŸ ืื™ื– ืงืœืืจ ื“ืขืงืจื™ืคึผื˜ื™ื“. ื•ื•ื™ ืคึผืึทืจืึทืžืขื˜ืขืจืก ืฆื• ื“ืขื ืคึฟื•ื ืงืฆื™ืข, ืึท ื˜ื™ื™ึทื˜ืœ ืฆื• ื“ืึทื˜ืŸ ืขื ืœืขืš ืฆื• ื™ื ืงืจื™ืคึผื˜ื™ื“ ื“ืึทื˜ืŸ, ืึท ื–ื™ื›ืขืจ ื‘ืึทืคืขืจ ืื•ืŸ ืึท ื ื•ืžืขืจ ื–ืขื ืขืŸ ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ. ื“ืึธืš, ื ืึธืš ืจื•ืคืŸ ื“ื™ ืคึฟื•ื ืงืฆื™ืข, ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืึท ื“ืขืงืจื™ืคึผื˜ืขื“ ืฉื•ืจื” ืื™ืŸ ื“ื™ ื‘ืึทืคืขืจ, ื•ื•ื™ื™ึทืœ ืขืก ืื™ื– ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ืฆื• ื“ื™ ืคึฟื•ื ืงืฆื™ืข FindClass, ื•ื•ืึธืก ื ืขืžื˜ ื“ื™ ืงืœืึทืก ื ืึธืžืขืŸ ื•ื•ื™ ื“ื™ ืจื’ืข ืคึผืึทืจืึทืžืขื˜ืขืจ. ื“ืขืจื™ื‘ืขืจ, ื“ื™ ื ื•ืžืขืจ ืื™ื– ื“ื™ ื’ืจื™ื™ืก ืคื•ืŸ ื“ื™ ื‘ืึทืคืขืจ ืึธื“ืขืจ ื“ื™ ืœืขื ื’ ืคื•ืŸ ื“ื™ ืฉื•ืจื”. ืœืึธืžื™ืจ ืคึผืจื•ึผื•ื•ืŸ ืฆื• ื“ืขืฉื™ืคืขืจืŸ ื“ืขื ืงืœืึทืก ื ืึธืžืขืŸ, ืขืก ื–ืึธืœ ืื•ื ื“ื– ื–ืึธื’ืŸ ืฆื™ ืžื™ืจ ื’ื™ื™ืขืŸ ืื™ืŸ ื“ื™ ืจืขื›ื˜ ืจื™ื›ื˜ื•ื ื’. ื–ืืœ ืก ื ืขืžืขืŸ ืึท ื ืขืขื ื˜ืขืจ ืงื•ืง ืื™ืŸ ื•ื•ืึธืก ื›ืึทืคึผืึทื ื– ืื™ืŸ ืกื•ื‘_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 ืงืจื™ื™ื™ืฅ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ ืคื•ืŸ ืึท ืงืึทื ื˜ื™ื™ื ืขืจ ืคึฟืึทืจ ื‘ื™ื™ื˜ ืขืจื™ื™ื– ืคื•ืŸ ื“ื™ ืกืคึผืขืกื™ืคื™ืขื“ ื’ืจื™ื™ืก (ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ื•ื•ื•ื™ื ืขืŸ ืื•ื™ืฃ ื“ื™ ืงืึทื ื˜ื™ื™ื ืขืจื– ืื™ืŸ ื“ืขื˜ืึทืœ). ื“ืึธ ื–ืขื ืขืŸ ื‘ืืฉืืคืŸ ืฆื•ื•ื™ื™ ืึทื–ืึท ืงืึทื ื˜ื™ื™ื ืขืจื–: ืื™ื™ื ืขืจ ื›ึผื•ืœืœ ื“ื™ ืฉื•ืจื” "ื“ืงืึธ/ืœืงืง+ื”?ืž3ืง*ืง@" (ืขืก ืื™ื– ื’ืจื™ื ื’ ืฆื• ื˜ืจืขืคืŸ ืึทื– ื“ืึธืก ืื™ื– ืึท ืฉืœื™ืกืœ), ื“ื™ ืื ื“ืขืจืข ื›ึผื•ืœืœ ื™ื ืงืจื™ืคึผื˜ื™ื“ ื“ืึทื˜ืŸ. ื•ื•ื™ื™ึทื˜ืขืจ, ื‘ื™ื™ื“ืข ืึทื‘ื“ื–ืฉืขืงืฅ ื–ืขื ืขืŸ ื’ืขืฉื˜ืขืœื˜ ืื™ืŸ ืึท ื–ื™ื›ืขืจ ืกื˜ืจื•ืงื˜ื•ืจ, ื•ื•ืึธืก ืื™ื– ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ืฆื• ื“ื™ ืคึฟื•ื ืงืฆื™ืข ืกื•ื‘_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: ืฆื• ื“ื™ ืคึฟื•ื ืงืฆื™ืข ืกื•ื‘_6364C ืคึผืึทืจืึทืžืขื˜ืขืจืก ื–ืขื ืขืŸ ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ืคื•ืŸ ื“ื™ ืกื˜ืจื•ืงื˜ื•ืจ ื•ื•ืึธืก ื–ืขื ืขืŸ ืฆื•ื’ืขื’ืขื‘ืŸ ืื™ืŸ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ืคึฟื•ื ืงืฆื™ืข, ื“"ื” ื“ื™ ืฉืœื™ืกืœ ืื•ืŸ ื™ื ืงืจื™ืคึผื˜ื™ื“ ื“ืึทื˜ืŸ. ืื•ื™ื‘ ืื™ืจ ืงื•ืง ืขื ื’ ืื™ืŸ ืกื•ื‘_6364C, ืื™ืจ ืงืขื ืขืŸ ื“ืขืจืงืขื ืขืŸ ื“ื™ RC4 ืึทืœื’ืขืจื™ื“ืึทื ืื™ืŸ ืขืก.

ืžื™ืจ ื”ืึธื‘ืŸ ืึท ืึทืœื’ืขืจื™ื“ืึทื ืื•ืŸ ืึท ืฉืœื™ืกืœ. ืœืึธืžื™ืจ ืคึผืจื•ึผื•ื•ืŸ ืฆื• ื“ืขืฉื™ืคืขืจืŸ ื“ืขื ืงืœืึทืก ื ืึธืžืขืŸ. ื“ืึธ ืก ื•ื•ืึธืก ื’ืขื˜ืจืืคืŸ: com/taobao/wireless/security/adapter/JNICLibrary. ื’ืจื•ื™ืก! ืžื™ืจ ื–ืขื ืขืŸ ืื•ื™ืฃ ื“ื™ ืจืขื›ื˜ ื•ื•ืขื’.

ื‘ืึทืคึฟืขืœืŸ ื‘ื•ื™ื

ืื™ืฆื˜ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื’ืขืคึฟื™ื ืขืŸ ืึท ืึทืจื•ื™ืกืจื•ืคืŸ RegisterNatives, ื•ื•ืึธืก ื•ื•ืขื˜ ื•ื•ื™ื™ึทื–ืŸ ืื•ื ื“ื– ื“ื™ ืคึฟื•ื ืงืฆื™ืข 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 ื‘ืจืึทื•ื–ืขืจ

ื“ืขืจ ื‘ื•ื™ื ืื™ื– ืึธื ื’ืขืคื™ืœื˜ ื“ื™ื ืึทืžื™ืงืึทืœืœื™ ืื™ืŸ JNI_OnLoad.
ื“ืจื™ื™ ื ื•ืžืขืจืŸ ืขื ืงืึธื•ื“ ื“ื™ ื“ืจืš ืื™ืŸ ื“ืขื ื‘ื•ื™ื. ื™ืขื“ืขืจ ื‘ืœืึทื˜ ืคื•ืŸ ื“ืขื ื‘ื•ื™ื ื›ึผื•ืœืœ ื“ื™ ืคึผืึทืงื˜ ืึทื“ืจืขืก ืคื•ืŸ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืคื•ื ืงืฆื™ืข. ื“ืขืจ ืฉืœื™ืกืœ ืื™ื– ืื™ืŸ ื“ื™ ืคืึธื˜ืขืจ ื ืึธื“ืข. ื’ืขืคึฟื™ื ืขืŸ ื“ืขื ืึธืจื˜ ืื™ืŸ ื“ืขื ืงืึธื“ ื•ื•ื• ื“ื™ ืคื•ื ืงืฆื™ืข ืžื™ืจ ื“ืึทืจืคึฟืŸ ืื™ื– ืžื•ืกื™ืฃ ืฆื• ื“ืขื ื‘ื•ื™ื ืื™ื– ื ื™ืฉื˜ ืฉื•ื•ืขืจ ืื•ื™ื‘ ืื™ืจ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ืึทืœืข ื“ื™ ืกื˜ืจืึทืงื˜ืฉืขืจื– ื’ืขื ื™ืฆื˜ (ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื‘ืึทืฉืจื™ื™ึทื‘ืŸ ื–ื™ื™ ืึทื–ื•ื™ ื ื™ืฉื˜ ืฆื• ื‘ืœืึธื–ืŸ ืึท ืฉื•ื™ืŸ ื’ืึทื ืฅ ื’ืจื•ื™ืก ืึทืจื˜ื™ืงืœ).

ืžืขืจ ืฆืขืžื™ืฉื•ื ื’

ืžื™ืจ ื‘ืืงื•ืžืขืŸ ื“ื™ ืึทื“ืจืขืก ืคื•ืŸ ื“ื™ ืคึฟื•ื ืงืฆื™ืข ื•ื•ืึธืก ื–ืึธืœ ื“ืขืงืจื™ืคึผื˜ ืคืึทืจืงืขืจ: 0x5F1AC. ืึธื‘ืขืจ ืขืก ืื™ื– ืฆื• ืคืจื™ ืฆื• ืคืจื™ื™ืขืŸ: ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืคื•ืŸ UC ื‘ืจืึทื•ื–ืขืจ ื”ืึธื‘ืŸ ืฆื•ื’ืขื’ืจื™ื™ื˜ ืืŸ ืื ื“ืขืจ ื™ื‘ืขืจืจืึทืฉืŸ ืคึฟืึทืจ ืื•ื ื“ื–.

ื ืึธืš ื‘ืืงื•ืžืขืŸ ื“ื™ ืคึผืึทืจืึทืžืขื˜ืขืจืก ืคื•ืŸ ื“ื™ ืžืขื ื’ืข ื•ื•ืึธืก ืื™ื– ื’ืขืฉืืคืŸ ืื™ืŸ ื“ื™ Java ืงืึธื“, ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ
ืฆื• ื“ื™ ืคื•ื ืงืฆื™ืข ืื™ืŸ ืึทื“ืจืขืก 0x4D070. ืื•ืŸ ื“ืึธ ืึทื•ื•ื™ื™ืฅ ืื•ื ื“ื– ืืŸ ืื ื“ืขืจ ื˜ื™ืคึผ ืคื•ืŸ ืงืึธื“ ืึทื‘ืคืึทืกืงื™ื™ืฉืึทืŸ.

ืžื™ืจ ืฉื˜ืขืœืŸ ืฆื•ื•ื™ื™ ื™ื ื“ื™ืกื™ื– ืื™ืŸ R7 ืื•ืŸ R4:

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ืžื™ืจ ื™ื‘ืขืจืจื•ืง ื“ืขืจ ืขืจืฉื˜ืขืจ ืื™ื ื“ืขืงืก ืฆื• R11:

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ืฆื• ื‘ืึทืงื•ืžืขืŸ ืึทืŸ ืึทื“ืจืขืก ืคื•ืŸ ืึท ื˜ื™ืฉ, ื ื•ืฆืŸ ืึทืŸ ืื™ื ื“ืขืงืก:

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ื ืึธืš ื’ื™ื™ืŸ ืฆื• ื“ืขืจ ืขืจืฉื˜ืขืจ ืึทื“ืจืขืก, ื“ื™ ืจื’ืข ืื™ื ื“ืขืงืก ืื™ื– ื’ืขื ื™ืฆื˜, ื•ื•ืึธืก ืื™ื– ืื™ืŸ R4. ืขืก ื–ืขื ืขืŸ 230 ืขืœืขืžืขื ื˜ืŸ ืื™ืŸ ื“ื™ ื˜ื™ืฉ.

ื•ื•ืึธืก ืฆื• ื˜ืึธืŸ ื•ื•ืขื’ืŸ ืื™ื? ืื™ืจ ืงืขื ืขืŸ ื–ืึธื’ืŸ IDA ืึทื– ื“ืึธืก ืื™ื– ืึท ื‘ืึทืฉื˜ื™ืžืขืŸ: ืจืขื“ืึทื’ื™ืจืŸ -> ืื ื“ืขืจืข -> ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ื™ื“ื™ืึธื.

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ื“ื™ ืจื™ื–ืึทืœื˜ื™ื ื’ ืงืึธื“ ืื™ื– ืกืงืขืจื™. ืึธื‘ืขืจ ื•ื•ืขืŸ ืื™ืจ ืžืึทื›ืŸ ื“ื™ื™ืŸ ื•ื•ืขื’ ื“ื•ืจืš ื“ื™ ื“ื–ืฉืึทื ื’ื’ืึทืœ, ืื™ืจ ืงืขื ื˜ ื‘ืึทืžืขืจืงืŸ ืึท ืจื•ืฃ ืฆื• ืึท ืคื•ื ืงืฆื™ืข ื•ื•ืึธืก ืื™ื– ืฉื•ื™ืŸ ื‘ืึทืงืึทื ื˜ ืฆื• ืื•ื ื“ื– ืกื•ื‘_6115C:

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื‘ืึทืฉื˜ื™ืžืขืŸ ืื™ืŸ ื•ื•ืึธืก ืื™ืŸ ืคืึทืœ 3 ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื“ืขืงืจื™ืคึผื˜ื™ืึธืŸ ื ื™ืฆืŸ ื“ื™ RC4 ืึทืœื’ืขืจื™ื“ืึทื. ืื•ืŸ ืื™ืŸ ื“ืขื ืคืึทืœ, ื“ื™ ืกื˜ืจื•ืงื˜ื•ืจ ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ืฆื• ื“ื™ ืคึฟื•ื ืงืฆื™ืข ืื™ื– ืึธื ื’ืขืคื™ืœื˜ ืคึฟื•ืŸ ื“ื™ ืคึผืึทืจืึทืžืขื˜ืขืจืก ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ืฆื• doCommandNative. ืœืึธืžื™ืจ ื’ืขื“ืขื ืงืขืŸ ื•ื•ืึธืก ืžื™ืจ ื”ืึธื‘ืŸ ื“ืึธืจื˜ MagicInt ืžื™ื˜ ื“ื™ ื•ื•ืขืจื˜ 16. ืžื™ืจ ืงื•ืงืŸ ืื™ืŸ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืคืึทืœ - ืื•ืŸ ื ืึธืš ืขื˜ืœืขื›ืข ื˜ืจืึทื ื–ื™ืฉืึทื ื– ืžื™ืจ ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ืงืึธื“ ื“ื•ืจืš ื•ื•ืึธืก ื“ื™ ืึทืœื’ืขืจื™ื“ืึทื ืงืขื ืขืŸ ื–ื™ื™ืŸ ื™ื™ื“ืขื ืึทืคื™ื™ื“.

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ื“ืึธืก ืื™ื– AES!

ื“ืขืจ ืึทืœื’ืขืจื™ื“ืึทื ื™ื’ื–ื™ืกืฅ, ืึทืœืข ื•ื•ืึธืก ื‘ืœื™ื™ื‘ื˜ ืื™ื– ืฆื• ื‘ืึทืงื•ืžืขืŸ ื–ื™ื™ึทืŸ ืคึผืึทืจืึทืžืขื˜ืขืจืก: ืžืึธื“ืข, ืฉืœื™ืกืœ ืื•ืŸ, ืขืคืฉืขืจ, ื“ื™ ื™ื ื™ื˜ื™ืึทืœื™ื–ืึทื˜ื™ืึธืŸ ื•ื•ืขืงื˜ืึธืจ (ื–ื™ื™ึทืŸ ื‘ื™ื™ึทื–ื™ื™ึทืŸ ื“ืขืคึผืขื ื“ืก ืื•ื™ืฃ ื“ื™ ืึทืคึผืขืจื™ื™ื˜ื™ื ื’ ืžืึธื“ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ AES ืึทืœื’ืขืจื™ื“ืึทื). ื“ื™ ืกื˜ืจื•ืงื˜ื•ืจ ืžื™ื˜ ื–ื™ื™ ืžื•ื–ืŸ ื–ื™ื™ืŸ ื’ืขืฉืืคืŸ ืขืจื’ืขืฅ ืื™ื™ื“ืขืจ ื“ื™ ืคึฟื•ื ืงืฆื™ืข ืจื•ืคืŸ ืกื•ื‘_6115C, ืึธื‘ืขืจ ื“ืขืจ ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ ืงืึธื“ ืื™ื– ืกืคึผืขืฆื™ืขืœ ื’ืขื–ื•ื ื˜ ืึทื‘ืคื•ืกืงื™ื™ื˜ื™ื“, ืึทื–ื•ื™ ื“ืขืจ ื’ืขื“ืึทื ืง ืขืจื™ื™ื–ืึทื– ืฆื• ืœืึทื˜ืข ื“ื™ ืงืึธื“ ืึทื–ื•ื™ ืึทื– ืึทืœืข ืคึผืึทืจืึทืžืขื˜ืขืจืก ืคื•ืŸ ื“ื™ ื“ืขืงืจื™ืคึผื˜ื™ืึธืŸ ืคึฟื•ื ืงืฆื™ืข ื–ืขื ืขืŸ ื“ืึทืžืคึผื˜ ืื™ืŸ ืึท ื˜ืขืงืข.

ืคึผืึทื˜ืฉ

ื›ึผื“ื™ ื ื™ืฉื˜ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืึทืœืข ื“ื™ ืœืึทื˜ืข ืงืึธื“ ืื™ืŸ ืคึฟืึทืจื–ืึทืžืœื•ื ื’ ืฉืคึผืจืึทืš ืžืึทื ื™ื•ืึทืœื™, ืื™ืจ ืงืขื ืขืŸ ืงืึทื˜ืขืจ ืึทื ื“ืจื•ื™ื“ ืกื˜ื•ื“ื™ืึธ, ืฉืจื™ื™ึทื‘ืŸ ืึท ืคึฟื•ื ืงืฆื™ืข ื“ืึธืจื˜ ื•ื•ืึธืก ื ืขืžื˜ ื“ื™ ื–ืขืœื‘ืข ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ืคึผืึทืจืึทืžืขื˜ืขืจืก ื•ื•ื™ ืื•ื ื“ื–ืขืจ ื“ืขืงืจื™ืคึผื˜ื™ืึธืŸ ืคื•ื ืงืฆื™ืข ืื•ืŸ ืฉืจื™ื™ึทื‘ืŸ ืฆื• ืึท ื˜ืขืงืข, ืื•ืŸ ื ืึธื›ืžืึทื›ืŸ ืื•ืŸ ืคึผืึทืคึผ ื“ื™ ืงืึธื“ ื•ื•ืึธืก ื“ืขืจ ืงืึทืžืคึผื™ื™ืœืขืจ ื•ื•ืขื˜. ื“ื–ืฉืขื ืขืจื™ื™ื˜.

ืื•ื ื“ื–ืขืจ ืคืจืขื ื“ื– ืคื•ืŸ ื“ื™ UC ื‘ืจืึทื•ื–ืขืจ ืžืึทื ืฉืึทืคึฟื˜ ื”ืึธื‘ืŸ ืื•ื™ืš ื–ืึธืจื’ืŸ ืคึฟืึทืจ ื“ื™ ืงืึทื ื•ื•ื™ื ื™ืึทื ืก ืคื•ืŸ ืึทื“ื™ื ื’ ืงืึธื“. ืœืึธืžื™ืจ ื’ืขื“ืขื ืงืขืŸ ืึทื– ืื™ืŸ ื“ื™ ืึธื ื”ื™ื™ื‘ ืคื•ืŸ ื™ืขื“ืขืจ ืคึฟื•ื ืงืฆื™ืข ืžื™ืจ ื”ืึธื‘ืŸ ืžื™ืกื˜ ืงืึธื“ ื•ื•ืึธืก ืงืขื ืขืŸ ืœื™ื™ื›ื˜ ื–ื™ื™ืŸ ืจื™ืคึผืœื™ื™ืกื˜ ืžื™ื˜ ืงื™ื™ืŸ ืื ื“ืขืจืข. ื–ื™ื™ืขืจ ื‘ืึทืงื•ื•ืขื ๐Ÿ™‚ ืึธื‘ืขืจ, ืื™ืŸ ื“ื™ ืึธื ื”ื™ื™ื‘ ืคื•ืŸ ื“ื™ ืฆื™ืœ ืคื•ื ืงืฆื™ืข ืขืก ืื™ื– ื ื™ืฉื˜ ื’ืขื ื•ื’ ืคึผืœืึทืฅ ืคึฟืึทืจ ื“ื™ ืงืึธื“ ื•ื•ืึธืก ืกืึทื•ื•ืขืก ืึทืœืข ื“ื™ ืคึผืึทืจืึทืžืขื˜ืขืจืก ืฆื• ืึท ื˜ืขืงืข. ืื™ืš ื”ืื˜ ืฆื• ืฉืคึผืึทืœื˜ืŸ ืขืก ืื™ืŸ ืคึผืึทืจืฅ ืื•ืŸ ื ื•ืฆืŸ ืžื™ืกื˜ ื‘ืœืึทืงืก ืคื•ืŸ ืืจื•ืžื™ืงืข ืคืึทื ื’ืงืฉืึทื ื–. ืขืก ื–ืขื ืขืŸ ื’ืขื•ื•ืขืŸ ืคื™ืจ ื˜ื™ื™ืœืŸ ืื™ืŸ ื’ืึทื ืฅ.

ื“ืขืจ ืขืจืฉื˜ืขืจ ื˜ื™ื™ืœ:

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ืื™ืŸ ื“ื™ ARM ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ, ื“ื™ ืขืจืฉื˜ืขืจ ืคื™ืจ ืคื•ื ืงืฆื™ืข ืคึผืึทืจืึทืžืขื˜ืขืจืก ื–ืขื ืขืŸ ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ื“ื•ืจืš ืจืขื“ื–ืฉื™ืกื˜ืขืจื– R0-R3, ื“ื™ ืžื ื•ื—ื”, ืื•ื™ื‘ ืขืก ืื™ื–, ื–ืขื ืขืŸ ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ื“ื•ืจืš ื“ื™ ืึธื ืœื™ื™ื’ืŸ. ื“ื™ LR ืจืขื’ื™ืกื˜ืจื™ืจืŸ ืงืึทืจื™ื– ื“ื™ ืฆื•ืจื™ืงืงื•ืžืขืŸ ืึทื“ืจืขืก. ืึทืœืข ื“ืขื ื“ืึทืจืฃ ื–ื™ื™ืŸ ื’ืขืจืื˜ืขื•ื•ืขื˜ ืึทื–ื•ื™ ืึทื– ื“ื™ ืคึฟื•ื ืงืฆื™ืข ืงืขื ืขืŸ ืึทืจื‘ืขื˜ืŸ ื ืึธืš ืžื™ืจ ื“ืึทืžืคึผ ื–ื™ื™ึทืŸ ืคึผืึทืจืึทืžืขื˜ืขืจืก. ืžื™ืจ ืื•ื™ืš ื“ืึทืจืคึฟืŸ ืฆื• ืจืึทื˜ืขื•ื•ืขืŸ ืึทืœืข ื“ื™ ืจืขื“ื–ืฉื™ืกื˜ืขืจืก ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ ืื™ืŸ ื“ืขื ืคึผืจืึธืฆืขืก, ืึทื–ื•ื™ ืžื™ืจ ื˜ืึธืŸ PUSH.W {R0-R10,LR}. ืื™ืŸ R7 ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ ื“ื™ ืึทื“ืจืขืก ืคื•ืŸ ื“ืขืจ ืจืฉื™ืžื” ืคื•ืŸ ืคึผืึทืจืึทืžืขื˜ืขืจืก ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ืฆื• ื“ื™ ืคื•ื ืงืฆื™ืข ื“ื•ืจืš ื“ื™ ืึธื ืœื™ื™ื’ืŸ.

ื ื™ืฆืŸ ื“ื™ ืคึฟื•ื ืงืฆื™ืข fopen ืœืึธืžื™ืจ ืขืคืขื ืขืŸ ื“ื™ ื˜ืขืงืข /data/local/tmp/aes ืื™ืŸ "ืึทื‘" ืžืึธื“ืข
ื“ืืก ื”ื™ื™ืกื˜ ืคืืจ ืฆื•ื’ืื‘. ืื™ืŸ R0 ืžื™ืจ ืœืึธื“ืŸ ื“ื™ ืึทื“ืจืขืก ืคื•ืŸ ื“ื™ ื˜ืขืงืข ื ืึธืžืขืŸ, ืื™ืŸ R1 - ื“ื™ ืึทื“ืจืขืก ืคื•ืŸ ื“ื™ ืฉื•ืจื” ื•ื•ืึธืก ื™ื ื“ื™ืงื™ื™ืฅ ื“ื™ ืžืึธื“ืข. ืื•ืŸ ื“ืึธ ื“ื™ ืžื™ืกื˜ ืงืึธื“ ืขื ื“ืก, ืึทื–ื•ื™ ืžื™ืจ ืžืึทืš ืื•ื™ืฃ ืฆื• ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ืคึฟื•ื ืงืฆื™ืข. ื›ึผื“ื™ ืขืก ื–ืึธืœ ืคืึธืจื–ืขืฆืŸ ืฆื• ืึทืจื‘ืขื˜ืŸ, ืžื™ืจ ืฉื˜ืขืœืŸ ืื™ืŸ ื“ื™ ืึธื ื”ื™ื™ื‘ ื“ื™ ื™ื‘ืขืจื’ืึทื ื’ ืฆื• ื“ื™ ืคืึทืงื˜ื™ืฉ ืงืึธื“ ืคื•ืŸ ื“ื™ ืคึฟื•ื ืงืฆื™ืข, ื‘ื™ื™ืคึผืึทืกื™ื ื’ ื“ื™ ืžื™ืกื˜, ืื•ืŸ ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ ื“ื™ ืžื™ืกื˜ ืžื™ืจ ืœื™ื™ื’ืŸ ืึท ืงืึทื ื˜ื™ื ื™ื•ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ ืœืึทื˜ืข.

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ืจื•ืคืŸ fopen.

ื“ืขืจ ืขืจืฉื˜ืขืจ ื“ืจื™ื™ึท ืคึผืึทืจืึทืžืขื˜ืขืจืก ืคื•ืŸ ื“ื™ ืคึฟื•ื ืงืฆื™ืข ืึทืขืก ื”ืึธื‘ืŸ ื˜ื™ืคึผ ื™ื ื˜. ื–ื™ื ื˜ ืžื™ืจ ื’ืขืจืื˜ืขื•ื•ืขื˜ ื“ื™ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ืฆื• ื“ื™ ืึธื ืœื™ื™ื’ืŸ ืื™ืŸ ื“ื™ ืึธื ื”ื™ื™ื‘, ืžื™ืจ ืงืขื ืขืŸ ืคืฉื•ื˜ ืคืึธืจืŸ ื“ื™ ืคึฟื•ื ืงืฆื™ืข ืฉืจื™ื™ื‘ ื–ื™ื™ืขืจ ืึทื“ืจืขืกืขืก ืื•ื™ืฃ ื“ื™ ืึธื ืœื™ื™ื’ืŸ.

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ื•ื•ื™ื™ึทื˜ืขืจ ืžื™ืจ ื”ืึธื‘ืŸ ื“ืจื™ื™ ืกื˜ืจืึทืงื˜ืฉืขืจื– ื•ื•ืึธืก ืึทื ื˜ื”ืึทืœื˜ืŸ ื“ื™ ื“ืึทื˜ืŸ ื’ืจื™ื™ืก ืื•ืŸ ืึท ื˜ื™ื™ึทื˜ืœ ืฆื• ื“ื™ ื“ืึทื˜ืŸ ืคึฟืึทืจ ื“ื™ ืฉืœื™ืกืœ, ื™ื ื™ื˜ื™ืึทืœื™ื–ืึทื˜ื™ืึธืŸ ื•ื•ืขืงื˜ืึธืจ ืื•ืŸ ื™ื ืงืจื™ืคึผื˜ื™ื“ ื“ืึทื˜ืŸ.

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ืื™ืŸ ื“ื™ ืกื•ืฃ, ืคืึทืจืžืึทื›ืŸ ื“ื™ ื˜ืขืงืข, ื•ืžืงืขืจืŸ ื“ื™ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ืื•ืŸ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืงืึธื ื˜ืจืึธืœ ืฆื• ื“ื™ ืคืึทืงื˜ื™ืฉ ืคื•ื ืงืฆื™ืข ืึทืขืก.

ืžื™ืจ ืงืœื™ื™ึทื‘ืŸ ืึท ืึทืคึผืง ืžื™ื˜ ืึท ืคึผืึทื˜ืฉื˜ ื‘ื™ื‘ืœื™ืึธื˜ืขืง, ืฆื™ื™ื›ืŸ ืขืก, ื•ืคึผืœืึธืึทื“ ืขืก ืฆื• ื“ื™ ืžื™ื˜ืœ / ืขืžื•ืœืึทื˜ืึธืจ ืื•ืŸ ืงืึทื˜ืขืจ ืขืก. ืžื™ืจ ื–ืขืŸ ืึทื– ืื•ื ื“ื–ืขืจ ื“ืึทืžืคึผ ืื™ื– ื‘ืืฉืืคืŸ, ืื•ืŸ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ื“ืึทื˜ืŸ ื–ืขื ืขืŸ ื’ืขืฉืจื™ื‘ืŸ ื“ืึธืจื˜. ื“ืขืจ ื‘ืœืขื˜ืขืจืขืจ ื ื™ืฆื˜ ืขื ืงืจื™ืคึผืฉืึทืŸ ื ื™ื˜ ื‘ืœื•ื™ื– ืคึฟืึทืจ ืคืึทืจืงืขืจ, ืื•ืŸ ืึทืœืข ืขื ืงืจื™ืคึผืฉืึทืŸ ื’ื™ื™ื˜ ื“ื•ืจืš ื“ื™ ืคึฟื•ื ืงืฆื™ืข ืื™ืŸ ืงืฉื™ื. ืื‘ืขืจ ืคึฟืึทืจ ืขื˜ืœืขื›ืข ืกื™ื‘ื” ื“ื™ ื ื™ื™ื˜ื™ืง ื“ืึทื˜ืŸ ื–ืขื ืขืŸ ื ื™ืฉื˜ ื“ืึธืจื˜, ืื•ืŸ ื“ื™ ืคืืจืœืื ื’ื˜ ื‘ืขื˜ืŸ ืื™ื– ื ื™ื˜ ืงืขื ื˜ื™ืง ืื™ืŸ ื“ื™ ืคืึทืจืงืขืจ. ื›ึผื“ื™ ื ื™ืฉื˜ ืฆื• ื•ื•ืึทืจื˜ืŸ ื‘ื™ื– ื“ื™ UC ื‘ืจืึทื•ื–ืขืจ ื•ื•ื™ื™ื–ืŸ ืฆื• ืžืึทื›ืŸ ื“ื™ ื ื•ื™ื˜ื™ืง ื‘ืขื˜ืŸ, ืœืึธื–ืŸ ืื•ื ื“ื– ื ืขืžืขืŸ ื“ื™ ื™ื ืงืจื™ืคึผื˜ื™ื“ ืขื ื˜ืคืขืจ ืคื•ืŸ ื“ื™ ืกืขืจื•ื•ืขืจ ื‘ืืงื•ืžืขืŸ ืคืจื™ืขืจ ืื•ืŸ ืœืึทื˜ืข ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื•ื•ื™ื“ืขืจ: ืœื™ื™ื’ ื“ื™ ื“ืขืงืจื™ืคึผื˜ื™ืึธืŸ ืฆื• ื“ื™ ื”ื•ื™ืคึผื˜ ืึทืงื˜ื™ื•ื•ื™ื˜ืขื˜ ืื•ื™ืฃ ืฉืึทืคึฟืŸ.

    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 ื•ื•ื™ื™ึทืœ ื“ืขืจ ืื•ืคึฟืŸ ืื•ืžื’ืขืงืขืจื˜ ื ืึทืœ.

ื‘ืขืฉืึทืก ื•ื•ื™ื™ึทื˜ืขืจ ืึทื ืึทืœื™ืกื™ืก ืคื•ืŸ ื“ื™ ืงืึธื“, ืึท ืคึฟื•ื ืงืฆื™ืข ืื™ื– ื“ื™ืกืงืึทื•ื•ืขืจื“ ืึทื– ื“ื™ืกื™ืคืขืจื– ื˜ืฉื™ืงืึทื•ื•ืข ืฉื•ืจื•ืช: "META-INF/" ืื•ืŸ ".ืจืกืึท". ืขืก ืงื•ืงื˜ ื•ื•ื™ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ื– ื•ื•ืขืจืึทืคื™ื™ื™ื ื’ ื–ื™ื™ึทืŸ ื‘ืึทื•ื•ื™ื™ึทื–ืŸ. ืึธื“ืขืจ ืืคื™ืœื• ื“ื–ืฉืขื ืขืจื™ื™ืฅ ืฉืœื™ืกืœืขืŸ ืคื•ืŸ ืขืก. ืื™ืš ื˜ืึธืŸ ื ื™ื˜ ื˜ืึทืงืข ื•ื•ื™ืœืŸ ืฆื• ื”ืึทื ื“ืœืขืŸ ืžื™ื˜ ื•ื•ืึธืก ืื™ื– ื’ืขืฉืขืขื ื™ืฉ ืžื™ื˜ ื“ื™ ื‘ืึทื•ื•ื™ื™ึทื–ืŸ, ืึทื–ื•ื™ ืžื™ืจ ื•ื•ืขืœืŸ ื ืึธืจ ืฆืขื˜ืœ ืขืก ื“ื™ ืจื™ื›ื˜ื™ืง ื‘ืึทื•ื•ื™ื™ึทื–ืŸ. ืœืึธืžื™ืจ ืœืึทื˜ืข ื“ื™ ื™ื ืงืจื™ืคึผื˜ื™ื“ ืฉื•ืจื” ืึทื–ื•ื™ ืึทื– ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ "META-INF /" ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ "BLABLINF /", ืฉืึทืคึฟืŸ ืึท ื˜ืขืงืข ืžื™ื˜ ื“ืขื ื ืึธืžืขืŸ ืื™ืŸ ื“ื™ ืึทืคึผืง ืื•ืŸ ืœื™ื™ื’ืŸ ื“ื™ ื•ื•ืขื•ื•ืขืจืงืข ื‘ืœืขื˜ืขืจืขืจ ื‘ืึทื•ื•ื™ื™ึทื–ืŸ.

ืžื™ืจ ืึทืกืขืžื‘ืึทืœ, ืฆื™ื™ื›ืŸ, ื™ื ืกื˜ืึทืœื™ืจืŸ, ืงืึทื˜ืขืจ. ื‘ื™ื ื’ืึธ! ืžื™ืจ ื”ืึธื‘ืŸ ื“ืขื ืฉืœื™ืกืœ!

ืžื™ื˜ืž

ืžื™ืจ ื‘ืืงื•ืžืขืŸ ืึท ืฉืœื™ืกืœ ืื•ืŸ ืึทืŸ ื™ื ื™ื˜ื™ืึทืœื™ื–ืึทื˜ื™ืึธืŸ ื•ื•ืขืงื˜ืึธืจ ื’ืœื™ื™ืš ืฆื• ื“ืขืจ ืฉืœื™ืกืœ. ืœืึธืžื™ืจ ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ื“ืขืงืจื™ืคึผื˜ ื“ื™ ืกืขืจื•ื•ืขืจ ืขื ื˜ืคืขืจ ืื™ืŸ CBC ืžืึธื“ืข.

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ืžื™ืจ ื–ืขืŸ ื“ื™ ืึทืจืงื™ื™ื•ื• URL, ืขืคึผืขืก ืขื ืœืขืš ืฆื• MD5, "extract_unzipsize" ืื•ืŸ ืึท ื ื•ืžืขืจ. ืžื™ืจ ืงืึธื ื˜ืจืึธืœื™ืจืŸ: ื“ื™ MD5 ืคื•ืŸ ื“ื™ ืึทืจืงื™ื™ื•ื• ืื™ื– ื“ื™ ื–ืขืœื‘ืข, ื“ื™ ื’ืจื™ื™ืก ืคื•ืŸ ื“ื™ ืึทื ืคึผืึทืงื˜ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืื™ื– ื“ื™ ื–ืขืœื‘ืข. ืžื™ืจ ื–ืขื ืขืŸ ื˜ืจื™ื™ื ื’ ืฆื• ืคึผืึทื˜ืฉ ื“ืขื ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืื•ืŸ ื’ืขื‘ืŸ ืขืก ืฆื• ื“ืขื ื‘ืœืขื˜ืขืจืขืจ. ืฆื• ื•ื•ื™ื™ึทื–ืŸ ืึทื– ืื•ื ื“ื–ืขืจ ืคึผืึทื˜ืฉื˜ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืื™ื– ืœืึธื•ื“ื™ื“, ืžื™ืจ ื•ื•ืขืœืŸ ืึธื ื”ื™ื™ื‘ืŸ ืึทืŸ ื™ื ื˜ืขื ื˜ ืฆื• ืฉืึทืคึฟืŸ ืึท SMS ืžื™ื˜ ื“ืขื ื˜ืขืงืกื˜ "PWNED!" ืžื™ืจ ื•ื•ืขืœืŸ ืคืึทืจื‘ื™ื™ึทื˜ืŸ ืฆื•ื•ื™ื™ ืจืขืกืคึผืึธื ืกืขืก ืคื•ืŸ ื“ื™ ืกืขืจื•ื•ืขืจ: puds.ucweb.com/upgrade/index.xhtml ืื•ืŸ ืฆื• ืึธืคึผืœืึธื“ื™ืจืŸ ื“ื™ ืึทืจืงื™ื™ื•ื•. ืื™ืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ืžื™ืจ ืคืึทืจื‘ื™ื™ึทื˜ืŸ MD5 (ื“ื™ ื’ืจื™ื™ืก ื˜ื•ื˜ ื ื™ืฉื˜ ื˜ื•ื™ืฉืŸ ื ืึธืš ืึทื ืคึผืึทืงื™ื ื’), ืื™ืŸ ื“ื™ ืจื’ืข ืžื™ืจ ื’ืขื‘ืŸ ื“ื™ ืึทืจืงื™ื™ื•ื• ืžื™ื˜ ื“ื™ ืคึผืึทื˜ืฉื˜ ื‘ื™ื‘ืœื™ืึธื˜ืขืง.

ื“ืขืจ ื‘ืœืขื˜ืขืจืขืจ ืคืจื•ื•ื•ื˜ ืฆื• ืึธืคึผืœืึธื“ื™ืจืŸ ื“ื™ ืึทืจืงื™ื™ื•ื• ืขื˜ืœืขื›ืข ืžืึธืœ, ื ืึธืš ื•ื•ืึธืก ืขืก ื’ื™ื˜ ืึท ื˜ืขื•ืช. ืœื›ืื•ืจื” ืขืคืขืก
ืขืจ ื”ืื˜ ื ื™ืฉื˜ ืœื™ื‘. ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ืึทื ืึทืœื™ื™ื–ื™ื ื’ ื“ืขื ืžืขืจืงื™ืง ืคึฟืึธืจืžืึทื˜, ืขืก ืคืืจืงืขืจื˜ ืื•ื™ืก ืึทื– ื“ืขืจ ืกืขืจื•ื•ืขืจ ืื•ื™ืš ื˜ืจืึทื ืกืžื™ื˜ื˜ ื“ื™ ื’ืจื™ื™ืก ืคื•ืŸ ื“ืขื ืึทืจืงื™ื™ื•ื•:

ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืื™ืŸ UC ื‘ืจืึทื•ื–ืขืจ

ืขืก ืื™ื– ืงืึธื“ืขื“ ืื™ืŸ LEB128. ื ืึธืš ื“ืขื ืคึผืึทื˜ืฉ, ื“ื™ ื’ืจื™ื™ืก ืคื•ืŸ ื“ืขื ืึทืจืงื™ื™ื•ื• ืžื™ื˜ ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืื™ื– ืึท ื‘ื™ืกืœ ื’ืขื‘ื™ื˜ืŸ, ืึทื–ื•ื™ ื“ืขืจ ื‘ืœืขื˜ืขืจืขืจ ื”ืื˜ ื’ืขื”ืืœื˜ืŸ ืึทื– ื“ืขืจ ืึทืจืงื™ื™ื•ื• ืื™ื– ื“ืึทื•ื ืœืึธื•ื“ื™ื“ ืงืจื•ื, ืื•ืŸ ื ืึธืš ืขื˜ืœืขื›ืข ืคืจื•ื•ื•ืŸ ืขืก ื”ืื˜ ืึท ื˜ืขื•ืช.

ืžื™ืจ ืกื˜ืจื•ื™ืขืจืŸ ื“ื™ ื’ืจื™ื™ืก ืคื•ืŸ ื“ืขื ืึทืจืงื™ื™ื•ื•... ืื•ืŸ โ€“ ื ืฆื—ื•ืŸ! ๐Ÿ™‚ ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืื™ื– ืื™ืŸ ื“ื™ ื•ื•ื™ื“ืขื.

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

ืงืึธื ืกืขืงื•ื•ืขื ืกืขืก ืื•ืŸ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ืึธืคึผืจื•ืฃ

ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื•ื•ืขื’, ื›ืึทืงืขืจื– ืงืขืŸ ื ื•ืฆืŸ ื“ื™ ื™ื ืกืึทืงื™ืขืจ ืฉื˜ืจื™ืš ืคื•ืŸ UC ื‘ืจืึทื•ื–ืขืจ ืฆื• ืคืึทืจืฉืคึผืจื™ื™ื˜ืŸ ืื•ืŸ ืœื•ื™ืคืŸ ื‘ื™ื™ื–ืข ืœื™ื‘ืจืึทืจื™ืขืก. ื“ื™ ืœื™ื™ื‘ืจืขืจื™ื– ื•ื•ืขื˜ ืึทืจื‘ืขื˜ืŸ ืื™ืŸ ื“ืขื ืงืึธื ื˜ืขืงืกื˜ ืคื•ืŸ ื“ืขื ื‘ืœืขื˜ืขืจืขืจ, โ€‹โ€‹ืึทื–ื•ื™ ื–ื™ื™ ื•ื•ืขืœืŸ ื‘ืึทืงื•ืžืขืŸ ืึทืœืข ื“ื™ ืกื™ืกื˜ืขื ืคึผืขืจืžื™ืฉืึทื ื–. ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ื•ื•ื™ื™ึทื–ืŸ ืคื™ืฉื™ื ื’ ืคึฟืขื ืฆื˜ืขืจ, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ืึทืงืกืขืก ืฆื• ื“ื™ ืืจื‘ืขื˜ืŸ ื˜ืขืงืขืก ืคื•ืŸ ืžืึทืจืึทื ืฅ ื›ื™ื ืขื–ื™ืฉ ื•ื•ืขื•ื•ืขืจืงืข, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืœืึธื’ื™ื ืก, ืคึผืึทืกื•ื•ืขืจื“ื– ืื•ืŸ ืงื™ื›ืœืขืš ืกื˜ืึธืจื“ ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก.

ืžื™ืจ ืงืึธื ื˜ืึทืงื˜ืขื“ ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืคื•ืŸ UC ื‘ืจืึทื•ื–ืขืจ ืื•ืŸ ื™ื ืคืึธืจืžื“ ื–ื™ื™ ื•ื•ืขื’ืŸ ื“ืขื ืคึผืจืึธื‘ืœืขื ื•ื•ืึธืก ืžื™ืจ ื’ืขืคึฟื•ื ืขืŸ, ื’ืขืคืจื•ื•ื•ื˜ ืฆื• ืคื•ื ื˜ ืื•ื™ืก ื“ื™ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ ืื•ืŸ ื–ื™ื™ึทืŸ ื’ืขืคืึทืจ, ืึธื‘ืขืจ ื–ื™ื™ ื”ืึธื‘ืŸ ื ื™ืฉื˜ ื“ื™ืกืงื•ื˜ื™ืจืŸ ืขืคึผืขืก ืžื™ื˜ ืื•ื ื“ื–. ื“ืขืจื•ื•ื™ื™ึทืœ, ื“ืขืจ ื‘ืœืขื˜ืขืจืขืจ ืคืืจื‘ืœื™ื‘ืŸ ืฆื• ืคืœืึธื ื˜ ื–ื™ื™ืŸ ื’ืขืคืขืจืœืขืš ืฉื˜ืจื™ืš ืื™ืŸ ืงืœืึธืจ ื“ืขืจื–ืขืŸ. ืื‘ืขืจ ืึทืžืึธืœ ืžื™ืจ ืื ื˜ืคืœืขืงื˜ ื“ื™ ื“ืขื˜ืึทื™ืœืก ืคื•ืŸ ื“ื™ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™, ืขืก ืื™ื– ื ื™ื˜ ืžืขืจ ืžืขื’ืœืขืš ืฆื• ืื™ื’ื ืึธืจื™ืจืŸ ืขืก ื•ื•ื™ ืคืจื™ืขืจ. 27 ืžืขืจืฅ ืื™ื– ื’ืขื•ื•ืขืŸ
ืึท ื ื™ื™ึทืข ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹UC Browser 12.10.9.1193 ืื™ื– ื‘ืืคืจื™ื™ื˜, ื•ื•ืึธืก ืึทืงืกืขืกื˜ ื“ื™ ืกืขืจื•ื•ืขืจ ื“ื•ืจืš ื”ื˜ื˜ืคึผืก: puds.ucweb.com/upgrade/index.xhtml.

ืื™ืŸ ืึทื“ื™ืฉืึทืŸ, ื ืึธืš ื“ื™ "ืคืึทืจืจื™ื›ื˜ืŸ" ืื•ืŸ ื‘ื™ื– ื“ื™ ืฆื™ื™ื˜ ืคื•ืŸ ืฉืจื™ื™ื‘ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ, ื˜ืจื™ื™ื ื’ ืฆื• ืขืคึฟืขื ืขืŸ ืึท ืคึผื“ืฃ ืื™ืŸ ืึท ื‘ืœืขื˜ืขืจืขืจ ืจื™ื–ืึทืœื˜ื™ื“ ืื™ืŸ ืึท ื˜ืขื•ืช ืึธื ื–ืึธื’ ืžื™ื˜ ื“ื™ ื˜ืขืงืกื˜ "ืึธืึธืคึผืก, ืขืคึผืขืก ืื™ื– ืคืึทืœืฉ!" ื ื‘ืงืฉื” ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ ืื™ื– ื ื™ืฉื˜ ื’ืขืžืื›ื˜ ื•ื•ืขืŸ ื˜ืจื™ื™ื ื’ ืฆื• ืขืคึฟืขื ืขืŸ ืึท ืคึผื“ืฃ, ืึธื‘ืขืจ ืึท ื‘ืงืฉื” ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืขืžืื›ื˜ ื•ื•ืขืŸ ื“ืขืจ ื‘ืœืขื˜ืขืจืขืจ ืื™ื– ืœืึธื ื˜ืฉื˜, ื•ื•ืึธืก ื”ื™ื ืฅ ืื•ื™ืฃ ื“ื™ ืคืืจื‘ืœื™ื‘ืŸ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืึธืคึผืœืึธื“ื™ืจืŸ ืขืงืกืขืงื•ื˜ืึทื‘ืœืข ืงืึธื“ ืื™ืŸ ื”ื™ืœืขืœ ืคื•ืŸ Google ืคึผืœื™ื™ึท ื›ึผืœืœื™ื.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’