UC เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

UC เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

เชชเชฐเชฟเชšเชฏ

เชฎเชพเชฐเซเชšเชจเชพ เช…เช‚เชคเชฎเชพเช‚ เช…เชฎเซ‡ เชœเชพเชฃ เช•เชฐเซ€, เช•เซ‡ เชคเซ‡เช“เช UC เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชตเชฃเชšเช•เชพเชธเชพเชฏเซ‡เชฒ เช•เซ‹เชก เชฒเซ‹เชก เช•เชฐเชตเชพเชจเซ€ เช…เชจเซ‡ เชšเชฒเชพเชตเชตเชพเชจเซ€ เช›เซเชชเซ€ เช•เซเชทเชฎเชคเชพ เชถเซ‹เชงเซ€ เช•เชพเชขเซ€. เช†เชœเซ‡ เช†เชชเชฃเซ‡ เช† เชกเชพเช‰เชจเชฒเซ‹เชก เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชนเซ‡เช•เชฐเซเชธ เชคเซ‡เชฎเชจเชพ เชชเซ‹เชคเชพเชจเชพ เชนเซ‡เชคเซเช“ เชฎเชพเชŸเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เชคเซ‡ เชตเชฟเชถเซ‡ เชตเชฟเช—เชคเชตเชพเชฐ เชœเซ‹เชˆเชถเซเช‚.

เชฅเซ‹เชกเชพ เชธเชฎเชฏ เชชเชนเซ‡เชฒเชพ, เชฏเซเชธเซ€ เชฌเซเชฐเชพเช‰เชเชฐเชจเซ€ เชœเชพเชนเซ‡เชฐเชพเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€ เช…เชจเซ‡ เช–เซ‚เชฌ เชœ เช†เช•เซเชฐเชฎเช• เชฐเซ€เชคเซ‡ เชตเชฟเชคเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€: เชคเซ‡ เชฎเซ‰เชฒเชตเซ‡เชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเชพ เช‰เชชเช•เชฐเชฃเซ‹ เชชเชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚, เชตเชฟเชกเชฟเชฏเซ‹ เชซเชพเช‡เชฒเซ‹เชจเซ€ เช†เชกเชฎเชพเช‚ เชตเชฟเชตเชฟเชง เชธเชพเช‡เชŸเซเชธเชฅเซ€ เชตเชฟเชคเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚ (เชเชŸเชฒเซ‡ โ€‹โ€‹โ€‹โ€‹เช•เซ‡, เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซ‡ เชฒเชพเช—เซเชฏเซเช‚ เช•เซ‡ เชคเซ‡เช“ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชเช• เชชเซ‹เชฐเซเชจ เชตเชฟเชกเชฟเช“, เชชเชฐเช‚เชคเซ เชคเซ‡เชจเชพ เชฌเชฆเชฒเซ‡ เช† เชฌเซเชฐเชพเช‰เชเชฐ เชธเชพเชฅเซ‡ เชเช• APK เชชเซเชฐเชพเชชเซเชค เช•เชฐเซเชฏเซเช‚), เชธเช‚เชฆเซ‡เชถเชพเช“ เชธเชพเชฅเซ‡ เชกเชฐเชพเชฎเชฃเซ€ เชฌเซ‡เชจเชฐเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ เช•เซ‡ เชฌเซเชฐเชพเช‰เชเชฐ เชœเซ‚เชจเซเช‚, เชธเช‚เชตเซ‡เชฆเชจเชถเซ€เชฒ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชœเซ‡เชตเซ€ เชธเชพเชฎเช—เซเชฐเซ€ เช›เซ‡. VK เชชเชฐ เชธเชคเซเชคเชพเชตเชพเชฐ UC เชฌเซเชฐเชพเช‰เชเชฐ เชœเซ‚เชฅเชฎเชพเช‚ เช›เซ‡ เชตเชฟเชทเชฏ, เชœเซ‡เชฎเชพเช‚ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เช…เชฏเซ‹เช—เซเชฏ เชœเชพเชนเซ‡เชฐเชพเชคเซ‹ เชตเชฟเชถเซ‡ เชซเชฐเชฟเชฏเชพเชฆ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เชคเซเชฏเชพเช‚ เช˜เชฃเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช›เซ‡. 2016 เชฎเชพเช‚ เชคเซเชฏเชพเช‚ เชธเชฎเชพเชจ เชนเชคเซเช‚ เชตเชฟเชกเชฟเช“ เชœเชพเชนเซ‡เชฐเชพเชค เชฐเชถเชฟเชฏเชจเชฎเชพเช‚ (เชนเชพ, เชœเชพเชนเซ‡เชฐเชพเชค-เช…เชตเชฐเซ‹เชงเชฟเชค เชฌเซเชฐเชพเช‰เชเชฐ เชฎเชพเชŸเซ‡ เชœเชพเชนเซ‡เชฐเชพเชค).

เชฒเช–เชตเชพเชจเชพ เชธเชฎเชฏเซ‡, UC เชฌเซเชฐเชพเช‰เชเชฐ เชชเชพเชธเซ‡ Google Play เชชเชฐ 500 เชฅเซ€ เชตเชงเซ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เช›เซ‡. เช† เชชเซเชฐเชญเชพเชตเชถเชพเชณเซ€ เช›เซ‡ - เชซเช•เซเชค Google Chrome เชฎเชพเช‚ เชตเชงเซ เช›เซ‡. เชธเชฎเซ€เช•เซเชทเชพเช“เชฎเชพเช‚ เชคเชฎเซ‡ เชœเชพเชนเซ‡เชฐเชพเชคเซ‹ เช…เชจเซ‡ Google Play เชชเชฐ เช•เซ‡เชŸเชฒเซ€เช• เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹ เชชเชฐ เชฐเซ€เชกเชพเชฏเชฐเซ‡เช•เซเชŸ เช•เชฐเชตเชพ เชตเชฟเชถเซ‡ เช˜เชฃเซ€ เชฌเชงเซ€ เชซเชฐเชฟเชฏเชพเชฆเซ‹ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹. เช…เชฎเชพเชฐเชพ เชธเช‚เชถเซ‹เชงเชจเชจเซเช‚ เช† เช•เชพเชฐเชฃ เชนเชคเซเช‚: เช…เชฎเซ‡ เช เชœเซ‹เชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚ เช•เซ‡ เชถเซเช‚ UC เชฌเซเชฐเชพเช‰เชเชฐ เช•เช‚เชˆเช• เช–เชฐเชพเชฌ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡. เช…เชจเซ‡ เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เช•เซ‡ เชคเซ‡ เช•เชฐเซ‡ เช›เซ‡!

เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เซ‹เชกเชฎเชพเช‚, เชเช•เซเชเซ‡เช•เซเชฏเซเชŸเซ‡เชฌเชฒ เช•เซ‹เชกเชจเซ‡ เชกเชพเช‰เชจเชฒเซ‹เชก เช…เชจเซ‡ เชšเชฒเชพเชตเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชฎเชณเซ€ เช†เชตเซ€ เชนเชคเซ€, เชœเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพเชจเชพ เชจเชฟเชฏเชฎเซ‹เชจเซ€ เชตเชฟเชฐเซเชฆเซเชง เช›เซ‡ Google Play เชชเชฐ. เชเช•เซเชเซ‡เช•เซเชฏเซเชŸเซ‡เชฌเชฒ เช•เซ‹เชก เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพ เช‰เชชเชฐเชพเช‚เชค, UC เชฌเซเชฐเชพเช‰เชเชฐ เช…เชธเซเชฐเช•เซเชทเชฟเชค เชฐเซ€เชคเซ‡ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— MitM เชนเซเชฎเชฒเซ‹ เชถเชฐเซ‚ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡. เชšเชพเชฒเซ‹ เชœเซ‹เชˆเช เช•เซ‡ เชถเซเช‚ เช†เชชเชฃเซ‡ เช†เชตเซ‹ เชนเซเชฎเชฒเซ‹ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช.

เชจเซ€เชšเซ‡ เชฒเช–เซ‡เชฒ เชฌเชงเซเช‚ UC เชฌเซเชฐเชพเช‰เชเชฐเชจเชพ เชตเชฐเซเชเชจ เชฎเชพเชŸเซ‡ เชธเซเชธเช‚เช—เชค เช›เซ‡ เชœเซ‡ เช…เชญเซเชฏเชพเชธ เชธเชฎเชฏเซ‡ Google Play เชชเชฐ เช‰เชชเชฒเชฌเซเชง เชนเชคเซเช‚:

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 เชฌเซเชฐเชพเช‰เชเชฐเชจเซ€ เช† เชธเซเชตเชฟเชงเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚: เชจเซ‡เชŸเซ€เชต เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ PDF เช–เซ‹เชฒเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ, เชœเซ‡ APKเชฎเชพเช‚ เชจเชฅเซ€ เช…เชจเซ‡ เชœเซ‹ เชœเชฐเซ‚เชฐเซ€ เชนเซ‹เชฏ เชคเซ‹ เชคเซ‡ เช‡เชจเซเชŸเชฐเชจเซ‡เชŸ เชชเชฐเชฅเซ€ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‡ เช›เซ‡. เชคเซ‡ เชจเซ‹เช‚เชงเชตเซเช‚ เชฏเซ‹เช—เซเชฏ เช›เซ‡ เช•เซ‡, เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชฐเซ€เชคเซ‡, เชฏเซเชธเซ€ เชฌเซเชฐเชพเช‰เชเชฐเชจเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ€ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เชตเชฟเชจเชพ เช•เช‚เชˆเช• เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฆเชฌเชพเชฃ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ - เชœเซ‹ เชคเชฎเซ‡ เชฌเซเชฐเชพเช‰เชเชฐ เชฒเซ‹เช‚เชš เชฅเชฏเชพ เชชเช›เซ€ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒเซ€ เชตเชฟเชจเช‚เชคเซ€เชจเซ‡ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเซ‡เชฒ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‹ เช›เซ‹. เชชเชฐเช‚เชคเซ เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเชพเชฐเซ‡ เชธเชฐเซเชตเชฐ เชธเชพเชฅเซ‡เชจเซ€ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพเชจเชพ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชจเซ‹ เชตเชงเซ เชตเชฟเช—เชคเชตเชพเชฐ เช…เชญเซเชฏเชพเชธ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚ เช›เซ‡ เช•เซ‡ เช‡เชจเซเชŸเชฐเชธเซ‡เชชเซเชŸเซ‡เชก เชชเซเชฐเชคเชฟเชธเชพเชฆเชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเชตเซเช‚ เช…เชจเซ‡ PDF เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซ‡ เชฌเชฆเชฒเชตเซเช‚ เชตเชงเซ เชธเชฐเชณ เชฐเชนเซ‡เชถเซ‡.

เชคเซ‡เชฅเซ€, เชœเซเชฏเชพเชฐเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชธเซ€เชงเชพ เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชชเซ€เชกเซ€เชเชซ เช–เซ‹เชฒเชตเชพ เชฎเชพเช‚เช—เซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชจเซ€เชšเซ‡เชจเซ€ เชตเชฟเชจเช‚เชคเซ€เช“ เชŸเซเชฐเชพเชซเชฟเช•เชฎเชพเช‚ เชœเซ‹เชˆ เชถเช•เชพเชฏ เช›เซ‡:

UC เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

เชชเซเชฐเชฅเชฎ เชเช• เชชเซ‹เชธเซเชŸ เชตเชฟเชจเช‚เชคเซ€ เช›เซ‡ 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, เชœเซ‡ เชตเชพเชธเซเชคเชตเชฎเชพเช‚ a .so เชจเชฅเซ€, เชชเชฐเช‚เชคเซ a .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 เชจเซ‹ เช…เชฐเซเชฅ เช›เซ‡ เชกเชฟเช•เซเชฐเชฟเชชเซเชถเชจ, เชชเชฆเซเชงเชคเชฟเชจเซ€ เชœเซ‡เชฎ เช…เช‚เชคเชฟเชฎ เชธเชฟเชธเซเชŸเชฎ เชตเชฐเซเช— javax.crypto.Cipher. เช…เชจเซ‡ เช† เชฌเชงเซเช‚ 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);
}
}

เช…เชจเซ‡ เชตเชฐเซเช— เชชเชฃ 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 เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

เชชเชฐเช‚เชคเซ เชคเซ‡เชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€: ELF เชซเชพเช‡เชฒเชจเซ‡ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เชฒเซ‹เชก เช•เชฐเชตเชพ เช…เชจเซ‡ เชคเซ‡เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชนเซ‡เชกเชฐ เชŸเซ‡เชฌเชฒ เชชเชฐเซเชฏเชพเชชเซเชค เช›เซ‡. เชคเซ‡เชฅเซ€, เช…เชฎเซ‡ เชนเซ‡เชกเชฐเชฎเชพเช‚ เช…เชจเซเชฐเซ‚เชช เช•เซเชทเซ‡เชคเซเชฐเซ‹เชจเซ‡ เชถเซ‚เชจเซเชฏ เช•เชฐเซ€เชจเซ‡, เชตเชฟเชญเชพเช— เช•เซ‹เชทเซเชŸเช•เชจเซ‡ เช–เชพเชฒเซ€ เช•เชพเชขเซ€ เชจเชพเช–เซ€เช เช›เซ€เช.

UC เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

IDA เชฎเชพเช‚ เชซเชพเช‡เชฒ เชซเชฐเซ€เชฅเซ€ เช–เซ‹เชฒเซ‹.

เชœเชพเชตเชพ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเชจเซ‡ เช•เชนเซ‡เชตเชพเชจเซ€ เชฌเซ‡ เชฐเซ€เชคเซ‹ เช›เซ‡ เช•เซ‡ เชœเซเชฏเชพเช‚ เชฎเซ‚เชณ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชฎเชพเช‚ เชœเชพเชตเชพ เช•เซ‹เชกเชฎเชพเช‚ เชจเซ‡เชŸเชฟเชต เชคเชฐเซ€เช•เซ‡ เชœเชพเชนเซ‡เชฐ เช•เชฐเชพเชฏเซ‡เชฒ เชชเชฆเซเชงเชคเชฟเชจเซ‹ เช…เชฎเชฒ เชฌเชฐเชพเชฌเชฐ เชธเซเชฅเชฟเชค เช›เซ‡. เชชเซเชฐเชฅเชฎ เชคเซ‡เชจเซ‡ เชเช• เชชเซเชฐเชœเชพเชคเชฟเชจเซเช‚ เชจเชพเชฎ เช†เชชเชตเชพเชจเซเช‚ เช›เซ‡ Java_package_name_ClassName_MethodName.

เชฌเซ€เชœเซเช‚ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชฒเซ‹เชก เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชคเซ‡เชจเซ‡ เชฐเชœเซ€เชธเซเชŸเชฐ เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‡ (เชซเช‚เช•เซเชถเชจเชฎเชพเช‚ JNI_เช“เชจเชฒเซ‹เชก)
เชซเช‚เช•เซเชถเชจ เช•เซ‰เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฐเชœเซ€เชธเซเชŸเชฐ เชจเซ‡เชŸเชฟเชตเซเชธ.

เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชœเซ‹ เช†เชชเชฃเซ‡ เชชเซเชฐเชฅเชฎ เชชเชฆเซเชงเชคเชฟเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช, เชคเซ‹ เชจเชพเชฎ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช: Java_com_taobao_wireless_security_adapter_JNICLlibrary_doCommandNative.

เชจเชฟเช•เชพเชธ เช•เชฐเซ‡เชฒเชพ เช•เชพเชฐเซเชฏเซ‹เชฎเชพเช‚ เช†เชตเชพ เช•เซ‹เชˆ เช•เชพเชฐเซเชฏ เชจเชฅเซ€, เชœเซ‡เชจเซ‹ เช…เชฐเซเชฅ เช›เซ‡ เช•เซ‡ เชคเชฎเชพเชฐเซ‡ เช•เซ‰เชฒ เชถเซ‹เชงเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชฐเชœเซ€เชธเซเชŸเชฐ เชจเซ‡เชŸเชฟเชตเซเชธ.
เชšเชพเชฒเซ‹ เชซเช‚เช•เซเชถเชจ เชชเชฐ เชœเชˆเช JNI_เช“เชจเชฒเซ‹เชก เช…เชจเซ‡ เช†เชชเชฃเซ‡ เช† เชšเชฟเชคเซเชฐ เชœเซ‹เชˆเช เช›เซ€เช:

UC เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

เช…เชนเชฟเชฏเชพเช‚ เชถเซเช‚ เชฅเช‡ เชฐเชนเซเชฏเซเช‚ เช›เซ‡? เชชเซเชฐเชฅเชฎ เชจเชœเชฐเชฎเชพเช‚, เช•เชพเชฐเซเชฏเชจเซ€ เชถเชฐเซ‚เช†เชค เช…เชจเซ‡ เช…เช‚เชค เชเช†เชฐเชเชฎ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชฎเชพเชŸเซ‡ เชฒเชพเช•เซเชทเชฃเชฟเช• เช›เซ‡. เชธเซเชŸเซ‡เช• เชชเชฐเชจเซ€ เชชเซเชฐเชฅเชฎ เชธเซ‚เชšเชจเชพ เชฐเชœเชฟเชธเซเชŸเชฐเชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€เชจเซ‡ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡เชจเซ‹ เชซเช‚เช•เซเชถเชจ เชคเซ‡เชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€เชฎเชพเช‚ เช‰เชชเชฏเซ‹เช— เช•เชฐเชถเซ‡ (เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, R0, R1 เช…เชจเซ‡ R2), เชคเซ‡เชฎเชœ LR เชฐเชœเชฟเชธเซเชŸเชฐเชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€เช“, เชœเซ‡เชฎเชพเช‚ เชซเช‚เช•เซเชถเชจเชฎเชพเช‚เชฅเซ€ เชตเชณเชคเชฐเชจเซเช‚ เชธเชฐเชจเชพเชฎเซเช‚ เช›เซ‡. . เช›เซ‡เชฒเซเชฒเซ€ เชธเซ‚เชšเชจเชพ เชธเชพเชšเชตเซ‡เชฒเชพ เชฐเชœเชฟเชธเซเชŸเชฐเชจเซ‡ เชชเซเชจเชƒเชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชตเชณเชคเชฐเชจเซเช‚ เชธเชฐเชจเชพเชฎเซเช‚ เชคเชฐเชค เชœ เชชเซ€เชธเซ€ เชฐเชœเชฟเชธเซเชŸเชฐเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ - เช†เชฎ เชซเช‚เช•เซเชถเชจเชฎเชพเช‚เชฅเซ€ เชชเชฐเชค เช†เชตเซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เชœเซ‹ เชคเชฎเซ‡ เชจเชœเซ€เช•เชฅเซ€ เชœเซ‹เชถเซ‹, เชคเซ‹ เชคเชฎเซ‡ เชœเซ‹เชถเซ‹ เช•เซ‡ เช…เช‚เชคเชฟเชฎ เชธเซ‚เชšเชจเชพ เชธเซเชŸเซ‡เช• เชชเชฐ เชธเช‚เช—เซเชฐเชนเชฟเชค เชฐเซ€เชŸเชฐเซเชจ เชเชกเซเชฐเซ‡เชธเชจเซ‡ เชฌเชฆเชฒเซ‡ เช›เซ‡. เชšเชพเชฒเซ‹ เช—เชฃเชคเชฐเซ€ เช•เชฐเซ€เช เช•เซ‡ เชคเซ‡ เชชเช›เซ€ เช•เซ‡เชตเซเช‚ เชนเชถเซ‡
เช•เซ‹เชก เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ. เชšเซ‹เช•เซเช•เชธ เชธเชฐเชจเชพเชฎเซเช‚ 1xB0 R130 เชฎเชพเช‚ เชฒเซ‹เชก เชฅเชพเชฏ เช›เซ‡, เชคเซ‡เชฎเชพเช‚เชฅเซ€ 5 เชฌเชพเชฆ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชชเช›เซ€ เชคเซ‡ R0 เชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ 0x10 เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชคเซ‡ 0xB13B เชฌเชนเชพเชฐ เชตเชณเซ‡ เช›เซ‡. เช†เชฎ, IDA เชตเชฟเชšเชพเชฐเซ‡ เช›เซ‡ เช•เซ‡ เช›เซ‡เชฒเซเชฒเซ€ เชธเซ‚เชšเชจเชพ เช เชธเชพเชฎเชพเชจเซเชฏ เชซเช‚เช•เซเชถเชจ เชฐเซ€เชŸเชฐเซเชจ เช›เซ‡, เชชเชฐเช‚เชคเซ เชนเช•เซ€เช•เชคเชฎเชพเช‚ เชคเซ‡ เช—เชฃเชคเชฐเซ€ เช•เชฐเซ‡เชฒ เชธเชฐเชจเชพเชฎเชพเช‚ 0xB13B เชชเชฐ เชœเชˆ เชฐเชนเซเชฏเซเช‚ เช›เซ‡.

เช…เชนเซ€เช‚ เชฏเชพเชฆ เชฐเชพเช–เชตเซเช‚ เชฏเซ‹เช—เซเชฏ เช›เซ‡ เช•เซ‡ เชเช†เชฐเชเชฎ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐเซเชธ เชชเชพเชธเซ‡ เชฌเซ‡ เชฎเซ‹เชกเซเชธ เช…เชจเซ‡ เชธเซ‚เชšเชจเชพเช“เชจเชพ เชฌเซ‡ เชธเซ‡เชŸ เช›เซ‡: เชเช†เชฐเชเชฎ เช…เชจเซ‡ เชฅเชฎเซเชฌ. เชธเชฐเชจเชพเชฎเชพเชจเซ‹ เชธเซŒเชฅเซ€ เช“เช›เซ‹ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชญเชพเช— เชชเซเชฐเซ‹เชธเซ‡เชธเชฐเชจเซ‡ เชœเชฃเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เช•เชฏเชพ เชธเซ‚เชšเชจเชพ เชธเซ‡เชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชฐเชนเซเชฏเซ‹ เช›เซ‡. เชเชŸเชฒเซ‡ เช•เซ‡, เชธเชฐเชจเชพเชฎเซเช‚ เชตเชพเชธเซเชคเชตเชฎเชพเช‚ 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 เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

เช…เชจเซ‡ เช–เชฐเซ‡เช–เชฐ, เช…เชนเซ€เช‚ LR เชฎเชพเช‚ เชชเชกเซ‡เชฒเชพ เชธเชฐเชจเชพเชฎเชพ เชชเชฐ เชเช• เชถเชฌเซเชฆ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช† เชธเชฐเชจเชพเชฎเชพเชฎเชพเช‚ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเชฌเชพเชฆ เชชเชฐเชฟเชฃเชพเชฎเซ€ เชธเชฐเชจเชพเชฎเชพ เชชเชฐเชจเซ€ เช•เชฟเช‚เชฎเชค เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชธเซเชŸเซ‡เช• เชชเชฐ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช‰เชชเชฐเชพเช‚เชค, LR เชฎเชพเช‚ 4 เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชœเซ‡เชฅเซ€ เชซเช‚เช•เซเชถเชจเชฎเชพเช‚เชฅเซ€ เชชเชพเช›เชพ เชซเชฐเซเชฏเชพ เชชเช›เซ€, เช† เชœ เช‘เชซเชธเซ‡เชŸ เช›เซ‹เชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชœเซ‡ เชชเช›เซ€ 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 เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

เช…เชฎเซ‡ เช‘เชซเชธเซ‡เชŸเชจเซ‡ เชเชฒเช†เชฐเชฎเชพเช‚เชฅเซ€ เชธเชฐเชจเชพเชฎเชพเช‚ เชชเชฐ เชฒเชˆเช เช›เซ€เช, เชคเซ‡เชจเซ‡ เชเชฒเช†เชฐเชฎเชพเช‚ เช‰เชฎเซ‡เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชคเซเชฏเชพเช‚ เชœเชˆเช เช›เซ€เช. 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_เช“เชจเชฒเซ‹เชก.

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 เชตเชฐเซเช—เชจเซเช‚ เชจเชพเชฎ เชธเซเชชเชทเซเชŸ เชฐเซ€เชคเซ‡ เชกเชฟเช•เซเชฐเชฟเชชเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡. เช† เชซเช‚เช•เซเชถเชจเชจเชพ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชคเชฐเซ€เช•เซ‡, เชเชจเซเช•เซเชฐเชฟเชชเซเชŸเซ‡เชก เชกเซ‡เชŸเชพ, เชšเซ‹เช•เซเช•เชธ เชฌเชซเชฐ เช…เชจเซ‡ เชธเช‚เช–เซเชฏเชพ เชœเซ‡เชตเชพ เชกเซ‡เชŸเชพ เชฎเชพเชŸเซ‡ เชจเชฟเชฐเซเชฆเซ‡เชถเช• เชชเชธเชพเชฐ เชฅเชพเชฏ เช›เซ‡. เชฆเซ‡เช–เซ€เชคเซ€ เชฐเซ€เชคเซ‡, เชซเช‚เช•เซเชถเชจเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชฌเชซเชฐเชฎเชพเช‚ เชเช• เชกเชฟเช•เซเชฐเชฟเชชเซเชŸเซ‡เชก เชฒเชพเช‡เชจ เชนเชถเซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชซเช‚เช•เซเชถเชจเชฎเชพเช‚ เชชเชธเชพเชฐ เชฅเชพเชฏ เช›เซ‡. เชตเชฐเซเช— เชถเซ‹เชงเซ‹, เชœเซ‡ เชตเชฐเซเช—เชจเซเช‚ เชจเชพเชฎ เชฌเซ€เชœเชพ เชชเชฐเชฟเชฎเชพเชฃ เชคเชฐเซ€เช•เซ‡ เชฒเซ‡ เช›เซ‡. เชคเซ‡เชฅเซ€, เชธเช‚เช–เซเชฏเชพ เช เชฌเชซเชฐเชจเซเช‚ เช•เชฆ เช…เชฅเชตเชพ เชฐเซ‡เช–เชพเชจเซ€ เชฒเช‚เชฌเชพเชˆ เช›เซ‡. เชšเชพเชฒเซ‹ เชตเชฐเซเช—เชจเชพ เชจเชพเชฎเชจเซ‡ เชธเชฎเชœเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เช, เชคเซ‡ เช…เชฎเชจเซ‡ เชœเชฃเชพเชตเชถเซ‡ เช•เซ‡ เชถเซเช‚ เช†เชชเชฃเซ‡ เชธเชพเชšเซ€ เชฆเชฟเชถเชพเชฎเชพเช‚ เชœเชˆ เชฐเชนเซเชฏเชพ เช›เซ€เช. เชšเชพเชฒเซ‹ เชฎเชพเช‚ เชถเซเช‚ เชฅเชพเชฏ เช›เซ‡ เชคเซ‡เชจเชพ เชชเชฐ เชจเชœเซ€เช•เชฅเซ€ เชจเชœเชฐ เช•เชฐเซ€เช 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 เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎเชจเซ‡ เช“เชณเช–เซ€ เชถเช•เซ‹ เช›เซ‹.

เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชเช• เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎ เช…เชจเซ‡ เช•เซ€ เช›เซ‡. เชšเชพเชฒเซ‹ เชตเชฐเซเช—เชจเชพ เชจเชพเชฎเชจเซ‡ เชธเชฎเชœเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เช. เชถเซเช‚ เชฅเชฏเซเช‚ เชคเซ‡ เช…เชนเซ€เช‚ เช›เซ‡: com/taobao/wireless/security/adapter/JNICLlibrary. เชฎเชนเชพเชจ! เช…เชฎเซ‡ เชธเชพเชšเชพ เชฎเชพเชฐเซเช— เชชเชฐ เช›เซ€เช.

เช†เชฆเซ‡เชถ เชตเซƒเช•เซเชท

เชนเชตเซ‡ เช†เชชเชฃเซ‡ เชชเชกเช•เชพเชฐ เชถเซ‹เชงเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชฐเชœเซ€เชธเซเชŸเชฐ เชจเซ‡เชŸเชฟเชตเซเชธ, เชœเซ‡ เช†เชชเชฃเชจเซ‡ เชซเช‚เช•เซเชถเชจ เชคเชฐเชซ เชจเชฟเชฐเซเชฆเซ‡เชถ เช•เชฐเชถเซ‡ doCommandNative. เชšเชพเชฒเซ‹ เชซเซ‰เชฐเชฅเซ€ เชฎเช‚เช—เชพเชตเซ‡เชฒเชพ เชซเช‚เช•เซเชถเชจเซเชธ เชœเซ‹เชˆเช JNI_เช“เชจเชฒเซ‹เชก, เช…เชจเซ‡ เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เชถเซ‹เชงเซ€เช เช›เซ€เช 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_เช“เชจเชฒเซ‹เชก.
เชคเซเชฐเชฃ เชจเช‚เชฌเชฐเซ‹ เชตเซƒเช•เซเชทเชฎเชพเช‚ เชชเชพเชฅเชจเซ‡ เชเชจเซเช•เซ‹เชก เช•เชฐเซ‡ เช›เซ‡. เชตเซƒเช•เซเชทเชจเชพ เชฆเชฐเซ‡เช• เชชเชพเช‚เชฆเชกเชพเชฎเชพเช‚ เช…เชจเซเชฐเซ‚เชช เช•เชพเชฐเซเชฏเชจเซเช‚ เชชเซ‹เช• เช•เชฐเซ‡เชฒ เชธเชฐเชจเชพเชฎเซเช‚ เชนเซ‹เชฏ เช›เซ‡. เช•เซ€ เชชเซ‡เชฐเซ‡เช‚เชŸ เชจเซ‹เชกเชฎเชพเช‚ เช›เซ‡. เช•เซ‹เชกเชฎเชพเช‚ เชคเซ‡ เชธเซเชฅเชพเชจ เชถเซ‹เชงเชตเซเช‚ เชœเซเชฏเชพเช‚ เช†เชชเชฃเชจเซ‡ เชœเชฐเซ‚เชฐเซ€ เชซเช‚เช•เซเชถเชจ เชตเซƒเช•เซเชทเชฎเชพเช‚ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‹ เชคเชฎเซ‡ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ เชคเชฎเชพเชฎ เชฌเช‚เชงเชพเชฐเชฃเซ‹เชจเซ‡ เชธเชฎเชœเซ‹ เช›เซ‹ เชคเซ‹ เชฎเซเชถเซเช•เซ‡เชฒ เชจเชฅเซ€ (เช…เชฎเซ‡ เชคเซ‡เชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเชคเชพ เชจเชฅเซ€ เชœเซ‡เชฅเซ€ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชฎเซ‹เชŸเชพ เชฒเซ‡เช–เชจเซ‡ เชซเซ‚เชฒเซ‡ เชจเชนเซ€เช‚).

เชตเชงเซ เช…เชธเซเชชเชทเซเชŸเชคเชพ

เช…เชฎเชจเซ‡ เชซเช‚เช•เซเชถเชจเชจเซเช‚ เชธเชฐเชจเชพเชฎเซเช‚ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซเช‚ เช›เซ‡ เชœเซ‡ เชŸเซเชฐเชพเชซเชฟเช•เชจเซ‡ เชกเชฟเช•เซเชฐเชฟเชชเซเชŸ เช•เชฐเซ‡ เช›เซ‡: 0x5F1AC. เชชเชฐเช‚เชคเซ เช†เชจเช‚เชฆ เช•เชฐเชตเซ‹ เช–เซ‚เชฌ เชœ เชตเชนเซ‡เชฒเซ‹ เช›เซ‡: UC เชฌเซเชฐเชพเช‰เชเชฐเชจเชพ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เช เช…เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชฌเซ€เชœเซเช‚ เช†เชถเซเชšเชฐเซเชฏ เชคเซˆเชฏเชพเชฐ เช•เชฐเซเชฏเซเช‚ เช›เซ‡.

เชœเชพเชตเชพ เช•เซ‹เชกเชฎเชพเช‚ เชฌเชจเซ‡เชฒเชพ เชเชฐเซ‡เชฎเชพเช‚เชฅเซ€ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซเชฏเชพ เชชเช›เซ€, เช…เชฎเชจเซ‡ เชฎเชณเซ‡ เช›เซ‡
เชเชกเซเชฐเซ‡เชธ 0x4D070 เชชเชฐ เชซเช‚เช•เซเชถเชจ เชฎเชพเชŸเซ‡. เช…เชจเซ‡ เช…เชนเซ€เช‚ เช…เชจเซเชฏ เชชเซเชฐเช•เชพเชฐเชจเซ‹ เช•เซ‹เชก เช…เชธเซเชชเชทเซเชŸเชคเชพ เช†เชชเชฃเซ€ เชฐเชพเชน เชœเซ‹เชˆ เชฐเชนเซ€ เช›เซ‡.

เช…เชฎเซ‡ R7 เช…เชจเซ‡ R4 เชฎเชพเช‚ เชฌเซ‡ เชธเซ‚เชšเช•เชพเช‚เช•เซ‹ เชฎเซ‚เช•เซ€เช เช›เซ€เช:

UC เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

เช…เชฎเซ‡ เชชเซเชฐเชฅเชฎ เช‡เชจเซเชกเซ‡เช•เซเชธเชจเซ‡ R11 เชชเชฐ เชถเชฟเชซเซเชŸ เช•เชฐเซ€เช เช›เซ€เช:

UC เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚เชฅเซ€ เชธเชฐเชจเชพเชฎเซเช‚ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡, เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹:

UC เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

เชชเซเชฐเชฅเชฎ เชธเชฐเชจเชพเชฎเชพเช‚ เชชเชฐ เช—เชฏเชพ เชชเช›เซ€, เชฌเซ€เชœเชพ เช‡เชจเซเชกเซ‡เช•เซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡, เชœเซ‡ R4 เชฎเชพเช‚ เช›เซ‡. เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ 230 เชคเชคเซเชตเซ‹ เช›เซ‡.

เชคเซ‡เชจเชพ เชตเชฟเชถเซ‡ เชถเซเช‚ เช•เชฐเชตเซเช‚? เชคเชฎเซ‡ IDA เชจเซ‡ เช•เชนเซ€ เชถเช•เซ‹ เช›เซ‹ เช•เซ‡ เช† เชเช• เชธเซเชตเซ€เชš เช›เซ‡: เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเซ‹ -> เช…เชจเซเชฏ -> เชธเซเชตเซ€เชš เชฐเซ‚เชขเชฟเชชเซเชฐเชฏเซ‹เช— เชธเซเชชเชทเซเชŸ เช•เชฐเซ‹.

UC เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

เชชเชฐเชฟเชฃเชพเชฎเซ€ เช•เซ‹เชก เชญเชฏเช‚เช•เชฐ เช›เซ‡. เชชเชฐเช‚เชคเซ, เชคเซ‡เชจเชพ เชœเช‚เช—เชฒเชฎเชพเช‚เชฅเซ€ เชคเชฎเชพเชฐเซ‹ เชฎเชพเชฐเซเช— เชฌเชจเชพเชตเชคเชพ, เชคเชฎเซ‡ เช…เชฎเชจเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชชเชฐเชฟเชšเชฟเชค เชซเช‚เช•เซเชถเชจ เชฎเชพเชŸเซ‡ เช•เซ‰เชฒ เชจเซ‹เชŸเชฟเชธ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ sub_6115C:

UC เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

เชคเซเชฏเชพเช‚ เชเช• เชธเซเชตเซ€เชš เชนเชคเซ€ เชœเซ‡เชฎเชพเช‚ เช•เซ‡เชธ 3 เชฎเชพเช‚ RC4 เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชกเชฟเช•เซเชฐเชฟเชชเซเชถเชจ เชนเชคเซเช‚. เช…เชจเซ‡ เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชซเช‚เช•เซเชถเชจเชฎเชพเช‚ เชชเชธเชพเชฐ เช•เชฐเชพเชฏเซ‡เชฒ เชฎเชพเชณเช–เซเช‚ เชชเชพเชธ เช•เชฐเซ‡เชฒเชพ เชชเชฐเชฟเชฎเชพเชฃเซ‹เชฎเชพเช‚เชฅเซ€ เชญเชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ doCommandNative. เชšเชพเชฒเซ‹ เชฏเชพเชฆ เช•เชฐเซ€เช เช•เซ‡ เช†เชชเชฃเซ‡ เชคเซเชฏเชพเช‚ เชถเซเช‚ เชนเชคเซเช‚ magicInt เชฎเซ‚เชฒเซเชฏ เชธเชพเชฅเซ‡ 16. เช…เชฎเซ‡ เช…เชจเซเชฐเซ‚เชช เช•เซ‡เชธ เชœเซ‹เชˆเช เช›เซ€เช - เช…เชจเซ‡ เช˜เชฃเชพ เชธเช‚เช•เซเชฐเชฎเชฃเซ‹ เชชเช›เซ€ เช…เชฎเชจเซ‡ เช•เซ‹เชก เชฎเชณเซ‡ เช›เซ‡ เชœเซ‡เชจเชพ เชฆเซเชตเชพเชฐเชพ เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎเชจเซ‡ เช“เชณเช–เซ€ เชถเช•เชพเชฏ เช›เซ‡.

UC เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

เช† AES เช›เซ‡!

เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เช›เซ‡, เชœเซ‡ เชฌเชพเช•เซ€ เช›เซ‡ เชคเซ‡ เชคเซ‡เชจเชพ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชฎเซ‡เชณเชตเชตเชพเชจเซเช‚ เช›เซ‡: เชฎเซ‹เชก, เช•เซ€ เช…เชจเซ‡, เชธเช‚เชญเชตเชคเชƒ, เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชตเซ‡เช•เซเชŸเชฐ (เชคเซ‡เชจเซ€ เชนเชพเชœเชฐเซ€ AES เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎเชจเชพ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชฎเซ‹เชก เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡). เชคเซ‡เชฎเชจเซ€ เชธเชพเชฅเซ‡เชจเซเช‚ เชฎเชพเชณเช–เซเช‚ เชซเช‚เช•เซเชถเชจ เช•เซ‰เชฒ เชชเชนเซ‡เชฒเชพเช‚ เช•เซเชฏเชพเช‚เช• เชฐเชšเชพเชฏเซ‡เชฒ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช sub_6115C, เชชเชฐเช‚เชคเซ เช•เซ‹เชกเชจเซ‹ เช† เชญเชพเช— เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เช…เชธเซเชชเชทเซเชŸ เช›เซ‡, เชคเซ‡เชฅเซ€ เช•เซ‹เชกเชจเซ‡ เชชเซ‡เชš เช•เชฐเชตเชพเชจเซ‹ เชตเชฟเชšเชพเชฐ เช†เชตเซ‡ เช›เซ‡ เชœเซ‡เชฅเซ€ เชกเชฟเช•เซเชฐเชฟเชชเซเชถเชจ เช•เชพเชฐเซเชฏเชจเชพ เชคเชฎเชพเชฎ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชซเชพเช‡เชฒเชฎเชพเช‚ เชกเชฎเซเชช เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡.

เชชเซ‡เชš

เชฌเชงเชพ เชชเซ‡เชš เช•เซ‹เชกเชจเซ‡ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชญเชพเชทเชพเชฎเชพเช‚ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชจ เชฒเช–เชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเซ‡ เชเชจเซเชกเซเชฐเซ‹เช‡เชก เชธเซเชŸเซเชกเชฟเชฏเซ‹ เชถเชฐเซ‚ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เชคเซเชฏเชพเช‚ เชเช• เชซเช‚เช•เซเชถเชจ เชฒเช–เซ€ เชถเช•เซ‹ เช›เซ‹ เชœเซ‡ เช…เชฎเชพเชฐเชพ เชกเชฟเช•เซเชฐเชฟเชชเซเชถเชจ เชซเช‚เช•เซเชถเชจ เชœเซ‡เชตเชพ เชœ เช‡เชจเชชเซเชŸ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชซเชพเช‡เชฒเชฎเชพเช‚ เชฒเช–เซ‡ เช›เซ‡, เชชเช›เซ€ เช•เชฎเซเชชเชพเช‡เชฒเชฐ เชœเซ‡ เช•เซ‹เชก เช•เชฐเชถเซ‡ เชคเซ‡เชจเซ‡ เช•เซ‹เชชเซ€-เชชเซ‡เชธเซเชŸ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชชเซ‡เชฆเชพ.

UC เชฌเซเชฐเชพเช‰เชเชฐ เชŸเซ€เชฎเชจเชพ เช…เชฎเชพเชฐเชพ เชฎเชฟเชคเซเชฐเซ‹เช เชชเชฃ เช•เซ‹เชก เช‰เชฎเซ‡เชฐเชตเชพเชจเซ€ เชธเซเชตเชฟเชงเชพเชจเซเช‚ เชงเซเชฏเชพเชจ เชฐเชพเช–เซเชฏเซเช‚. เชšเชพเชฒเซ‹ เช†เชชเชฃเซ‡ เชฏเชพเชฆ เชฐเชพเช–เซ€เช เช•เซ‡ เชฆเชฐเซ‡เช• เช•เชพเชฐเซเชฏเชจเซ€ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เช†เชชเชฃเซ€ เชชเชพเชธเซ‡ เช—เชพเชฐเซเชฌเซ‡เชœ เช•เซ‹เชก เชนเซ‹เชฏ เช›เซ‡ เชœเซ‡ เชธเชฐเชณเชคเชพเชฅเซ€ เช…เชจเซเชฏ เช•เซ‹เชˆเชชเชฃ เชธเชพเชฅเซ‡ เชฌเชฆเชฒเซ€ เชถเช•เชพเชฏ เช›เซ‡. เช–เซ‚เชฌ เช…เชจเซเช•เซ‚เชณ ๐Ÿ™‚ เชœเซ‹ เช•เซ‡, เชฒเช•เซเชทเซเชฏ เช•เชพเชฐเซเชฏเชจเซ€ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เช•เซ‹เชก เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซ€ เชœเช—เซเชฏเชพ เชจเชฅเซ€ เช•เซ‡ เชœเซ‡ เชซเชพเช‡เชฒเชฎเชพเช‚ เชคเชฎเชพเชฎ เชชเชฐเชฟเชฎเชพเชฃเซ‹เชจเซ‡ เชธเชพเชšเชตเซ‡ เช›เซ‡. เชฎเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เชญเชพเช—เซ‹เชฎเชพเช‚ เชตเชฟเชญเชพเชœเชฟเชค เช•เชฐเชตเซเช‚ เชชเชกเซเชฏเซเช‚ เช…เชจเซ‡ เชชเชกเซ‹เชถเซ€ เช•เชพเชฐเซเชฏเซ‹เชฎเชพเช‚เชฅเซ€ เช•เชšเชฐเชพเชจเชพ เชฌเซเชฒเซ‹เช•เซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชชเชกเซเชฏเซ‹. เช•เซเชฒ เชšเชพเชฐ เชญเชพเช—เซ‹ เชนเชคเชพ.

เชชเซเชฐเชฅเชฎ เชญเชพเช—:

UC เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

เชเช†เชฐเชเชฎ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชฎเชพเช‚, เชชเซเชฐเชฅเชฎ เชšเชพเชฐ เชซเช‚เช•เซเชถเชจ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชฐเชœเชฟเชธเซเชŸเชฐ R0-R3 เชฆเซเชตเชพเชฐเชพ เชชเชธเชพเชฐ เชฅเชพเชฏ เช›เซ‡, เชฌเชพเช•เซ€เชจเชพ, เชœเซ‹ เช•เซ‹เชˆ เชนเซ‹เชฏ เชคเซ‹, เชธเซเชŸเซ‡เช•เชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชพเชฏ เช›เซ‡. LR เชฐเชœเชฟเชธเซเชŸเชฐเชฎเชพเช‚ เชตเชณเชคเชฐเชจเซเช‚ เชธเชฐเชจเชพเชฎเซเช‚ เชนเซ‹เชฏ เช›เซ‡. เช† เชฌเชงเชพเชจเซ‡ เชธเชพเชšเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชœเซ‡เชฅเซ€ เช†เชชเชฃเซ‡ เชคเซ‡เชจเชพ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชกเชฎเซเชช เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชซเช‚เช•เซเชถเชจ เช•เชพเชฎ เช•เชฐเซ€ เชถเช•เซ‡. เช…เชฎเชพเชฐเซ‡ เชคเซ‡ เชฌเชงเชพ เชฐเชœเชฟเชธเซเชŸเชฐ เชธเชพเชšเชตเชตเชพเชจเซ€ เชชเชฃ เชœเชฐเซ‚เชฐ เช›เซ‡ เชœเซ‡เชจเซ‹ เช…เชฎเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚, เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ PUSH.W {R0-R10,LR} เช•เชฐเซ€เช เช›เซ€เช. R7 เชฎเชพเช‚ เช…เชฎเชจเซ‡ เชธเซเชŸเซ‡เช• เชฆเซเชตเชพเชฐเชพ เชซเช‚เช•เซเชถเชจเชฎเชพเช‚ เชชเชธเชพเชฐ เช•เชฐเชพเชฏเซ‡เชฒเชพ เชชเชฐเชฟเชฎเชพเชฃเซ‹เชจเซ€ เชธเซ‚เชšเชฟเชจเซเช‚ เชธเชฐเชจเชพเชฎเซเช‚ เชฎเชณเซ‡ เช›เซ‡.

เชซเช‚เช•เซเชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชซเซ‹เชชเซ‡เชจ เชšเชพเชฒเซ‹ เชซเชพเชˆเชฒ เช–เซ‹เชฒเซ€เช /data/local/tmp/aes "ab" เชฎเซ‹เชกเชฎเชพเช‚
เชเชŸเชฒเซ‡ เช•เซ‡ เช‰เชฎเซ‡เชฐเชพ เชฎเชพเชŸเซ‡. R0 เชฎเชพเช‚ เช†เชชเชฃเซ‡ เชซเชพเช‡เชฒเชจเชพ เชจเชพเชฎเชจเซเช‚ เชธเชฐเชจเชพเชฎเซเช‚ เชฒเซ‹เชก เช•เชฐเซ€เช เช›เซ€เช, R1 เชฎเชพเช‚ - เชฎเซ‹เชก เชธเซ‚เชšเชตเชคเซ€ เชฒเชพเช‡เชจเชจเซเช‚ เชธเชฐเชจเชพเชฎเซเช‚. เช…เชจเซ‡ เช…เชนเซ€เช‚ เช—เชพเชฐเซเชฌเซ‡เชœ เช•เซ‹เชก เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡, เชคเซ‡เชฅเซ€ เช†เชชเชฃเซ‡ เช†เช—เชณเชจเชพ เช•เชพเชฐเซเชฏ เชชเชฐ เช†เช—เชณ เชตเชงเซ€เช เช›เซ€เช. เชคเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซเช‚ เชšเชพเชฒเซ เชฐเชพเช–เชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เช•เชšเชฐเชพเชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเซ€เชจเซ‡, เชซเช‚เช•เซเชถเชจเชจเชพ เชตเชพเชธเซเชคเชตเชฟเช• เช•เซ‹เชกเชฎเชพเช‚ เชธเช‚เช•เซเชฐเชฎเชฃ เชฎเซ‚เช•เซ€เช เช›เซ€เช, เช…เชจเซ‡ เช•เชšเชฐเชพเชจเซ‡ เชฌเชฆเชฒเซ‡ เช…เชฎเซ‡ เชชเซ‡เชšเชจเซเช‚ เชธเชพเชคเชคเซเชฏ เช‰เชฎเซ‡เชฐเซ€เช เช›เซ€เช.

UC เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

เช•เซ‰เชฒเชฟเช‚เช— เชซเซ‹เชชเซ‡เชจ.

เชซเช‚เช•เซเชถเชจเชจเชพ เชชเซเชฐเชฅเชฎ เชคเซเชฐเชฃ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชเช‡เชเชธ เชชเซเชฐเช•เชพเชฐ เชงเชฐเชพเชตเซ‡ เช›เซ‡ เชชเซ‚เชฐเซเชฃเชพเช‚เช•. เช…เชฎเซ‡ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เชฐเชœเชฟเชธเซเชŸเชฐเชจเซ‡ เชธเซเชŸเซ‡เช•เชฎเชพเช‚ เชธเชพเชšเชตเซเชฏเชพ เชนเซ‹เชตเชพเชฅเซ€, เช…เชฎเซ‡ เชซเช‚เช•เซเชถเชจเชจเซ‡ เชธเชฐเชณ เชฐเซ€เชคเซ‡ เชชเชพเชธ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช เชฒเช–เชตเซเช‚ เชธเซเชŸเซ‡เช• เชชเชฐ เชคเซ‡เชฎเชจเชพ เชธเชฐเชจเชพเชฎเชพเช‚.

UC เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

เช†เช—เชณ เช†เชชเชฃเซ€ เชชเชพเชธเซ‡ เชคเซเชฐเชฃ เชธเซเชŸเซเชฐเช•เซเชšเชฐเซเชธ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เชกเซ‡เชŸเชพเชจเซเช‚ เช•เชฆ เช…เชจเซ‡ เช•เซ€, เช‡เชจเชฟเชถเชฟเชฏเชฒเชพเช‡เชเซ‡เชถเชจ เชตเซ‡เช•เซเชŸเชฐ เช…เชจเซ‡ เชเชจเช•เซเชฐเชฟเชชเซเชŸเซ‡เชก เชกเซ‡เชŸเชพ เชฎเชพเชŸเซ‡เชจเชพ เชกเซ‡เชŸเชพ เชฎเชพเชŸเซ‡ เชชเซ‹เช‡เชจเซเชŸเชฐ เช›เซ‡.

UC เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

เช…เช‚เชคเซ‡, เชซเชพเช‡เชฒ เชฌเช‚เชง เช•เชฐเซ‹, เชฐเชœเชฟเชธเซเชŸเชฐ เชชเซเชจเชƒเชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ‹ เช…เชจเซ‡ เชตเชพเชธเซเชคเชตเชฟเช• เช•เชพเชฐเซเชฏ เชชเชฐ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเซ‹ เชเช‡เชเชธ.

เช…เชฎเซ‡ เชชเซ‡เชš เช•เชฐเซ‡เชฒเซ€ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชธเชพเชฅเซ‡ เชเช• APK เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€เช เช›เซ€เช, เชคเซ‡เชจเชพ เชชเชฐ เชธเชนเซ€ เช•เชฐเซ€เช เช›เซ€เช, เชคเซ‡เชจเซ‡ เช‰เชชเช•เชฐเชฃ/เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐ เชชเชฐ เช…เชชเชฒเซ‹เชก เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชฒเซ‰เชจเซเชš เช•เชฐเซ€เช เช›เซ€เช. เช†เชชเชฃเซ‡ เชœเซ‹เชˆเช เช›เซ€เช เช•เซ‡ เช…เชฎเชพเชฐเซ‹ เชกเชฎเซเชช เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชฐเชนเซเชฏเซ‹ เช›เซ‡, เช…เชจเซ‡ เชคเซเชฏเชพเช‚ เช˜เชฃเซ‹ เชกเซ‡เชŸเชพ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชฐเชนเซเชฏเซ‹ เช›เซ‡. เชฌเซเชฐเชพเช‰เชเชฐ เชฎเชพเชคเซเชฐ เชŸเซเชฐเชพเชซเชฟเช• เชฎเชพเชŸเซ‡ เชœ เชเชจเซเช•เซเชฐเชฟเชชเซเชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชคเชฎเชพเชฎ เชเชจเซเช•เซเชฐเชฟเชชเซเชถเชจ เชชเซเชฐเชถเซเชจเชฎเชพเช‚ เชฐเชนเซ‡เชฒเชพ เช•เชพเชฐเซเชฏเชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชพเชฏ เช›เซ‡. เชชเชฐเช‚เชคเซ เช•เซ‡เชŸเชฒเชพเช• เช•เชพเชฐเชฃเซ‹เชธเชฐ เชœเชฐเซ‚เชฐเซ€ เชกเซ‡เชŸเชพ เชคเซเชฏเชพเช‚ เชจเชฅเซ€, เช…เชจเซ‡ เชœเชฐเซ‚เชฐเซ€ เชตเชฟเชจเช‚เชคเซ€ เชŸเซเชฐเชพเชซเชฟเช•เชฎเชพเช‚ เชฆเซ‡เช–เชพเชคเซ€ เชจเชฅเซ€. UC เชฌเซเชฐเชพเช‰เชเชฐ เชœเชฐเซ‚เชฐเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เชจ เชฅเชพเชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เชฐเชพเชน เชจ เชœเซ‹เชตเชพ เชฎเชพเชŸเซ‡, เชšเชพเชฒเซ‹ เช…เช—เชพเช‰ เชฎเชณเซ‡เชฒเชพ เชธเชฐเซเชตเชฐเชฎเชพเช‚เชฅเซ€ เชเชจเซเช•เซเชฐเชฟเชชเซเชŸเซ‡เชก เชชเซเชฐเชคเชฟเชธเชพเชฆ เชฒเชˆเช เช…เชจเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชชเซ‡เชš เช•เชฐเซ€เช: เชฎเซเช–เซเชฏ เชชเซเชฐเชตเซƒเชคเซเชคเชฟเชจเชพ 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 เชชเซเชฐเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชชเชฆเซเชงเชคเชฟ เชจเชฒ เชชเชพเช›เซ€ เช†เชชเซ‡ เช›เซ‡.

เช•เซ‹เชกเชจเชพ เชตเชงเซ เชชเซƒเชฅเซเชฅเช•เชฐเชฃ เชฆเชฐเชฎเชฟเชฏเชพเชจ, เชเช• เชซเช‚เช•เซเชถเชจ เชฎเชณเซ€ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚ เชœเซ‡ เชฐเชธเชชเซเชฐเชฆ เชฐเซ‡เช–เชพเช“เชจเซ‡ เชธเชฎเชœเชพเชตเซ‡ เช›เซ‡: โ€œMETA-INF/โ€ เช…เชจเซ‡ โ€œ.RSAโ€. เชเชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชคเซ‡เชจเชพ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเชจเซ€ เชšเช•เชพเชธเชฃเซ€ เช•เชฐเซ€ เชฐเชนเซ€ เช›เซ‡. เช…เชฅเชตเชพ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชšเชพเชตเซ€เช“ เชชเชฃ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡. เชนเซเช‚ เช–เชฐเซ‡เช–เชฐ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชธเชพเชฅเซ‡ เชถเซเช‚ เชฅเชˆ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชตเซเชฏเชตเชนเชพเชฐ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเซ‹ เชจเชฅเซ€, เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เชซเช•เซเชค เชคเซ‡เชจเซ‡ เชฏเซ‹เช—เซเชฏ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เช†เชชเซ€เชถเซเช‚. เชšเชพเชฒเซ‹ เชเชจเซเช•เซเชฐเชฟเชชเซเชŸเซ‡เชก เชฒเชพเช‡เชจเชจเซ‡ เชชเซ‡เชš เช•เชฐเซ€เช เชœเซ‡เชฅเซ€ โ€œMETA-INF/โ€ เชจเซ‡ เชฌเชฆเชฒเซ‡ เช†เชชเชฃเชจเซ‡ โ€œBLABLINF/โ€ เชฎเชณเซ‡, เชเชชเซ€เช•เซ‡เชฎเชพเช‚ เชคเซ‡ เชจเชพเชฎเชจเซเช‚ เชซเซ‹เชฒเซเชกเชฐ เชฌเชจเชพเชตเซ‹ เช…เชจเซ‡ เชคเซเชฏเชพเช‚ เช–เชฟเชธเช•เซ‹เชฒเซ€ เชฌเซเชฐเชพเช‰เชเชฐ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เช‰เชฎเซ‡เชฐเซ‹.

เช…เชฎเซ‡ เชเชธเซ‡เชฎเซเชฌเชฒ, เชธเชพเช‡เชจ, เช‡เชจเซเชธเซเชŸเซ‹เชฒ, เชฒเซ‹เชจเซเชš. เชฌเชฟเชจเซเช—เซ‹! เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชšเชพเชตเซ€ เช›เซ‡!

MitM

เช…เชฎเชจเซ‡ เช•เซ€เชจเซ€ เชธเชฎเชพเชจ เช•เซ€ เช…เชจเซ‡ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชตเซ‡เช•เซเชŸเชฐ เชฎเชณเซเชฏเซ‹. เชšเชพเชฒเซ‹ CBC เชฎเซ‹เชกเชฎเชพเช‚ เชธเชฐเซเชตเชฐ เชชเซเชฐเชคเชฟเชธเชพเชฆเชจเซ‡ เชกเชฟเช•เซเชฐเชฟเชชเซเชŸ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เช.

UC เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

เช…เชฎเซ‡ เช†เชฐเซเช•เชพเช‡เชต URL, MD5 เชœเซ‡เชตเซเช‚ เชœ เช•เช‚เชˆเช•, โ€œextract_unzipsizeโ€ เช…เชจเซ‡ เชธเช‚เช–เซเชฏเชพ เชœเซ‹เชˆเช เช›เซ€เช. เช…เชฎเซ‡ เชคเชชเชพเชธเซ€เช เช›เซ€เช: เช†เชฐเซเช•เชพเช‡เชตเชจเซเช‚ MD5 เชธเชฎเชพเชจ เช›เซ‡, เช…เชจเชชเซ‡เช•เซเชก เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซเช‚ เช•เชฆ เชธเชฎเชพเชจ เช›เซ‡. เช…เชฎเซ‡ เช† เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซ‡ เชชเซ‡เชš เช•เชฐเซ€เชจเซ‡ เชฌเซเชฐเชพเช‰เชเชฐเชจเซ‡ เช†เชชเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช. เช…เชฎเชพเชฐเซ€ เชชเซ‡เชš เช•เชฐเซ‡เชฒเซ€ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชฒเซ‹เชก เชฅเชˆ เช—เชˆ เช›เซ‡ เชคเซ‡ เชฌเชคเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ "PWNED!" เชฒเช–เชพเชฃ เชธเชพเชฅเซ‡ SMS เชฌเชจเชพเชตเชตเชพเชจเซ‹ เช‰เชฆเซเชฆเซ‡เชถ เชฒเซ‰เชจเซเชš เช•เชฐเซ€เชถเซเช‚. เช…เชฎเซ‡ เชธเชฐเซเชตเชฐเชฎเชพเช‚เชฅเซ€ เชฌเซ‡ เชชเซเชฐเชคเชฟเชธเชพเชฆเซ‹เชจเซ‡ เชฌเชฆเชฒเซ€เชถเซเช‚: puds.ucweb.com/upgrade/index.xhtml เช…เชจเซ‡ เช†เชฐเซเช•เชพเช‡เชต เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡. เชชเซเชฐเชฅเชฎ เช…เชฎเซ‡ MD5 เชจเซ‡ เชฌเชฆเชฒเซ€เช เช›เซ€เช (เช…เชจเชชเซ…เช• เช•เชฐเซเชฏเชพ เชชเช›เซ€ เช•เชฆ เชฌเชฆเชฒเชพเชคเซเช‚ เชจเชฅเซ€), เชฌเซ€เชœเชพเชฎเชพเช‚ เช…เชฎเซ‡ เชชเซ‡เชš เช•เชฐเซ‡เชฒเซ€ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชธเชพเชฅเซ‡ เช†เชฐเซเช•เชพเช‡เชต เช†เชชเซ€เช เช›เซ€เช.

เชฌเซเชฐเชพเช‰เชเชฐ เช†เชฐเซเช•เชพเช‡เชตเชจเซ‡ เช˜เชฃเซ€ เชตเช–เชค เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‡ เชชเช›เซ€ เชคเซ‡ เชญเซ‚เชฒ เช†เชชเซ‡ เช›เซ‡. เชฆเซ‡เช–เซ€เชคเซ€ เชฐเซ€เชคเซ‡ เช•เช‚เชˆเช•
เชคเซ‡เชจเซ‡ เชชเชธเช‚เชฆ เชจเชฅเซ€. เช† เช…เชธเซเชชเชทเซเชŸ เชซเซ‹เชฐเซเชฎเซ‡เชŸเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชตเชพเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เช•เซ‡ เชธเชฐเซเชตเชฐ เช†เชฐเซเช•เชพเช‡เชตเชจเชพ เช•เชฆเชจเซ‡ เชชเชฃ เชชเซเชฐเชธเชพเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡:

UC เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

เชคเซ‡ LEB128 เชฎเชพเช‚ เชเชจเซเช•เซ‹เชกเซ‡เชก เช›เซ‡. เชชเซ‡เชš เชชเช›เซ€, เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชธเชพเชฅเซ‡เชจเชพ เช†เชฐเซเช•เชพเช‡เชตเชจเซเช‚ เช•เชฆ เชฅเซ‹เชกเซเช‚ เชฌเชฆเชฒเชพเชˆ เช—เชฏเซเช‚, เชคเซ‡เชฅเซ€ เชฌเซเชฐเชพเช‰เชเชฐ เชฎเชพเชจเซเชฏเซเช‚ เช•เซ‡ เช†เชฐเซเช•เชพเช‡เชต เช•เซเชŸเชฟเชฒ เชฐเซ€เชคเซ‡ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚, เช…เชจเซ‡ เช˜เชฃเชพ เชชเซเชฐเชฏเชคเซเชจเซ‹ เชชเช›เซ€ เชคเซ‡เชฎเชพเช‚ เชญเซ‚เชฒ เชฅเชˆ.

เช…เชฎเซ‡ เช†เชฐเซเช•เชพเช‡เชตเชจเชพ เช•เชฆเชจเซ‡ เชธเชฎเชพเชฏเซ‹เชœเชฟเชค เช•เชฐเซ€เช เช›เซ€เช... เช…เชจเซ‡ - เชตเชฟเชœเชฏ! ๐Ÿ™‚ เชชเชฐเชฟเชฃเชพเชฎ เชตเชฟเชกเชฟเช“เชฎเชพเช‚ เช›เซ‡.

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

เชชเชฐเชฟเชฃเชพเชฎเซ‹ เช…เชจเซ‡ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพ เชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ

เช เชœ เชฐเซ€เชคเซ‡, เชนเซ‡เช•เชฐเซเชธ เชฆเซ‚เชทเชฟเชค เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹เชจเซ‡ เชตเชฟเชคเชฐเชฟเชค เช•เชฐเชตเชพ เช…เชจเซ‡ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ UC เชฌเซเชฐเชพเช‰เชเชฐเชจเซ€ เช…เชธเซเชฐเช•เซเชทเชฟเชค เชธเซเชตเชฟเชงเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เช† เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“ เชฌเซเชฐเชพเช‰เชเชฐเชจเชพ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚ เช•เชพเชฎ เช•เชฐเชถเซ‡, เชœเซ‡เชฅเซ€ เชคเซ‡เช“ เชคเซ‡เชจเซ€ เชคเชฎเชพเชฎ เชธเชฟเชธเซเชŸเชฎ เชชเชฐเชตเชพเชจเช—เซ€เช“ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชถเซ‡. เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชซเชฟเชถเซ€เช‚เช— เชตเชฟเชจเซเชกเซ‹ เชฆเชฐเซเชถเชพเชตเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ, เชคเซ‡เชฎเชœ เชจเชพเชฐเช‚เช—เซ€ เชšเชพเชˆเชจเซ€เช เช–เชฟเชธเช•เซ‹เชฒเซ€เชจเซ€ เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เชซเชพเชˆเชฒเซ‹เชจเซ€ เชเช•เซเชธเซ‡เชธ, เชœเซ‡เชฎเชพเช‚ เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เชฒเซ‹เช—เชฟเชจ, เชชเชพเชธเชตเชฐเซเชกเซเชธ เช…เชจเซ‡ เช•เซ‚เช•เซ€เชเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡.

เช…เชฎเซ‡ UC เชฌเซเชฐเชพเช‰เชเชฐเชจเชพ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เชจเซ‹ เชธเช‚เชชเชฐเซเช• เช•เชฐเซเชฏเซ‹ เช…เชจเซ‡ เช…เชฎเชจเซ‡ เชฎเชณเซ‡เชฒเซ€ เชธเชฎเชธเซเชฏเชพ เชตเชฟเชถเซ‡ เชคเซ‡เชฎเชจเซ‡ เชœเชพเชฃ เช•เชฐเซ€, เชจเชฌเชณเชพเชˆ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชœเซ‹เช–เชฎเชจเซ‡ เชฆเชฐเซเชถเชพเชตเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹, เชชเชฐเช‚เชคเซ เชคเซ‡เช“เช เช…เชฎเชพเชฐเซ€ เชธเชพเชฅเซ‡ เช•เซ‹เชˆ เชšเชฐเซเชšเชพ เช•เชฐเซ€ เชจเชนเซ€เช‚. เชฆเชฐเชฎเชฟเชฏเชพเชจ, เชฌเซเชฐเชพเช‰เชเชฐ เชคเซ‡เชจเซ€ เช–เชคเชฐเชจเชพเช• เชธเซเชตเชฟเชงเชพเชจเซ‡ เชธเชพเชฆเซ€ เชฆเซƒเชทเซเชŸเชฟเช เชฆเชฐเซเชถเชพเชตเชตเชพเชจเซเช‚ เชšเชพเชฒเซ เชฐเชพเช–เซเชฏเซเช‚. เชชเชฐเช‚เชคเซ เชเช•เชตเชพเชฐ เช…เชฎเซ‡ เชจเชฌเชณเชพเชˆเชจเซ€ เชตเชฟเช—เชคเซ‹ เชœเชพเชนเซ‡เชฐ เช•เชฐเซ€ เชฆเซ€เชงเซ€, เชนเชตเซ‡ เชชเชนเซ‡เชฒเชพเชจเซ€ เชœเซ‡เชฎ เชคเซ‡เชจเซ‡ เช…เชตเช—เชฃเชตเซเช‚ เชถเช•เซเชฏ เชจเชนเซ‹เชคเซเช‚. 27 เชฎเชพเชฐเซเชš เชนเชคเซ€
UC เชฌเซเชฐเชพเช‰เชเชฐ 12.10.9.1193 เชจเซเช‚ เชจเชตเซเช‚ เชธเช‚เชธเซเช•เชฐเชฃ เชฌเชนเชพเชฐ เชชเชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚, เชœเซ‡เชฃเซ‡ HTTPS เชฆเซเชตเชพเชฐเชพ เชธเชฐเซเชตเชฐเชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเซเชฏเซเช‚ เชนเชคเซเช‚: puds.ucweb.com/upgrade/index.xhtml.

เชตเชงเซเชฎเชพเช‚, "เชซเชฟเช•เซเชธ" เชชเช›เซ€ เช…เชจเซ‡ เช† เชฒเซ‡เช– เชฒเช–เชตเชพเชจเชพ เชธเชฎเชฏ เชธเซเชงเซ€, เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชชเซ€เชกเซ€เชเชซ เช–เซ‹เชฒเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชตเชพเชฅเซ€ "เช…เชฐเซ‡เชฐเซ‡, เช•เช‚เชˆเช• เช–เซ‹เชŸเซเช‚ เชฅเชฏเซเช‚!" เชฒเช–เชพเชฃ เชธเชพเชฅเซ‡เชจเซ‹ เชเช• เชญเซ‚เชฒ เชธเช‚เชฆเซ‡เชถ เช†เชตเซเชฏเซ‹. เชชเซ€เชกเซ€เชเชซ เช–เซ‹เชฒเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชธเชฐเซเชตเชฐเชจเซ‡ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชจ เชนเชคเซ€, เชชเชฐเช‚เชคเซ เชœเซเชฏเชพเชฐเซ‡ เชฌเซเชฐเชพเช‰เชเชฐ เชฒเซ‹เช‚เชš เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชคเซเชฏเชพเชฐเซ‡ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€, เชœเซ‡ Google Play เชจเชฟเชฏเชฎเซ‹เชจเชพ เช‰เชฒเซเชฒเช‚เช˜เชจเชฎเชพเช‚ เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ เช•เซ‹เชก เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพเชจเซ€ เชธเชคเชค เช•เซเชทเชฎเชคเชพเชจเซ‹ เชธเช‚เช•เซ‡เชค เช†เชชเซ‡ เช›เซ‡.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹