UC เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจญเจพเจฒ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ

UC เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจญเจพเจฒ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ

เจœเจพเจฃ เจชเจ›เจพเจฃ

เจฎเจพเจฐเจš เจฆเฉ‡ เจ…เฉฐเจค เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจฐเจฟเจชเฉ‹เจฐเจŸ เจ•เฉ€เจคเฉ€, เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจจเฉ‡ UC เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจ…เจฃ-เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจฒเฉ‹เจก เจ•เจฐเจจ เจ…เจคเฉ‡ เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจ‡เฉฑเจ• เจ›เฉเจชเฉ€ เจฏเฉ‹เจ—เจคเจพ เจฒเฉฑเจญเฉ€ เจนเฉˆเฅค เจ…เฉฑเจœ เจ…เจธเฉ€เจ‚ เจตเจฟเจธเจฅเจพเจฐ เจจเจพเจฒ เจฆเฉ‡เจ–เจพเจ‚เจ—เฉ‡ เจ•เจฟ เจ‡เจน เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฟเจตเฉ‡เจ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจนเฉˆเจ•เจฐ เจ‡เจธ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ‰เจฆเฉ‡เจธเจผเจพเจ‚ เจฒเจˆ เจ•เจฟเจตเฉ‡เจ‚ เจตเจฐเจค เจธเจ•เจฆเฉ‡ เจนเจจเฅค

เจ•เฉเจ เจธเจฎเจพเจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจฏเฉ‚เจธเฉ€ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจฆเฉ€ เจฎเจธเจผเจนเฉ‚เจฐเฉ€ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจธเฉ€ เจ…เจคเฉ‡ เจฌเจนเฉเจค เจนเจฎเจฒเจพเจตเจฐ เจขเฉฐเจ— เจจเจพเจฒ เจตเฉฐเจกเจฟเจ† เจ—เจฟเจ† เจธเฉ€: เจ‡เจน เจฎเจพเจฒเจตเฉ‡เจ…เจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฆเฉ‡ เจกเจฟเจตเจพเจˆเจธเจพเจ‚ 'เจคเฉ‡ เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€, เจตเจฟเจกเฉ€เจ“ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจ†เฉœ เจตเจฟเฉฑเจš เจตเฉฑเจ–-เจตเฉฑเจ– เจธเจพเจˆเจŸเจพเจ‚ เจคเฉ‹เจ‚ เจตเฉฐเจกเจฟเจ† เจ—เจฟเจ† เจธเฉ€ (เจ…เจฐเจฅเจพเจค, เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจธเฉ‹เจšเจฆเฉ‡ เจธเจจ เจ•เจฟ เจ‰เจน เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐ เจฐเจนเฉ‡ เจนเจจ, เจ‰เจฆเจพเจนเจฐเจฃ เจฒเจˆ, เจ‡เฉฑเจ• เจชเฉ‹เจฐเจจ เจตเฉ€เจกเฉ€เจ“, เจชเจฐ เจ‡เจธ เจฆเฉ€ เจฌเจœเจพเจ เจ‡เจธ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจจเจพเจฒ เจ‡เฉฑเจ• เจเจชเฉ€เจ•เฉ‡ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ), เจธเฉเจจเฉ‡เจนเจฟเจ†เจ‚ เจฆเฉ‡ เจจเจพเจฒ เจกเจฐเจพเจ‰เจฃเฉ‡ เจฌเฉˆเจจเจฐ เจตเจฐเจคเฉ‡ เจ•เจฟ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจชเฉเจฐเจพเจฃเจพ, เจ•เจฎเจœเจผเฉ‹เจฐ, เจ…เจคเฉ‡ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจšเฉ€เจœเจผเจพเจ‚ เจธเจจเฅค VK 'เจคเฉ‡ เจ…เจงเจฟเจ•เจพเจฐเจค UC เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจธเจฎเฉ‚เจน เจตเจฟเฉฑเจš เจนเฉˆ เจฅเฉ€เจฎ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ…เจจเฉเจšเจฟเจค เจ‡เจธเจผเจคเจฟเจนเจพเจฐเจฌเจพเจœเจผเฉ€ เจฌเจพเจฐเฉ‡ เจธเจผเจฟเจ•เจพเจ‡เจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจจ, เจ‰เฉฑเจฅเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจนเจจเฅค 2016 เจตเจฟเฉฑเจš เจตเฉ€ เจธเฉ€ เจตเฉ€เจกเฉ€เจ“ เจตเจฟเจ—เจฟเจ†เจชเจจ เจฐเฉ‚เจธเฉ€ เจตเจฟเฉฑเจš (เจนเจพเจ‚, เจ‡เฉฑเจ• เจตเจฟเจ—เจฟเจ†เจชเจจ-เจฌเจฒเฉŒเจ• เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจฒเจˆ เจตเจฟเจ—เจฟเจ†เจชเจจ)เฅค

เจฒเจฟเจ–เจฃ เจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจฏเฉ‚เจธเฉ€ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจ•เฉ‹เจฒ เจ—เฉ‚เจ—เจฒ เจชเจฒเฉ‡ 'เจคเฉ‡ 500 เจคเฉ‹เจ‚ เจตเฉฑเจง เจธเจฅเจพเจชเจจเจพเจตเจพเจ‚ เจนเจจเฅค เจ‡เจน เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ€ เจนเฉˆ - เจธเจฟเจฐเจซเจผ Google Chrome เจตเจฟเฉฑเจš เจนเฉ‹เจฐ เจนเฉˆเฅค เจธเจฎเฉ€เจ–เจฟเจ†เจตเจพเจ‚ เจตเจฟเฉฑเจš เจคเฉเจธเฉ€เจ‚ เจ—เฉ‚เจ—เจฒ เจชเจฒเฉ‡ 'เจคเฉ‡ เจ•เฉเจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฒเจˆ เจตเจฟเจ—เจฟเจ†เจชเจจ เจ…เจคเฉ‡ เจฐเฉ€เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจธ เจฌเจพเจฐเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจธเจผเจฟเจ•เจพเจ‡เจคเจพเจ‚ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ‡เจน เจธเจพเจกเฉ€ เจ–เฉ‹เจœ เจฆเจพ เจ•เจพเจฐเจจ เจธเฉ€: เจ…เจธเฉ€เจ‚ เจ‡เจน เจฆเฉ‡เจ–เจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจ•เจฟ เจ•เฉ€ 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" />

เจœเจฆเฉ‹เจ‚ เจ‡เจน เจธเฉ‡เจตเจพ เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจชเฉ‹เจธเจŸ เจ•เจฐเจจ เจฒเจˆ เจฌเฉ‡เจจเจคเฉ€ เจ•เจฐเจฆเจพ เจนเฉˆ puds.ucweb.com/upgrade/index.xhtml, เจœเฉ‹ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจ•เฉเจ เจธเจฎเฉ‡เจ‚ เจฌเจพเจ…เจฆ เจŸเฉเจฐเฉˆเจซเจฟเจ• เจตเจฟเฉฑเจš เจฆเฉ‡เจ–เฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจœเจตเจพเจฌ เจตเจฟเฉฑเจš, เจ‰เจธเจจเฉ‚เฉฐ เจ•เฉเจ เจ…เฉฑเจชเจกเฉ‡เจŸ เจœเจพเจ‚ เจจเจตเจพเจ‚ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจ•เจฎเจพเจ‚เจก เจชเฉเจฐเจพเจชเจค เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ, เจธเจฐเจตเจฐ เจจเฉ‡ เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจจเจนเฉ€เจ‚ เจฆเจฟเฉฑเจคเฉ€เจ†เจ‚, เจชเจฐ เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ–เจฟเจ† เจ•เจฟ เจœเจฆเฉ‹เจ‚ เจ…เจธเฉ€เจ‚ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• PDF เจ–เฉ‹เจฒเฉเจนเจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจคเจพเจ‚ เจ‡เจน เจ‰เฉฑเจชเจฐ เจฆเฉฑเจธเฉ‡ เจชเจคเฉ‡ 'เจคเฉ‡ เจฆเฉ‚เจœเฉ€ เจฌเฉ‡เจจเจคเฉ€ เจ•เจฐเจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ‡เจน เจจเฉ‡เจŸเจฟเจต เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจนเจฎเจฒเฉ‡ เจจเฉ‚เฉฐ เจ…เฉฐเจœเจพเจฎ เจฆเฉ‡เจฃ เจฒเจˆ, เจ…เจธเฉ€เจ‚ UC เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจฆเฉ€ เจ‡เจธ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ: เจ‡เฉฑเจ• เจฎเฉ‚เจฒ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ PDF เจ–เฉ‹เจฒเฉเจนเจฃ เจฆเฉ€ เจธเจฎเจฐเฉฑเจฅเจพ, เจœเฉ‹ เจ•เจฟ เจเจชเฉ€เจ•เฉ‡ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจนเฉˆ เจ…เจคเฉ‡ เจœเฉ‡ เจฒเฉ‹เฉœ เจชเฉˆเจฃ 'เจคเฉ‡ เจ‡เจน เจ‡เฉฐเจŸเจฐเจจเฉˆเจŸ เจคเฉ‹เจ‚ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เจน เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฏเฉ‹เจ— เจนเฉˆ เจ•เจฟ, เจธเจฟเจงเจพเจ‚เจคเจ• เจคเฉŒเจฐ 'เจคเฉ‡, เจฏเฉ‚เจธเฉ€ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจจเฉ‚เฉฐ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉ€ เจ†เจชเจธเฉ€ เจคเจพเจฒเจฎเฉ‡เจฒ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจ•เฉเจ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจ เจฒเจˆ เจฎเจœเจฌเฉ‚เจฐ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ - เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจฆเฉ‡ เจฒเจพเจ‚เจš เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจฌเฉ‡เจจเจคเฉ€ เจฒเจˆ เจšเฉฐเจ—เฉ€ เจคเจฐเฉเจนเจพเจ‚ เจคเจฟเจ†เจฐ เจœเจตเจพเจฌ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เฅค เจชเจฐ เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจธเจพเจจเฉ‚เฉฐ เจธเจฐเจตเจฐ เจจเจพเจฒ เจ—เฉฑเจฒเจฌเจพเจค เจฆเฉ‡ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจฆเจพ เจตเจงเฉ‡เจฐเฉ‡ เจตเจฟเจธเจฅเจพเจฐ เจจเจพเจฒ เจ…เจงเจฟเจเจจ เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจนเฉˆ เจ•เจฟ เจชเฉ€เจกเฉ€เจเจซ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฐเจŸเจฐเจธเฉˆเจชเจŸเจก เจœเจตเจพเจฌ เจจเฉ‚เฉฐ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃเจพ เจ†เจธเจพเจจ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค

เจ‡เจธ เจฒเจˆ, เจœเจฆเฉ‹เจ‚ เจ•เฉ‹เจˆ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจธเจฟเฉฑเจงเฉ‡ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• PDF เจ–เฉ‹เจฒเฉเจนเจฃเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€เจ†เจ‚ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจŸเฉเจฐเฉˆเจซเจฟเจ• เจตเจฟเฉฑเจš เจฆเฉ‡เจ–เจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ:

UC เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจญเจพเจฒ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ

เจชเจนเจฟเจฒเจพเจ‚ เจ‡เฉฑเจ• POST เจฌเฉ‡เจจเจคเฉ€ เจนเฉˆ puds.ucweb.com/upgrade/index.xhtmlเจœเจฟเจธ เจฆเฉ‡ เจฌเจพเจ…เจฆ
PDF เจ…เจคเฉ‡ เจฆเจซเจผเจคเจฐ เจซเจพเจฐเจฎเฉˆเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจตเจพเจฒเจพ เจ‡เฉฑเจ• เจ†เจฐเจ•เจพเจˆเจต เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจ‡เจน เจฎเฉฐเจจเจฃเจพ เจฒเจพเจœเจผเฉ€เจ•เจฒ เจนเฉˆ เจ•เจฟ เจชเจนเจฟเจฒเฉ€ เจฌเฉ‡เจจเจคเฉ€ เจธเจฟเจธเจŸเจฎ (เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจ เจฒเจˆ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ) เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจœเจตเจพเจฌ เจตเจฟเฉฑเจš เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจจเฉ‚เฉฐ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฌเจพเจฐเฉ‡ เจ•เฉเจ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉเจฐเจพเจชเจค เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจœเจฟเจธ เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ: เจชเจคเจพ เจ…เจคเฉ‡, เจธเฉฐเจญเจต เจคเฉŒเจฐ 'เจคเฉ‡ , เจ•เฉเจ เจนเฉ‹เจฐ. เจธเจฎเฉฑเจธเจฟเจ† เจ‡เจน เจนเฉˆ เจ•เจฟ เจ‡เจน เจฌเฉ‡เจจเจคเฉ€ เจเจจเจ•เฉเจฐเจฟเจชเจŸ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆเฅค

เจŸเฉเจ•เฉœเฉ‡ เจฆเฉ€ เจฌเฉ‡เจจเจคเฉ€ เจ•เจฐเฉ‹

เจœเจตเจพเจฌ เจŸเฉเจ•เฉœเจพ

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โ€, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ), เจ‡เฉฑเจฅเฉ‡ เจ‡เฉฑเจ• เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจฌเฉเจฒเจพเจ‡เจ† เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจœเฉ‹ เจธเจฐเจตเจฐ เจฆเฉ‡ เจœเจตเจพเจฌ เจจเฉ‚เฉฐ เจกเฉ€เจ•เฉเจฐเจฟเจชเจŸ เจ•เจฐเฉ‡เจ—เจพเฅค
เจ†เจ“ เจตเจฟเจงเฉ€ เจตเฉฑเจฒ เจตเจงเฉ€เจ เจœเฉ€เจœเฉ‡. เจจเฉ‹เจŸ เจ•เจฐเฉ‹ เจ•เจฟ เจชเจนเจฟเจฒเจพ เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจ”เจซเจธเฉˆเฉฑเจŸ 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, เจœเฉ‹ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• .so เจจเจนเฉ€เจ‚ เจนเฉˆ, เจชเจฐ เจ‡เฉฑเจ• .jar เจนเฉˆเฅค เจ‰เจน เจตเจฟเจงเฉ€ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฐเฉฑเจ–เจฆเฉ‡ เจนเจพเจ‚, เจนเฉ‡เจ  เจฒเจฟเจ–เฉ‡ เจ…เจจเฉเจธเจพเจฐ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ:

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

เจ‡เฉฑเจฅเฉ‡ เจธเจพเจกเฉ‡ เจฎเจพเจชเจฆเฉฐเจกเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจฆเฉ‹ เจนเฉ‹เจฐ เจชเฉ‚เจฐเจจ เจ…เฉฐเจ•เจพเจ‚ เจจเจพเจฒ เจชเฉ‚เจฐเจ• เจนเฉˆ: 2 เจ…เจคเฉ‡ 0. เจฆเฉเจ†เจฐเจพ เจจเจฟเจฐเจฃเจพ
เจธเจญ เจ•เฉเจ, 2 เจฆเจพ เจ…เจฐเจฅ เจนเฉˆ เจกเจฟเจ•เฉเจฐเจฟเจชเจธเจผเจจ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจตเจฟเจงเฉ€ เจตเจฟเฉฑเจš เจ…เฉฐเจคเจฎ เจธเจฟเจธเจŸเจฎ เจ•เจฒเจพเจธ javax.crypto.Cipher. เจ…เจคเฉ‡ เจ‡เจน เจธเจญ เจ•เฉเจ 10601 เจจเฉฐเจฌเจฐ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจ–เจพเจธ เจฐเจพเจŠเจŸเจฐ เจตเจฟเฉฑเจš เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ - เจ‡เจน เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เจฎเจพเจ‚เจก เจจเฉฐเจฌเจฐ เจนเฉˆ.

เจชเจฐเจฟเจตเจฐเจคเจจ เจฆเฉ€ เจ…เจ—เจฒเฉ€ เจฒเฉœเฉ€ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ•เจฒเจพเจธ เจฎเจฟเจฒเจฆเฉ€ เจนเฉˆ เจœเฉ‹ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆ IRouter เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจ…เจคเฉ‡ เจขเฉฐเจ— 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 เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจญเจพเจฒ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ

เจ‡เฉฑเจฅเฉ‡ เจ•เฉ€ เจนเฉ‹ เจฐเจฟเจนเจพ เจนเฉˆ? เจชเจนเจฟเจฒเฉ€ เจจเจœเจผเจฐ 'เจคเฉ‡, เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจค เจ…เจคเฉ‡ เจ…เฉฐเจค ARM เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจฒเจˆ เจ–เจพเจธ เจนเจจเฅค เจธเจŸเฉˆเจ• 'เจคเฉ‡ เจชเจนเจฟเจฒเฉ€ เจนเจฆเจพเจ‡เจค เจฐเจœเจฟเจธเจŸเจฐเจพเจ‚ เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจฆเฉ€ เจนเฉˆ เจœเฉ‹ เจซเฉฐเจ•เจธเจผเจจ เจ†เจชเจฃเฉ‡ เจ•เฉฐเจฎ (เจ‡เจธ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, R0, R1 เจ…เจคเฉ‡ R2) เจตเจฟเฉฑเจš เจตเจฐเจคเฉ‡เจ—เจพ, เจ…เจคเฉ‡ เจจเจพเจฒ เจนเฉ€ LR เจฐเจœเจฟเจธเจŸเจฐ เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€, เจœเจฟเจธ เจตเจฟเฉฑเจš เจซเฉฐเจ•เจธเจผเจจ เจคเฉ‹เจ‚ เจตเจพเจชเจธเฉ€ เจฆเจพ เจชเจคเจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค . เจ†เจ–เจฐเฉ€ เจนเจฆเจพเจ‡เจค เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เฉ€เจคเฉ‡ เจฐเจœเจฟเจธเจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจนเจพเจฒ เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจตเจพเจชเจธเฉ€ เจฆเจพ เจชเจคเจพ เจคเฉเจฐเฉฐเจค เจชเฉ€เจธเฉ€ เจฐเจœเจฟเจธเจŸเจฐ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ - เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจซเฉฐเจ•เจธเจผเจจ เจคเฉ‹เจ‚ เจตเจพเจชเจธ เจ† เจฐเจฟเจนเจพ เจนเฉˆเฅค เจชเจฐ เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจงเจฟเจ†เจจ เจจเจพเจฒ เจตเฉ‡เจ–เจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจตเฉ‡เจ–เฉ‹เจ—เฉ‡ เจ•เจฟ เจ…เฉฐเจคเจฎ เจจเจฟเจฐเจฆเฉ‡เจธเจผ เจธเจŸเฉˆเจ• 'เจคเฉ‡ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจตเจพเจชเจธเฉ€ เจฆเฉ‡ เจชเจคเฉ‡ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฆเจพ เจนเฉˆ. เจ†เจ“ เจนเจฟเจธเจพเจฌ เจ•เจฐเฉ€เจ เจ•เจฟ เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ•เจฟเจนเฉ‹ เจœเจฟเจนเจพ เจนเฉ‹เจตเฉ‡เจ—เจพ
เจ•เฉ‹เจก เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ. เจ‡เฉฑเจ• เจ–เจพเจธ เจชเจคเจพ 1xB0 เจจเฉ‚เฉฐ R130 เจตเจฟเฉฑเจš เจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ‡เจธ เจตเจฟเฉฑเจšเฉ‹เจ‚ 5 เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจซเจฟเจฐ เจ‡เจธเจจเฉ‚เฉฐ R0 เจตเจฟเฉฑเจš เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธ เจตเจฟเฉฑเจš 0x10 เจœเฉ‹เฉœเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจน 0xB13B เจฌเจพเจนเจฐ เจ•เจพเจฎเฉเจ•. เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, IDA เจธเฉ‹เจšเจฆเจพ เจนเฉˆ เจ•เจฟ เจ†เจ–เจฐเฉ€ เจนเจฆเจพเจ‡เจค เจ‡เฉฑเจ• เจ†เจฎ เจซเฉฐเจ•เจธเจผเจจ เจฐเจฟเจŸเจฐเจจ เจนเฉˆ, เจชเจฐ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ‡เจน เจ—เจฃเจจเจพ เจ•เฉ€เจคเฉ‡ เจชเจคเฉ‡ 0xB13B 'เจคเฉ‡ เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆเฅค

เจ‡เฉฑเจฅเฉ‡ เจ‡เจน เจฏเจพเจฆ เจฐเฉฑเจ–เจฃ เจฏเฉ‹เจ— เจนเฉˆ เจ•เจฟ ARM เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐเจพเจ‚ เจฆเฉ‡ เจฆเฉ‹ เจฎเฉ‹เจก เจ…เจคเฉ‡ เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ เจฆเฉ‡ เจฆเฉ‹ เจธเฉˆเฉฑเจŸ เจนเจจ: ARM เจ…เจคเฉ‡ เจฅเฉฐเจฌเฅค เจชเจคเฉ‡ เจฆเจพ เจธเจญ เจคเฉ‹เจ‚ เจ˜เฉฑเจŸ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจฌเจฟเฉฑเจŸ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ เจจเฉ‚เฉฐ เจฆเฉฑเจธเจฆเจพ เจนเฉˆ เจ•เจฟ เจ•เจฟเจนเฉœเจพ เจจเจฟเจฐเจฆเฉ‡เจธเจผ เจธเฉˆเฉฑเจŸ เจตเจฐเจคเจฟเจ† เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆเฅค เจญเจพเจต, เจชเจคเจพ เจ…เจธเจฒ เจตเจฟเฉฑเจš 0xB13A เจนเฉˆ, เจ…เจคเฉ‡ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจฌเจฟเฉฑเจŸ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจฅเฉฐเจฌ เจฎเฉ‹เจก เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค

เจ‡เจธ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจตเจฟเฉฑเจš เจนเจฐเฉ‡เจ• เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจค เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจฎเจพเจจ โ€œเจ…เจกเจพเจชเจŸเจฐโ€ เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡
เจ•เฉ‚เฉœเจพ เจ•เฉ‹เจก. เจ…เจธเฉ€เจ‚ เจ‰เจนเจจเจพเจ‚ 'เจคเฉ‡ เจนเฉ‹เจฐ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจตเจฟเจšเจพเจฐเจพเจ‚เจ—เฉ‡ - เจธเจพเจจเฉ‚เฉฐ เจธเจฟเจฐเจซ เจฏเจพเจฆ เจนเฉˆ
เจ•เจฟ เจฒเจ—เจญเจ— เจธเจพเจฐเฉ‡ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจ…เจธเจฒ เจธเจผเฉเจฐเฉ‚เจ†เจค เจฅเฉ‹เฉœเฉ€ เจฆเฉ‚เจฐ เจนเฉˆเฅค

เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ•เฉ‹เจก เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ 0xB13A 'เจคเฉ‡ เจจเจนเฉ€เจ‚ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, IDA เจจเฉ‡ เจ–เฉเจฆ เจ‡เจน เจจเจนเฉ€เจ‚ เจชเจ›เจพเจฃเจฟเจ† เจ•เจฟ เจ•เฉ‹เจก เจ‡เจธ เจธเจฅเจพเจจ 'เจคเฉ‡ เจธเจฅเจฟเจค เจธเฉ€เฅค เจ‡เจธเฉ‡ เจ•เจพเจฐเจจ เจ•เจฐเจ•เฉ‡, เจ‡เจน เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ‡ เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจ•เฉ‹เจกเจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉ‹เจก เจตเจœเฉ‹เจ‚ เจจเจนเฉ€เจ‚ เจชเจ›เจพเจฃเจฆเจพ, เจœเฉ‹ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจจเฉ‚เฉฐ เจ•เฉเจ เจฎเฉเจธเจผเจ•เจฒ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ IDA เจจเฉ‚เฉฐ เจฆเฉฑเจธเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ‡เจน เจ•เฉ‹เจก เจนเฉˆ, เจ…เจคเฉ‡ เจ…เจœเจฟเจนเจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆ:

UC เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจญเจพเจฒ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ

เจธเจพเจฐเจฃเฉ€ เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ 0xB144 เจคเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค sub_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 เจตเจฟเฉฑเจš เจชเจ เจชเจคเฉ‡ 'เจคเฉ‡ เจ‡เฉฑเจ• เจกเจตเจฐเจก เจฒเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ‡เจธ เจชเจคเฉ‡ เจตเจฟเฉฑเจš เจœเฉ‹เฉœเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจจเจคเฉ€เจœเฉ‡ เจตเจพเจฒเฉ‡ เจชเจคเฉ‡ 'เจคเฉ‡ เจฎเฉเฉฑเจฒ เจฒเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจธเจŸเฉˆเจ• 'เจคเฉ‡ เจชเจพ เจฆเจฟเฉฑเจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจจเจพเจฒ เจนเฉ€, 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 เจจเฉ‚เฉฐ เจ‡เจธเจฆเฉ€ เจ…เจธเจฒ เจธเจผเฉเจฐเฉ‚เจ†เจค เจตเฉฑเจฒ เจ‡เจธเจผเจพเจฐเจพ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ‡เจน เจธเจพเจฐเฉ‡ เจซเฉฐเจ•เจธเจผเจจ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเฉ‡เจ—เจพ, เจ…เจคเฉ‡ เจ‡เจธ เจจเฉ‚เฉฐ HexRays เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจกเฉ€เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจกเฉ€เจ•เฉ‹เจกเจฟเฉฐเจ— เจธเจคเจฐ

เจ…เจธเฉ€เจ‚ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจตเจฟเฉฑเจš เจฎเจธเจผเฉ€เจจ เจ•เฉ‹เจก เจฆเฉ€ เจ—เฉœเจฌเฉœ เจจเจพเจฒ เจจเจœเจฟเฉฑเจ เจฃเจพ เจธเจฟเฉฑเจ–เจฟเจ† เจนเฉˆ 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 เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจญเจพเจฒ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ

ARM เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจตเจฟเฉฑเจš, เจชเจนเจฟเจฒเฉ‡ เจšเจพเจฐ เจซเฉฐเจ•เจธเจผเจจ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจฐเจœเจฟเจธเจŸเจฐ R0-R3 เจฆเฉเจ†เจฐเจพ เจชเจพเจธ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ, เจฌเจพเจ•เฉ€, เจœเฉ‡เจ•เจฐ เจ•เฉ‹เจˆ เจนเฉˆ, เจธเจŸเฉˆเจ• เจฆเฉเจ†เจฐเจพ เจชเจพเจธ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค LR เจฐเจœเจฟเจธเจŸเจฐ เจตเจฟเฉฑเจš เจตเจพเจชเจธเฉ€ เจฆเจพ เจชเจคเจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจธเจญ เจจเฉ‚เฉฐ เจธเฉฐเจญเจพเจฒเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจคเจพเจ‚ เจœเฉ‹ เจซเฉฐเจ•เจธเจผเจจ เจ‡เจธ เจฆเฉ‡ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจกเฉฐเจช เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ•เฉฐเจฎ เจ•เจฐ เจธเจ•เฉ‡เฅค เจธเจพเจจเฉ‚เฉฐ เจ‰เจนเจจเจพเจ‚ เจธเจพเจฐเฉ‡ เจฐเจœเจฟเจธเจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเจจ เจฆเฉ€ เจตเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจตเจฟเฉฑเจš เจตเจฐเจคเจพเจ‚เจ—เฉ‡, เจ‡เจธ เจฒเจˆ เจ…เจธเฉ€เจ‚ PUSH.W {R0-R10,LR} เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค R7 เจตเจฟเฉฑเจš เจธเจพเจจเฉ‚เฉฐ เจธเจŸเฉˆเจ• เจฐเจพเจนเฉ€เจ‚ เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจชเจพเจธ เจ•เฉ€เจคเฉ‡ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจฆเจพ เจชเจคเจพ เจฎเจฟเจฒเจฆเจพ เจนเฉˆเฅค

เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจซเฉ‹เจชเฉ‡เจจ เจšเจฒเฉ‹ เจซเจพเจˆเจฒ เจ–เฉ‹เจฒเฉเจนเฉ€เจ /data/local/tmp/aes "ab" เจฎเฉ‹เจก เจตเจฟเฉฑเจš
เจญเจพเจต เจœเฉ‹เฉœเจจ เจฒเจˆเฅค R0 เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจซเจพเจˆเจฒ เจจเจพเจฎ เจฆเจพ เจชเจคเจพ เจฒเฉ‹เจก เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, R1 เจตเจฟเฉฑเจš - เจฎเฉ‹เจก เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจฃ เจตเจพเจฒเฉ€ เจฒเจพเจˆเจจ เจฆเจพ เจชเจคเจพเฅค เจ…เจคเฉ‡ เจ‡เฉฑเจฅเฉ‡ เจ—เจพเจฐเจฌเฉ‡เจœ เจ•เฉ‹เจก เจ–เจคเจฎ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจ…เจธเฉ€เจ‚ เจ…เจ—เจฒเฉ‡ เจซเฉฐเจ•เจธเจผเจจ 'เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจ‡เจธ เจจเฉ‚เฉฐ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เจฃ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจธเจผเฉเจฐเฉ‚ เจตเจฟเฉฑเจš เจ•เฉ‚เฉœเฉ‡ เจจเฉ‚เฉฐ เจฌเจพเจˆเจชเจพเจธ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ‡ เจ…เจธเจฒ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€ เจชเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจ•เฉ‚เฉœเฉ‡ เจฆเฉ€ เจฌเจœเจพเจ เจ…เจธเฉ€เจ‚ เจชเฉˆเจš เจฆเฉ€ เจจเจฟเจฐเฉฐเจคเจฐเจคเจพ เจœเฉ‹เฉœเจฆเฉ‡ เจนเจพเจ‚เฅค

UC เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจญเจพเจฒ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ

เจ•เจพเจฒ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ เจซเฉ‹เจชเฉ‡เจจ.

เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ‡ เจชเจนเจฟเจฒเฉ‡ เจคเจฟเฉฐเจจ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ AES เจ•เจฟเจธเจฎ เจนเฉˆ เจ‡เฉฐเจŸ. เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ…เจธเฉ€เจ‚ เจธเจผเฉเจฐเฉ‚ เจตเจฟเฉฑเจš เจฐเจœเจฟเจธเจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจธเจŸเฉˆเจ• เจตเจฟเฉฑเจš เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เฉ€เจคเจพ เจนเฉˆ, เจ…เจธเฉ€เจ‚ เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ เจชเจพเจธ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจฒเจฟเจ–เฉ‹ เจธเจŸเฉˆเจ• 'เจคเฉ‡ เจ‰เจจเฉเจนเจพเจ‚ เจฆเฉ‡ เจชเจคเฉ‡เฅค

UC เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจญเจพเจฒ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ

เจ…เฉฑเจ—เฉ‡ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจคเจฟเฉฐเจจ เจขเจพเจ‚เจšเฉ‡ เจนเจจ เจœเจฟเจนเจจเจพเจ‚ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจฆเจพ เจ†เจ•เจพเจฐ เจ…เจคเฉ‡ เจ•เฉเฉฐเจœเฉ€, เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจตเฉˆเจ•เจŸเจฐ เจ…เจคเฉ‡ เจเจจเจ•เฉเจฐเจฟเจชเจŸเจก เจกเฉ‡เจŸเจพ เจฒเจˆ เจกเฉ‡เจŸเจพ เจฒเจˆ เจ‡เฉฑเจ• เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจธเจผเจพเจฎเจฒ เจนเจจเฅค

UC เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจญเจพเจฒ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ

เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจฌเฉฐเจฆ เจ•เจฐเฉ‹, เจฐเจœเจฟเจธเจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจฐเฉ€เจธเจŸเฉ‹เจฐ เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจจเฉ‚เฉฐ เจ…เจธเจฒ เจซเฉฐเจ•เจธเจผเจจ เจตเจฟเฉฑเจš เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเฉ‹ AES.

เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจชเฉˆเจš เจ•เฉ€เจคเฉ€ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• 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/" เจชเฉเจฐเจพเจชเจค เจนเฉ‹เจตเฉ‡, เจเจชเฉ€เจ•เฉ‡ เจตเจฟเฉฑเจš เจ‰เจธ เจจเจพเจฎ เจจเจพเจฒ เจ‡เฉฑเจ• เจซเฉ‹เจฒเจกเจฐ เจฌเจฃเจพเจ“ เจ…เจคเฉ‡ เจ‰เฉฑเจฅเฉ‡ เจธเจ•เจตเจพเจ‡เจฐเจฒ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹เฅค

เจ…เจธเฉ€เจ‚ เจ…เจธเฉˆเจ‚เจฌเจฒ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจธเจพเจˆเจจ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจฒเจพเจ‚เจš เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจฌเจฟเฉฐเจ—เฉ‹! เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ•เฉเฉฐเจœเฉ€ เจนเฉˆ!

เจเฉฑเจฎ.เจ†เจˆ.เจŸเฉ€.เจเฉฑเจฎ

เจธเจพเจจเฉ‚เฉฐ เจ•เฉเฉฐเจœเฉ€ เจฆเฉ‡ เจฌเจฐเจพเจฌเจฐ เจ‡เฉฑเจ• เจ•เฉเฉฐเจœเฉ€ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจตเฉˆเจ•เจŸเจฐ เจชเฉเจฐเจพเจชเจค เจนเฉ‹เจ‡เจ† เจนเฉˆเฅค เจ†เจ‰ CBC เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจธเจฐเจตเจฐ เจœเจตเจพเจฌ เจจเฉ‚เฉฐ เจกเฉ€เจ•เฉเจฐเจฟเจชเจŸ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเฉ€เจเฅค

UC เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจญเจพเจฒ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ

เจ…เจธเฉ€เจ‚ เจ†เจฐเจ•เจพเจˆเจต URL เจฆเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚, เจœเฉ‹ เจ•เจฟ MD5 เจตเจฐเจ—เจพ เจนเฉˆ, "เจเจ•เจธเจŸเฉเจฐเฉˆเจ•เจŸ_เจ…เจจเจœเจผเจฟเจชเจธเจพเจˆเจœเจผ" เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจจเฉฐเจฌเจฐเฅค เจ…เจธเฉ€เจ‚ เจœเจพเจ‚เจš เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚: เจ†เจฐเจ•เจพเจˆเจต เจฆเจพ 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.

เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, "เจซเจฟเจ•เจธ" เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ…เจคเฉ‡ เจ‡เจธ เจฒเฉ‡เจ– เจจเฉ‚เฉฐ เจฒเจฟเจ–เจฃ เจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจคเฉฑเจ•, เจ‡เฉฑเจ• เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• PDF เจ–เฉ‹เจฒเฉเจนเจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ "เจ“เจน, เจ•เฉเจ เจ—เจฒเจค เจนเฉ‹ เจ—เจฟเจ†!" เจŸเฉˆเจ•เจธเจŸ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจ—เจฒเจคเฉ€ เจธเฉเจจเฉ‡เจนเจพ เจ†เจ‡เจ†เฅค เจ‡เฉฑเจ• PDF เจจเฉ‚เฉฐ เจ–เฉ‹เจฒเฉเจนเจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฌเฉ‡เจจเจคเฉ€ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจธเฉ€, เจชเจฐ เจ‡เฉฑเจ• เจฌเฉ‡เจจเจคเฉ€ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจธเฉ€ เจœเจฆเฉ‹เจ‚ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€, เจœเฉ‹ Google Play เจจเจฟเจฏเจฎเจพเจ‚ เจฆเฉ€ เจ‰เจฒเฉฐเจ˜เจฃเจพ เจตเจฟเฉฑเจš เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸเฉ‡เจฌเจฒ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจ เจฆเฉ€ เจจเจฟเจฐเฉฐเจคเจฐ เจธเจฎเจฐเฉฑเจฅเจพ เจตเฉฑเจฒ เจธเฉฐเจ•เฉ‡เจค เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹