เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เด†เดฎเตเด–เด‚

เดฎเดพเตผเดšเตเดšเต เด…เดตเดธเดพเดจเด‚ เดžเด™เตเด™เตพ เด…เดฑเดฟเดฏเดฟเดšเตเดšเต, UC เดฌเตเดฐเต—เดธเดฑเดฟเตฝ เดชเดฐเดฟเดถเต‹เดงเดฟเดšเตเดšเตเดฑเดชเตเดชเดฟเด•เตเด•เดพเดคเตเดค เด•เต‹เดกเต เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเดฎเตเดณเตเดณ เด’เดฐเต เดฎเดฑเดžเตเดžเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด•เดดเดฟเดตเต เด…เดตเตผ เด•เดฃเตเดŸเต†เดคเตเดคเดฟ. เดˆ เดกเต—เตบเดฒเต‹เดกเต เดŽเด™เตเด™เดจเต† เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเตเด‚ เดนเดพเด•เตเด•เตผเดฎเดพเตผเด•เตเด•เต เด…เดตเดฐเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เด†เดตเดถเตเดฏเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต เดŽเด™เตเด™เดจเต† เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เด‡เดจเตเดจเต เดจเดฎเตเดฎเตพ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด‚.

เด•เตเดฑเดšเตเดšเต เด•เดพเดฒเด‚ เดฎเตเดฎเตเดชเต, เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเตผ เดตเดณเดฐเต† เด†เด•เตเดฐเดฎเดฃเดพเดคเตเดฎเด•เดฎเดพเดฏเดฟ เดชเดฐเดธเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเต: เด‡เดคเต เดฎเดพเตฝเดตเต†เดฏเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเตเดŸเต† เด‰เดชเด•เดฐเดฃเด™เตเด™เดณเดฟเตฝ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเต, เดตเต€เดกเดฟเดฏเต‹ เดซเดฏเดฒเตเด•เดณเตเดŸเต† เดฎเดฑเดตเดฟเตฝ เดตเดฟเดตเดฟเดง เดธเตˆเดฑเตเดฑเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดคเต (เด…เดคเดพเดฏเดคเต, เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพ เด…เดตเตผ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดพเดฏเดฟ เด•เดฐเตเดคเดฟ, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด’เดฐเต เด…เดถเตเดฒเต€เดฒ เดตเต€เดกเดฟเดฏเต‹, เดชเด•เตเดทเต‡ เดชเด•เดฐเด‚ เดˆ เดฌเตเดฐเต—เดธเดฑเดฟเดจเตŠเดชเตเดชเด‚ เด’เดฐเต APK เดฒเดญเดฟเดšเตเดšเต), เดฌเตเดฐเต—เดธเตผ เด•เดพเดฒเดนเดฐเดฃเดชเตเดชเต†เดŸเตเดŸเดคเดพเดฃเต†เดจเตเดจเตเด‚ เด…เดชเด•เดŸเดธเดพเดงเตเดฏเดคเดฏเตเดณเตเดณเดคเดพเดฃเต†เดจเตเดจเตเด‚ เด…เดคเตเดชเต‹เดฒเตเดณเตเดณ เด•เดพเดฐเตเดฏเด™เตเด™เตพ เด‰เดฃเตเดŸเต†เดจเตเดจเตเดฎเตเดณเตเดณ เดธเดจเตเดฆเต‡เดถเด™เตเด™เดณเตเดณเตเดณ เดญเดฏเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจ เดฌเดพเดจเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต. เดตเดฟเด•เต†เดฏเดฟเดฒเต† เด”เดฆเตเดฏเต‹เด—เดฟเด• เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเตผ เด—เตเดฐเต‚เดชเตเดชเดฟเตฝ เด‰เดฃเตเดŸเต เดคเต€เด‚, เด…เดจเตเดฏเดพเดฏเดฎเดพเดฏ เดชเดฐเดธเตเดฏเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เต เดชเดฐเดพเดคเดฟเดชเตเดชเต†เดŸเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เดจเดฟเดฐเดตเดงเดฟ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เดณเตเดฃเตเดŸเต. 2016-เตฝ เดชเต‹เดฒเตเด‚ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต เดตเต€เดกเดฟเดฏเต‹ เดชเดฐเดธเตเดฏเด‚เดšเต†เดฏเตเดฏเตฝ เดฑเดทเตเดฏเตป เดญเดพเดทเดฏเดฟเตฝ (เด…เดคเต†, เด’เดฐเต เดชเดฐเดธเตเดฏเด‚ เดคเดŸเดฏเตเดจเตเดจ เดฌเตเดฐเต—เดธเดฑเดฟเดจเดพเดฏเตเดณเตเดณ เดชเดฐเดธเตเดฏเด‚).

เดŽเดดเตเดคเตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต, UC เดฌเตเดฐเต—เดธเดฑเดฟเดจเต Google Play-เดฏเดฟเตฝ 500-เดฒเดงเดฟเด•เด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเดจเตเด•เดณเตเดฃเตเดŸเต. เด‡เดคเต เดถเตเดฐเดฆเตเดงเต‡เดฏเดฎเดพเดฃเต - Google Chrome-เดจเต เดฎเดพเดคเตเดฐเดฎเต‡ เด•เต‚เดŸเตเดคเตฝ เด‰เดณเตเดณเต‚. เด…เดตเดฒเต‹เด•เดจเด™เตเด™เตพเด•เตเด•เดฟเดŸเดฏเดฟเตฝ, Google Play-เดฏเดฟเดฒเต† เดšเดฟเดฒ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเดฐเดธเตเดฏเดคเตเดคเต†เดฏเตเด‚ เดฑเต€เดกเดฏเดฑเด•เตโ€ŒเดŸเดฟเดจเต†เดฏเตเด‚ เด•เตเดฑเดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดงเดพเดฐเดพเดณเด‚ เดชเดฐเดพเดคเดฟเด•เตพ เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚. เดžเด™เตเด™เดณเตเดŸเต† เด—เดตเต‡เดทเดฃเดคเตเดคเดฟเดจเตเดฑเต† เด•เดพเดฐเดฃเด‚ เด‡เดคเดพเดฏเดฟเดฐเตเดจเตเดจเต: UC เดฌเตเดฐเต—เดธเตผ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดฎเต‹เดถเด‚ เดชเตเดฐเดตเตƒเดคเตเดคเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเตเดฃเตเดŸเต‹ เดŽเดจเตเดจเต เด•เดพเดฃเดพเตป เดžเด™เตเด™เตพ เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต. เด…เดตเตป เด…เด™เตเด™เดจเต† เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดพเดฏเดฟ เดคเต†เดณเดฟเดžเตเดžเต!

เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด•เต‹เดกเดฟเตฝ, เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเดฌเดฟเตพ เด•เต‹เดกเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเดฎเตเดณเตเดณ เด•เดดเดฟเดตเต เด•เดฃเตเดŸเต†เดคเตเดคเดฟ, เด‡เดคเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดฟเดฏเดฎเด™เตเด™เตพเด•เตเด•เต เดตเดฟเดฐเตเดฆเตเดงเดฎเดพเดฃเต Google Play-เดฏเดฟเตฝ. เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเดฌเดฟเตพ เด•เต‹เดกเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดชเตเดฑเดฎเต‡, UC เดฌเตเดฐเต—เดธเตผ เดธเตเดฐเด•เตเดทเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดค เดฐเต€เดคเดฟเดฏเดฟเดฒเดพเดฃเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต, เด‡เดคเต เด’เดฐเต MitM เด†เด•เตเดฐเดฎเดฃเด‚ เดจเดŸเดคเตเดคเดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚. เด…เด™เตเด™เดจเต†เดฏเตŠเดฐเต เด†เด•เตเดฐเดฎเดฃเด‚ เดจเดŸเดคเตเดคเดพเดจเดพเด•เตเดฎเต‹ เดŽเดจเตเดจเต เดจเต‹เด•เตเด•เดพเด‚.

เดชเด เดจเดธเดฎเดฏเดคเตเดคเต Google Play-เดฏเดฟเตฝ เดฒเดญเตเดฏเดฎเดพเดฏเดฟเดฐเตเดจเตเดจ UC เดฌเตเดฐเต—เดธเดฑเดฟเดจเตเดฑเต† เดชเดคเดฟเดชเตเดชเดฟเดจเต เดšเตเดตเดŸเต† เดŽเดดเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดฒเตเดฒเดพเด‚ เดชเตเดฐเดธเด•เตเดคเดฎเดพเดฃเต:

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

เด†เด•เตเดฐเดฎเดฃ เดตเต†เด•เตเดฑเตเดฑเตผ

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเตผ เดฎเดพเดจเดฟเดซเต†เดธเตเดฑเตเดฑเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเตเดตเดฏเด‚ เดตเดฟเดถเดฆเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจ เดชเต‡เดฐเตเดณเตเดณ เด’เดฐเต เดธเต‡เดตเดจเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚ com.uc.deployment.UpgradeDeployService.

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

เดˆ เดธเต‡เดตเดจเด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดฌเตเดฐเต—เดธเตผ เด’เดฐเต POST เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดŸเดคเตเดคเตเดจเตเดจเต puds.ucweb.com/upgrade/index.xhtml, เด‡เดคเต เด†เดฐเด‚เดญเดฟเดšเตเดšเต เด•เตเดฑเดšเตเดšเต เดธเดฎเดฏเดคเตเดคเดฟเดจเต เดถเต‡เดทเด‚ เดŸเตเดฐเดพเดซเดฟเด•เตเด•เดฟเตฝ เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚. เดชเตเดฐเดคเดฟเด•เดฐเดฃเดฎเดพเดฏเดฟ, เดšเดฟเดฒ เด…เดชเตเดกเต‡เดฑเตเดฑเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเตเดคเดฟเดฏ เดฎเตŠเดกเตเดฏเต‚เตพ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เด•เดฎเดพเตปเดกเต เด…เดฏเดพเตพเด•เตเด•เต เดฒเดญเดฟเดšเตเดšเต‡เด•เตเด•เดพเด‚. เดตเดฟเดถเด•เดฒเดจ เดธเดฎเดฏเดคเตเดคเต, เดธเต†เตผเดตเตผ เด…เดคเตเดคเดฐเด‚ เด•เดฎเดพเตปเดกเตเด•เตพ เดจเตฝเด•เดฟเดฏเดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡ เดžเด™เตเด™เตพ เดฌเตเดฐเต—เดธเดฑเดฟเตฝ เด’เดฐเต PDF เดคเตเดฑเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดฎเตเด•เดณเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏ เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด…เดคเต เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดŸเดคเตเดคเตเดจเตเดจเต, เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ เด…เดคเต เดจเต‡เดฑเตเดฑเต€เดตเต เดฒเตˆเดฌเตเดฐเดฑเดฟ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด†เด•เตเดฐเดฎเดฃเด‚ เดจเดŸเดคเตเดคเดพเตป, UC เดฌเตเดฐเต—เดธเดฑเดฟเดจเตเดฑเต† เดˆ เดธเดตเดฟเดถเต‡เดทเดค เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต: เด’เดฐเต เดจเต‡เดฑเตเดฑเต€เดตเต เดฒเตˆเดฌเตเดฐเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต PDF เดคเตเดฑเด•เตเด•เดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเต, เด…เดคเต APK-เดฏเดฟเตฝ เด‡เดฒเตเดฒเดพเดคเตเดคเดคเตเด‚ เด†เดตเดถเตเดฏเดฎเต†เด™เตเด•เดฟเตฝ เด‡เดจเตเดฑเตผเดจเต†เดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเตเดฎเดพเดฃเต. เดธเตˆเดฆเตเดงเดพเดจเตเดคเดฟเด•เดฎเดพเดฏเดฟ, เด‰เดชเดฏเต‹เด•เตเดคเตƒ เด‡เดŸเดชเต†เดŸเดฒเดฟเดฒเตเดฒเดพเดคเต† เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเตป เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเตผ เดจเดฟเตผเดฌเดจเตเดงเดฟเดคเดจเดพเด•เตเดฎเต†เดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดพเดฃเต - เดฌเตเดฐเต—เดธเตผ เดธเดฎเดพเดฐเด‚เดญเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเด•เตเด•เต เดจเดฟเด™เตเด™เตพ เดจเดจเตเดจเดพเดฏเดฟ เดฐเต‚เดชเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏ เดชเตเดฐเดคเดฟเด•เดฐเดฃเด‚ เดจเตฝเด•เดฟเดฏเดพเตฝ. เดŽเดจเตเดจเดพเตฝ เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดธเต†เตผเดตเดฑเตเดฎเดพเดฏเตเดณเตเดณ เด‡เดŸเดชเต†เดŸเดฒเดฟเดจเตเดฑเต† เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ เดžเด™เตเด™เตพ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดชเด เดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เด…เดคเดฟเดจเดพเตฝ เดคเดŸเดธเตเดธเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏ เดชเตเดฐเดคเดฟเด•เดฐเดฃเด‚ เดŽเดกเดฟเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเตเด‚ PDF-เตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฒเตˆเดฌเตเดฐเดฑเดฟ เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเดคเตเด‚ เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต†เดจเตเดจเต เดžเด™เตเด™เตพ เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต.

เด…เดคเดฟเดจเดพเตฝ, เด’เดฐเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต เดจเต‡เดฐเดฟเดŸเตเดŸเต เดฌเตเดฐเต—เดธเดฑเดฟเตฝ เด’เดฐเต PDF เดคเตเดฑเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดŸเตเดฐเดพเดซเดฟเด•เตเด•เดฟเตฝ เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚:

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เด†เดฆเตเดฏเด‚ เด’เดฐเต POST เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเดฃเตเดŸเต puds.ucweb.com/upgrade/index.xhtmlเด…เดคเดฟเดจเตเดถเต‡เดทเด‚
PDF, เด“เดซเต€เดธเต เดซเต‹เตผเดฎเดพเดฑเตเดฑเตเด•เตพ เด•เดพเดฃเตเดจเตเดจเดคเดฟเดจเต เดฒเตˆเดฌเตเดฐเดฑเดฟ เด‰เดณเตเดณ เด’เดฐเต เด†เตผเด•เตเด•เตˆเดตเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดคเต. เด†เดฆเตเดฏเดคเตเดคเต† เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเต เดŽเดจเตเดจเต เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เตเดจเตเดจเดคเต เดฏเตเด•เตเดคเดฟเดธเดนเดฎเดพเดฃเต (เด•เตเดฑเดžเตเดžเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดฒเตˆเดฌเตเดฐเดฑเดฟ เดจเตฝเด•เดพเดจเตเดณเตเดณ เด†เตผเด•เตเด•เดฟเดŸเต†เด•เตเดšเตผ), เด…เดคเดฟเดจเต เดฎเดฑเตเดชเดŸเดฟเดฏเดพเดฏเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดจเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸ เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดšเดฟเดฒ เดตเดฟเดตเดฐเด™เตเด™เตพ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเต: เดตเดฟเดฒเดพเดธเดตเตเด‚, เด’เดฐเตเดชเด•เตเดทเต‡ , เดตเต‡เดฑเต† เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚. เดˆ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดคเดคเดพเดฃเต เดชเตเดฐเดถเตเดจเด‚.

เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดถเด•เดฒเด‚

เด‰เดคเตเดคเดฐเด‚ เดถเด•เดฒเด‚

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เดฒเตˆเดฌเตเดฐเดฑเดฟ เดคเดจเตเดจเต† ZIP-เตฝ เดชเดพเด•เตเด•เต‡เดœเตเดšเต†เดฏเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเดฟเดฒเตเดฒ.

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เดŸเตเดฐเดพเดซเดฟเด•เต เดกเต€เด•เตเดฐเดฟเดชเตเดทเตป เด•เต‹เดกเดฟเดจเดพเดฏเดฟ เดคเดฟเดฐเดฏเตเด•

เดธเต†เตผเดตเตผ เดชเตเดฐเดคเดฟเด•เดฐเดฃเด‚ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เดพเด‚. เด•เตเดฒเดพเดธเต เด•เต‹เดกเต เดจเต‹เด•เตเด•เดพเด‚ 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, เด…เดคเต เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เด’เดฐเต .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 เดŽเดจเตเดจ เดจเดฎเตเดชเดฑเตเดณเตเดณ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดฑเต‚เดŸเตเดŸเดฑเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเตเดจเตเดจเต - เด‡เดคเต เดชเตเดฐเดคเตเดฏเด•เตเดทเดคเตเดคเดฟเตฝ เด•เดฎเดพเตปเดกเต เดจเดฎเตเดชเดฑเดพเดฃเต.

เดธเด‚เด•เตเดฐเดฎเดฃเด™เตเด™เดณเตเดŸเต† เด…เดŸเตเดคเตเดค เดถเตƒเด‚เด–เดฒเดฏเตเด•เตเด•เต เดถเต‡เดทเด‚ เดžเด™เตเด™เตพ เด‡เดจเตเดฑเตผเดซเต‡เดธเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด•เตเดฒเดพเดธเต เด•เดฃเตเดŸเต†เดคเตเดคเตเดจเตเดจเต 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);
}
}

เด’เดชเตเดชเด‚ เด•เตเดฒเดพเดธเตเด‚ JNIC เดฒเตˆเดฌเตเดฐเดฑเดฟ, เด‡เดคเดฟเตฝ เดจเต‡เดฑเตเดฑเต€เดตเต เดฐเต€เดคเดฟ เดชเตเดฐเด–เตเดฏเดพเดชเดฟเดšเตเดšเต 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-เดฏเดฟเตฝ เดคเตเดฑเด•เตเด•เตเด•เดฏเตเด‚ เดชเดฟเดถเด•เตเด•เดณเตเดณเตเดณ เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดกเดฏเดฒเต‹เด—เต เดฌเต‹เด•เตเดธเตเด•เตพ เดจเต‡เดŸเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดตเดฟเดญเดพเด—เด‚ เดคเดฒเด•เตเด•เต†เดŸเตเดŸเต เดชเดŸเตเดŸเดฟเด• เด…เดธเดพเดงเตเดตเดพเดฃเต เดŽเดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดถเตเดจเด‚. เดตเดฟเดถเด•เดฒเดจเด‚ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเด•เตเด•เดพเตป เด‰เดฆเตเดฆเต‡เดถเดฟเดšเตเดšเดพเดฃเต เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต.

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เดŽเดจเตเดจเดพเตฝ เด‡เดคเต เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ: เด’เดฐเต ELF เดซเดฏเตฝ เดถเดฐเดฟเดฏเดพเดฏเดฟ เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด…เดคเต เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเดพเดจเตเด‚, เด’เดฐเต เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เดนเต†เดกเตผ เดŸเต‡เดฌเดฟเตพ เดฎเดคเดฟเดฏเดพเด•เตเด‚. เด…เดคเดฟเดจเดพเตฝ, เดžเด™เตเด™เตพ เดธเต†เด•เตเดทเตป เดŸเต‡เดฌเดฟเตพ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเดจเตเดจเต, เดนเต†เดกเดฑเดฟเดฒเต† เด…เดจเตเดฌเดจเตเดง เดซเต€เตฝเดกเตเด•เตพ เดชเต‚เดœเตเดฏเดฎเดพเด•เตเด•เตเดจเตเดจเต.

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เดเดกเดฟเดŽเดฏเดฟเตฝ เดซเดฏเตฝ เดตเต€เดฃเตเดŸเตเด‚ เดคเตเดฑเด•เตเด•เตเด•.

เดจเต‡เดฑเตเดฑเต€เดตเต เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเดฟเตฝ เดœเดพเดต เด•เต‹เดกเดฟเตฝ เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดฏเดฟ เดชเตเดฐเด–เตเดฏเดพเดชเดฟเดšเตเดš เด’เดฐเต เดฐเต€เดคเดฟ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเต เดŽเดตเดฟเดŸเต†เดฏเดพเดฃเต†เดจเตเดจเต เดœเดพเดต เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเต‹เดŸเต เดชเดฑเดฏเดพเตป เดฐเดฃเตเดŸเต เดตเดดเดฟเด•เดณเตเดฃเตเดŸเต. เด…เดคเดฟเดจเต เด’เดฐเต เดธเตเดชเต€เดทเต€เดธเต เดชเต‡เดฐเต เดจเตฝเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เด†เดฆเตเดฏเดคเตเดคเต‡เดคเต Java_package_name_ClassName_MethodName.

เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเต เดฒเตˆเดฌเตเดฐเดฑเดฟ เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ เด…เดคเต เดฐเดœเดฟเดธเตเดฑเตเดฑเตผ เดšเต†เดฏเตเดฏเตเด• เดŽเดจเตเดจเดคเดพเดฃเต (เดซเด‚เด—เตเดทเดจเดฟเตฝ JNI_Onload)
เด’เดฐเต เดซเด‚เด—เตเดทเตป เด•เต‹เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต เดฐเดœเดฟเดธเตเดฑเตเดฑเตผ เดธเตเดตเดฆเต‡เดถเดฟเด•เตพ.

เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดžเด™เตเด™เตพ เด†เดฆเตเดฏ เดฐเต€เดคเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดชเต‡เดฐเต เด‡เด™เตเด™เดจเต†เดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚: Java_com_taobao_wireless_security_adapter_JNICLibrary_doCommandNative.

เดŽเด•เตโ€Œเดธเตโ€Œเดชเต‹เตผเดŸเตเดŸเต เดšเต†เดฏเตโ€Œเดค เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดซเด‚เด—เตโ€Œเดทเตป เด‡เดฒเตเดฒ, เด…เดคเดฟเดจเตผเดคเตเดฅเด‚ เดจเดฟเด™เตเด™เตพ เด’เดฐเต เด•เต‹เดณเดฟเดจเดพเดฏเดฟ เดจเต‹เด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต เดŽเดจเตเดจเดพเดฃเต เดฐเดœเดฟเดธเตเดฑเตเดฑเตผ เดธเตเดตเดฆเต‡เดถเดฟเด•เตพ.
เดจเดฎเตเด•เตเด•เต เดšเดŸเด™เตเด™เดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เดพเด‚ JNI_Onload เดžเด™เตเด™เตพ เดˆ เดšเดฟเดคเตเดฐเด‚ เด•เดพเดฃเตเดจเตเดจเต:

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เดŽเดจเตเดคเดพเดฃเต เด‡เดตเดฟเดŸเต† เดจเดŸเด•เตเด•เตเดจเตเดจเดคเต? เด’เดฑเตเดฑเดจเต‹เดŸเตเดŸเดคเตเดคเดฟเตฝ, เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเดฑเต† เดคเตเดŸเด•เตเด•เดตเตเด‚ เด…เดตเดธเดพเดจเดตเตเด‚ ARM เด†เตผเด•เตเด•เดฟเดŸเต†เด•เตเดšเดฑเดฟเดจเต เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฃเต. เดธเตเดฑเตเดฑเดพเด•เตเด•เดฟเดฒเต† เด†เดฆเตเดฏ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด‚ เดซเด‚เด—เตโ€Œเดทเตป เด…เดคเดฟเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดฐเดœเดฟเดธเตเดฑเตเดฑเดฑเตเด•เดณเตเดŸเต† เด‰เดณเตเดณเดŸเด•เตเด•เด™เตเด™เดณเตเด‚ (เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, R0, R1, R2) เดซเด‚เด—เตโ€Œเดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฎเดŸเด•เตเด• เดตเดฟเดฒเดพเดธเด‚ เด…เดŸเด™เตเด™เตเดจเตเดจ LR เดฐเดœเดฟเดธเตเดฑเตเดฑเดฑเดฟเดฒเต† เด‰เดณเตเดณเดŸเด•เตเด•เด™เตเด™เดณเตเด‚ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเต. . เด…เดตเดธเดพเดจ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด‚ เดธเด‚เดฐเด•เตเดทเดฟเดšเตเดš เดฐเดœเดฟเดธเตเดฑเตเดฑเดฑเตเด•เตพ เดชเตเดจเดƒเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเต, เดฑเดฟเดŸเตเดŸเต‡เตบ เดตเดฟเดฒเดพเดธเด‚ เด‰เดŸเตป เดชเดฟเดธเดฟ เดฐเดœเดฟเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเต - เด…เด™เตเด™เดจเต† เดซเด‚เด—เตเดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเดŸเด™เตเด™เตเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เดจเดฟเด™เตเด™เตพ เดธเต‚เด•เตเดทเตเดฎเดฎเดพเดฏเดฟ เดจเต‹เด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด…เดตเดธเดพเดจ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด‚ เดธเตเดฑเตเดฑเดพเด•เตเด•เดฟเตฝ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดฑเดฟเดŸเตเดŸเต‡เตบ เดตเดฟเดฒเดพเดธเด‚ เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเต เดจเดฟเด™เตเด™เตพ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด‚. เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ เดŽเด™เตเด™เดจเต†เดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เดจเดฎเตเด•เตเด•เต เด•เดฃเด•เตเด•เดพเด•เตเด•เดพเด‚
เด•เต‹เดกเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดทเตป. เด’เดฐเต เดจเดฟเดถเตเดšเดฟเดค เดตเดฟเดฒเดพเดธเด‚ 1xB0 R130-เดฒเต‡เด•เตเด•เต เดฒเต‹เดกเตเดšเต†เดฏเตโ€Œเดคเต, เด…เดคเดฟเตฝ เดจเดฟเดจเตเดจเต 5 เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเต, เดคเตเดŸเตผเดจเตเดจเต เด…เดคเต R0-เดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเตเด•เดฏเตเด‚ 0x10 เดšเต‡เตผเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด‡เดคเต 0xB13B เด†เดฏเดฟ เดฎเดพเดฑเตเดจเตเดจเต. เด…เดคเดฟเดจเดพเตฝ, เด…เดตเดธเดพเดจ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด‚ เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ เดซเด‚เด—เตเดทเตป เดฑเดฟเดŸเตเดŸเต‡เตบ เด†เดฃเต†เดจเตเดจเต IDA เด•เดฐเตเดคเตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ เด…เดคเต เด•เดฃเด•เตเด•เดพเด•เตเด•เดฟเดฏ เดตเดฟเดฒเดพเดธเด‚ 0xB13B เดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเดจเตเดจเต.

ARM เดชเตเดฐเต‹เดธเดธเดฑเตเด•เตพเด•เตเด•เต เดฐเดฃเตเดŸเต เดฎเต‹เดกเตเด•เดณเตเด‚ เดฐเดฃเตเดŸเต เดธเต†เดฑเตเดฑเต เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เดณเตเดฎเตเดฃเตเดŸเต†เดจเตเดจ เด•เดพเดฐเตเดฏเด‚ เด‡เดตเดฟเดŸเต† เด“เตผเด•เตเด•เต‡เดฃเตเดŸเดคเดพเดฃเต: ARM, Thumb. เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดจเตเดฑเต† เดเดฑเตเดฑเดตเตเด‚ เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸ เดฌเดฟเดฑเตเดฑเต เดเดคเต เด‡เตปเดธเตเดŸเตเดฐเด•เตเดทเตป เดธเต†เดฑเตเดฑเดพเดฃเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เดชเตเดฐเต‹เดธเดธเตเดธเดฑเดฟเดจเต‹เดŸเต เดชเดฑเดฏเตเดจเตเดจเต. เด…เดคเดพเดฏเดคเต, เดตเดฟเดฒเดพเดธเด‚ เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ 0xB13A เด†เดฃเต, เด•เต‚เดŸเดพเดคเต† เดเดฑเตเดฑเดตเตเด‚ เด•เตเดฑเดžเตเดž เดฌเดฟเดฑเตเดฑเตเด•เดณเดฟเตฝ เด’เดจเตเดจเต เดคเดฎเตเดชเต เดฎเต‹เดกเดฟเดจเต† เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต.

เดˆ เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเดฟเดฒเต† เด“เดฐเต‹ เดซเด‚เด—เตโ€Œเดทเดจเตเดฑเต† เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเดฒเตเด‚ เดธเดฎเดพเดจเดฎเดพเดฏ เด’เดฐเต "เด…เดกเดพเดชเตเดฑเตเดฑเตผ" เดšเต‡เตผเดคเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต
เดฎเดพเดฒเดฟเดจเตเดฏ เด•เต‹เดกเต. เดžเด™เตเด™เตพ เด…เดตเดฏเดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดธเดฟเด•เตเด•เดฟเดฒเตเดฒ - เดžเด™เตเด™เตพ เด“เตผเด•เตเด•เตเดจเตเดจเต
เดฎเดฟเด•เตเด•เดตเดพเดฑเตเด‚ เดŽเดฒเตเดฒเดพ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดฏเดฅเดพเตผเดคเตเดฅ เดคเตเดŸเด•เตเด•เด‚ เด…เตฝเดชเตเดชเด‚ เด…เด•เดฒเต†เดฏเดพเดฃเต†เดจเตเดจเต.

เด•เต‹เดกเต เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟ 0xB13A เดฒเต‡เด•เตเด•เต เดชเต‹เด•เดพเดคเตเดคเดคเดฟเดจเดพเตฝ, เดˆ เดฒเตŠเด•เตเด•เต‡เดทเดจเดฟเดฒเดพเดฃเต เด•เต‹เดกเต เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต†เดจเตเดจเต IDA เดคเดจเตเดจเต† เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดžเตเดžเดฟเดฒเตเดฒ. เด…เดคเต‡ เด•เดพเดฐเดฃเดคเตเดคเดพเตฝ, เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเดฟเดฒเต† เดฎเดฟเด•เตเด• เด•เต‹เดกเตเด•เดณเตเด‚ เด•เต‹เดกเดพเดฏเดฟ เด‡เดคเต เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเตเดจเตเดจเดฟเดฒเตเดฒ, เด‡เดคเต เดตเดฟเดถเด•เดฒเดจเด‚ เด•เตเดฑเดšเตเดšเต เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเดพเด•เตเด•เตเดจเตเดจเต. เด‡เดคเดพเดฃเต เด•เต‹เดกเต เดŽเดจเตเดจเต เดžเด™เตเด™เตพ IDA-เดฏเต‹เดŸเต เดชเดฑเดฏเตเดจเตเดจเต, เด‡เดคเดพเดฃเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเต:

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เดชเดŸเตเดŸเดฟเด• เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟ 0xB144 เตฝ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต. sub_494C-เดฏเดฟเตฝ เดŽเดจเตเดคเดพเดฃเต เด‰เดณเตเดณเดคเต?

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เดŽเตฝเด†เตผ เดฐเดœเดฟเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดˆ เดซเด‚เด—เตเดทเตป เดตเดฟเดณเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดฎเตเดฎเตเดชเต เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดš เดชเดŸเตเดŸเดฟเด•เดฏเตเดŸเต† (0xB144) เดตเดฟเดฒเดพเดธเด‚ เดจเดฎเตเด•เตเด•เต เดฒเดญเดฟเด•เตเด•เตเด‚. R0-เตฝ - เดˆ เดชเดŸเตเดŸเดฟเด•เดฏเดฟเดฒเต† เดธเต‚เดšเดฟเด•. เด…เดคเดพเดฏเดคเต, เดฎเต‚เดฒเตเดฏเด‚ เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดŽเดŸเตเดคเตเดคเต, LR-เดฒเต‡เด•เตเด•เต เดšเต‡เตผเดคเตเดคเต, เดซเดฒเด‚
เดชเต‹เด•เต‡เดฃเตเดŸ เดตเดฟเดฒเดพเดธเด‚. เดจเดฎเตเด•เตเด•เต เด‡เดคเต เด•เดฃเด•เตเด•เดพเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เดพเด‚: 0xB144 + [0xB144 + 8* 4] = 0xB144 + 0x120 = 0xB264. เดžเด™เตเด™เตพ เดธเตเดตเต€เด•เดฐเดฟเดšเตเดš เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดฏเดฟ เด…เด•เตเดทเดฐเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เด•เตเดฑเดšเตเดšเต เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เด•เดพเดฃเตเด•เดฏเตเด‚ เดตเต€เดฃเตเดŸเตเด‚ 0xB140 เดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต:

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เด‡เดชเตเดชเต‹เตพ เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเต‚เดšเดฟเด• 0x20 เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด“เดซเตเดธเต†เดฑเตเดฑเดฟเตฝ เด’เดฐเต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เด‰เดฃเตเดŸเดพเด•เตเด‚.

เดชเดŸเตเดŸเดฟเด•เดฏเตเดŸเต† เดตเดฒเดฟเดชเตเดชเด‚ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต, เด•เต‹เดกเดฟเตฝ เด…เดคเตเดคเดฐเด‚ เดจเดฟเดฐเดตเดงเดฟ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เด‰เดฃเตเดŸเดพเด•เตเด‚. เดตเดฟเดฒเดพเดธเด™เตเด™เตพ เดธเตเดตเดฎเต‡เดงเดฏเดพ เด•เดฃเด•เตเด•เดพเด•เตเด•เดพเดคเต†, เด‡เดคเต เดŽเด™เตเด™เดจเต†เดฏเต†เด™เตเด•เดฟเดฒเตเด‚ เดธเตเดตเดฏเดฎเต‡เดต เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเดฎเต‹ เดŽเดจเตเดจ เดšเต‹เดฆเตเดฏเด‚ เด‰เดฏเตผเดจเตเดจเตเดตเดฐเตเดจเตเดจเต. เด•เต‚เดŸเดพเดคเต† เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เดณเตเด‚ เดเดกเดฟเดŽเดฏเดฟเตฝ เด•เต‹เดกเต เดชเดพเดšเตเดšเต เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเตเด‚ เดžเด™เตเด™เดณเตเดŸเต† เดธเดนเดพเดฏเดคเตเดคเดฟเดจเต เดตเดฐเตเดจเตเดจเต:

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-เดฒเต‡เด•เตเด•เตเดณเตเดณ เดฎเดพเดฑเตเดฑเด‚ เด•เดพเดฃเตเด•:

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

IDA เดตเต€เดฃเตเดŸเตเด‚ เดˆ เดชเตเดฐเดฆเต‡เดถเดคเตเดคเต† เด’เดฐเต เด•เต‹เดกเดพเดฏเดฟ เด…เด‚เด—เต€เด•เดฐเดฟเดšเตเดšเดฟเดฒเตเดฒ. เดžเด™เตเด™เตพ เด…เดตเดณเต† เดธเดนเดพเดฏเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดตเดฟเดŸเต† เดฎเดฑเตเดฑเตŠเดฐเต เดกเดฟเดธเตˆเตป เด•เดพเดฃเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต:

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

BLX-เดจเต เดถเต‡เดทเดฎเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เดตเดณเดฐเต† เด…เตผเดคเตเดฅเดฎเตเดณเตเดณเดคเดพเดฏเดฟ เดคเต‹เดจเตเดจเตเดจเตเดจเดฟเดฒเตเดฒ, เด‡เดคเต เด’เดฐเตเดคเดฐเด‚ เดธเตเดฅเดพเดจเดšเดฒเดจเด‚ เดชเต‹เดฒเต†เดฏเดพเดฃเต. เดจเดฎเตเด•เตเด•เต sub_4964 เดจเต‹เด•เตเด•เดพเด‚:

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เด‡เดตเดฟเดŸเต† LR-เตฝ เด•เดฟเดŸเด•เตเด•เตเดจเตเดจ เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเตฝ เด’เดฐเต dword เดŽเดŸเตเด•เตเด•เตเดจเตเดจเต, เดˆ เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดšเต‡เตผเดคเตเดคเต, เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ เดฒเดญเดฟเดšเตเดš เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเต† เดฎเต‚เดฒเตเดฏเด‚ เดŽเดŸเตเดคเตเดคเต เดธเตเดฑเตเดฑเดพเด•เตเด•เดฟเตฝ เด‡เดŸเตเดจเตเดจเต. เด•เต‚เดŸเดพเดคเต†, LR-เดฒเต‡เด•เตเด•เต 4 เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต, เด…เด™เตเด™เดจเต† เดซเด‚เด—เตเดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเดŸเด™เตเด™เดฟเดฏเต†เดคเตเดคเดฟเดฏ เดถเต‡เดทเด‚, เด‡เดคเต‡ เด“เดซเตเดธเต†เดฑเตเดฑเต เด’เดดเดฟเดตเดพเด•เตเด•เดชเตเดชเต†เดŸเตเด‚. เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ POP {R1} เด•เดฎเดพเตปเดกเต เดธเตเดฑเตเดฑเดพเด•เตเด•เดฟเตฝ เดจเดฟเดจเตเดจเต เดซเดฒเดฎเดพเดฏเตเดฃเตเดŸเดพเด•เตเดจเตเดจ เดฎเต‚เดฒเตเดฏเด‚ เดŽเดŸเตเด•เตเด•เตเดจเตเดจเต. 0xB4BA + 0xEA = 0xB5A4 เดŽเดจเตเดจ เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเตฝ เดŽเดจเตเดคเดพเดฃเต เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพ เดจเต‹เด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด’เดฐเต เดตเดฟเดฒเดพเดธ เดชเดŸเตเดŸเดฟเด•เดฏเตเด•เตเด•เต เดธเดฎเดพเดจเดฎเดพเดฏ เด’เดจเตเดจเต เดจเดฟเด™เตเด™เตพ เด•เดพเดฃเตเด‚:

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เดˆ เดกเดฟเดธเตˆเตป เดชเดพเดšเตเดšเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เต‹เดกเดฟเตฝ เดจเดฟเดจเตเดจเต เดฐเดฃเตเดŸเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดฒเดญเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต: เด“เดซเตเดธเต†เดฑเตเดฑเตเด‚ เดจเดฟเด™เตเด™เตพ เดซเดฒเด‚ เดจเตฝเด•เต‡เดฃเตเดŸ เดฐเดœเดฟเดธเตเดฑเตเดฑเตผ เดจเดฎเตเดชเดฑเตเด‚. เดธเดพเดงเตเดฏเดฎเดพเดฏ เด“เดฐเต‹ เดฐเดœเดฟเดธเตเดฑเตเดฑเดฑเดฟเดจเตเด‚, เดจเดฟเด™เตเด™เตพ เด’เดฐเต เด•เต‹เดกเต เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

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 - เด•เต‚เดŸเดพเดคเต† เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•:

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เด‡เดคเดฟเดจเด•เด‚ เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดš เด˜เดŸเดจเด•เตพเด•เตเด•เต เดชเตเดฑเดฎเต‡, เด•เต‹เดกเดฟเตฝ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดตเดฏเตเด‚ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เดฎเตเดฎเตเดชเดคเตเดคเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเดฒเต†เดจเตเดจเดชเต‹เดฒเต†, BLX เดจเดฟเตผเดฆเตเดฆเต‡เดถเดคเตเดคเดฟเดจเต เดถเต‡เดทเด‚ เด’เดฐเต เด“เดซเตโ€Œเดธเต†เดฑเตเดฑเต เด‰เดฃเตเดŸเต:

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เดžเด™เตเด™เตพ 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"

เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดทเดจเตเดฑเต† เดซเดฒเด‚:

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เดซเด‚เด—เตโ€Œเดทเดจเดฟเตฝ เดŽเดฒเตเดฒเดพเด‚ เดชเดพเดšเตเดšเต เดšเต†เดฏเตโ€Œเดคเตเด•เดดเดฟเดžเตเดžเดพเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต IDA เด…เดคเดฟเดจเตเดฑเต† เดฏเดฅเดพเตผเดคเตเดฅ เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดšเต‚เดฃเตเดŸเดฟเด•เตเด•เดพเดฃเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚. เด‡เดคเต เดŽเดฒเตเดฒเดพ เดซเด‚เด—เตโ€Œเดทเตป เด•เต‹เดกเตเด‚ เด’เดฐเตเดฎเดฟเดšเตเดšเต เดšเต‡เตผเด•เตเด•เตเด‚, เด•เต‚เดŸเดพเดคเต† เด‡เดคเต HexRays เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดกเต€เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดฏเดพเดตเตเดจเตเดจเดคเดพเดฃเต.

เดธเตเดŸเตเดฐเดฟเด‚เด—เตเด•เตพ เดกเต€เด•เต‹เดกเดฟเด‚เด—เต

เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเดฟเดฒเต† เดฎเต†เดทเต€เตป เด•เต‹เดกเดฟเดจเตเดฑเต† เด…เดตเตเดฏเด•เตเดคเดค เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเตป เดžเด™เตเด™เตพ เดชเด เดฟเดšเตเดšเต libsgmainso-6.4.36.so เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดซเด‚เด—เตโ€Œเดทเตป เด•เต‹เดกเต เดฒเดญเดฟเดšเตเดšเต JNI_Onload.

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

เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดตเดฐเดฟเด•เตพ เดจเดฎเตเด•เตเด•เต เดธเต‚เด•เตเดทเตเดฎเดฎเดพเดฏเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเด‚:

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

เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดฒเดพเดฃเต sub_73E24 เด•เตเดฒเดพเดธเตเดธเดฟเดจเตเดฑเต† เดชเต‡เดฐเต เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟ เดกเต€เด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต. เดˆ เดซเด‚เด—เตโ€Œเดทเดจเตเดฑเต† เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดŽเดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ, เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตโ€Œเดค เดกเดพเดฑเตเดฑเดฏเตโ€Œเด•เตเด•เต เดธเดฎเดพเดจเดฎเดพเดฏ เดกเดพเดฑเตเดฑเดฏเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด’เดฐเต เดชเต‹เดฏเดฟเดจเตเดฑเตผ, เด’เดฐเต เดจเดฟเดถเตเดšเดฟเดค เดฌเดซเดฑเตเด‚ เด’เดฐเต เดจเดฎเตเดชเดฑเตเด‚ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเต. เดตเตเดฏเด•เตเดคเดฎเดพเดฏเตเด‚, เดซเด‚เด—เตโ€Œเดทเดจเต† เดตเดฟเดณเดฟเดšเตเดšเดคเดฟเดจเตเดถเต‡เดทเด‚, เดฌเดซเดฑเดฟเตฝ เด’เดฐเต เดกเต€เด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตโ€Œเดค เดฒเตˆเตป เด‰เดฃเตเดŸเดพเด•เตเด‚, เด•เดพเดฐเดฃเด‚ เด…เดคเต เดซเด‚เด—เตโ€Œเดทเดจเดฟเดฒเต‡เด•เตเด•เต เด•เตˆเดฎเดพเดฑเตเดจเตเดจเต. FindClass, เด•เตเดฒเดพเดธเดฟเดจเตเดฑเต† เดชเต‡เดฐเต เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเดพเดฏเดฟ เดŽเดŸเตเด•เตเด•เตเดจเตเดจเต. เด…เดคเดฟเดจเดพเตฝ, เดฌเดซเดฑเดฟเดจเตเดฑเต† เดตเดฒเตเดชเตเดชเดฎเต‹ เดตเดฐเดฟเดฏเตเดŸเต† เดจเต€เดณเดฎเต‹ เด†เดฃเต เดจเดฎเตเดชเตผ. เด•เตเดฒเดพเดธเตเดธเดฟเดจเตเดฑเต† เดชเต‡เดฐเต เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เดพเด‚, เดจเดฎเตเดฎเตพ เดถเดฐเดฟเดฏเดพเดฏ เดฆเดฟเดถเดฏเดฟเดฒเดพเดฃเต‹ เดชเต‹เด•เตเดจเตเดจเดคเต†เดจเตเดจเต เด…เดคเต เดจเดฎเตเดฎเต‹เดŸเต เดชเดฑเดฏเตเด‚. เดŽเดจเตเดคเดพเดฃเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เดจเดฎเตเด•เตเด•เต เดธเต‚เด•เตเดทเตเดฎเดฎเดพเดฏเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเด‚ 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@" (เด‡เดคเตŠเดฐเต เด•เต€เดฏเดพเดฃเต†เดจเตเดจเต เดŠเดนเดฟเด•เตเด•เดพเตป เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต), เดฎเดฑเตเดฑเตŠเดจเตเดจเดฟเตฝ เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดค เดกเดพเดฑเตเดฑ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดฐเดฃเตเดŸเต เดตเดธเตเดคเตเด•เตเด•เดณเตเด‚ เด’เดฐเต เดจเดฟเดถเตเดšเดฟเดค เด˜เดŸเดจเดฏเดฟเตฝ เดธเตเดฅเดพเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เดซเด‚เด—เตเดทเดจเดฟเดฒเต‡เด•เตเด•เต เด•เตˆเดฎเดพเดฑเตเดจเตเดจเต เดธเดฌเต_6115 เดธเดฟ. เดˆ เด˜เดŸเดจเดฏเดฟเตฝ เดฎเต‚เดฒเตเดฏเด‚ 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 เดจเต‹เด•เตเด•เตเด•: เดซเด‚เด—เตโ€Œเดทเดจเดฟเดฒเต‡เด•เตเด•เต เดธเดฌเต_6364 เดธเดฟ เดฎเตเตป เดซเด‚เด—เตเดทเดจเดฟเตฝ เดšเต‡เตผเดคเตเดค เด˜เดŸเดจเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเต, เด…เดคเดพเดฏเดคเต เด•เต€เดฏเตเด‚ เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดค เดกเดพเดฑเตเดฑเดฏเตเด‚. เดจเดฟเด™เตเด™เตพ เดธเต‚เด•เตเดทเตเดฎเดฎเดพเดฏเดฟ เดจเต‹เด•เตเด•เดฟเดฏเดพเตฝ เดธเดฌเต_6364 เดธเดฟ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดคเดฟเตฝ RC4 เด…เตฝเด—เต‹เดฐเดฟเดคเด‚ เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚.

เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เด…เตฝเด—เต‹เดฐเดฟเดคเดตเตเด‚ เด’เดฐเต เด•เต€เดฏเตเด‚ เด‰เดฃเตเดŸเต. เด•เตเดฒเดพเดธเตเดธเดฟเดจเตเดฑเต† เดชเต‡เดฐเต เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เดพเด‚. เดธเด‚เดญเดตเดฟเดšเตเดšเดคเต เด‡เดคเดพ: com/taobao/wireless/security/adapter/JNICLibrary. เด•เตŠเดณเตเดณเดพเด‚! เดžเด™เตเด™เตพ เดถเดฐเดฟเดฏเดพเดฏ เดชเดพเดคเดฏเดฟเดฒเดพเดฃเต.

เด•เดฎเดพเตปเดกเต เดŸเตเดฐเต€

เด‡เดจเดฟ เดจเดฎเตเดฎเตพ เด’เดฐเต เดตเต†เดฒเตเดฒเตเดตเดฟเดณเดฟ เด•เดฃเตเดŸเต†เดคเตเดคเดฃเด‚ เดฐเดœเดฟเดธเตเดฑเตเดฑเตผ เดธเตเดตเดฆเต‡เดถเดฟเด•เตพ, เด…เดคเต เดซเด‚เด—เตเดทเดจเดฟเดฒเต‡เด•เตเด•เต เดจเดฎเตเดฎเต† เดšเต‚เดฃเตเดŸเดฟเด•เตเด•เดพเดฃเดฟเด•เตเด•เตเด‚ doCommandNative. เดŽเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจ เดซเด‚เด—เตเดทเดจเตเด•เตพ เดจเต‹เด•เตเด•เดพเด‚ JNI_Onload, เดžเด™เตเด™เตพ เด…เดคเต เด•เดฃเตเดŸเต†เดคเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต เด‰เดช_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 เดŽเดจเตเดจเดฟเดต เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เดพเด‚), เด’เดฐเต เด•เดฎเดพเตปเดกเต เดŸเตเดฐเต€ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเต.

เด‡เดคเตเดชเต‡เดพเดฒเต†เดพเดจเตเดจเต:

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เดฎเดฐเด‚ เดšเดฒเดจเดพเดคเตเดฎเด•เดฎเดพเดฏเดฟ เดจเดฟเดฑเดžเตเดžเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต JNI_Onload.
เดฎเต‚เดจเตเดจเต เด…เด•เตเด•เด™เตเด™เตพ เดฎเดฐเดคเตเดคเดฟเดฒเต† เดชเดพเดคเดฏเต† เดŽเตปเด•เต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดฎเดฐเดคเตเดคเดฟเดจเตเดฑเต† เด“เดฐเต‹ เด‡เดฒเดฏเดฟเดฒเตเด‚ เด…เดจเตเดฌเดจเตเดง เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเดฑเต† เดชเต‹เด•เตเด•เต เดšเต†เดฏเตเดค เดตเดฟเดฒเดพเดธเด‚ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด•เต€ เดชเดพเดฐเดจเตเดฑเต เดจเต‹เดกเดฟเดฒเดพเดฃเต. เด‰เดชเดฏเต‹เด—เดฟเดšเตเดš เดŽเดฒเตเดฒเดพ เด˜เดŸเดจเด•เดณเตเด‚ เดจเดฟเด™เตเด™เตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดฟเดฏเดพเตฝ, เดžเด™เตเด™เตพเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดซเด‚เด—เตเดทเตป เดŸเตเดฐเต€เดฏเดฟเตฝ เดšเต‡เตผเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เดกเดฟเดฒเต† เดธเตเดฅเดฒเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเตเดจเตเดจเดคเต เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเตเดณเตเดณ เด•เดพเดฐเตเดฏเดฎเดฒเตเดฒ (เด‡เดคเดฟเดจเด•เด‚ เดตเดฒเดฟเดฏเตŠเดฐเต เดฒเต‡เด–เดจเด‚ เดตเต€เตผเด•เตเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เด…เดตเดฏเต† เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ).

เด•เต‚เดŸเตเดคเตฝ เด…เดตเตเดฏเด•เตเดคเดค

เดŸเตเดฐเดพเดซเดฟเด•เต เดกเต€เด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸ เดซเด‚เด—เตโ€Œเดทเดจเตเดฑเต† เดตเดฟเดฒเดพเดธเด‚ เดžเด™เตเด™เตพเด•เตเด•เต เดฒเดญเดฟเดšเตเดšเต: 0x5F1AC. เดŽเดจเตเดจเดพเตฝ เดธเดจเตเดคเต‹เดทเดฟเด•เตเด•เดพเตป เดตเดณเดฐเต† เดจเต‡เดฐเดคเตเดคเต† เดคเดจเตเดจเต†: เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดจเตเดฑเต† เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดžเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เดฎเดฑเตเดฑเตŠเดฐเต เดธเตผเดชเตเดฐเตˆเดธเต เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต.

เดœเดพเดต เด•เต‹เดกเดฟเตฝ เดฐเต‚เดชเต€เด•เดฐเดฟเดšเตเดš เด…เดฑเต‡เดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดฒเดญเดฟเดšเตเดš เดถเต‡เดทเด‚, เดจเดฎเตเด•เตเด•เต เดฒเดญเดฟเด•เตเด•เตเด‚
0x4D070 เดŽเดจเตเดจ เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเตเดณเตเดณ เดซเด‚เด—เตโ€Œเดทเดจเดฟเดฒเต‡เด•เตเด•เต. เด‡เดตเดฟเดŸเต† เดฎเดฑเตเดฑเตŠเดฐเต เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เด•เต‹เดกเต เด…เดตเตเดฏเด•เตเดคเดค เดจเดฎเตเดฎเต† เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดžเด™เตเด™เตพ R7, R4 เดŽเดจเตเดจเดฟเดตเดฏเดฟเตฝ เดฐเดฃเตเดŸเต เดธเต‚เดšเดฟเด•เด•เตพ เดธเตเดฅเดพเดชเดฟเดšเตเดšเต:

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เดžเด™เตเด™เตพ เด†เดฆเตเดฏ เดธเต‚เดšเดฟเด• R11 เดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเตเดจเตเดจเต:

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เด’เดฐเต เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดตเดฟเดฒเดพเดธเด‚ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เด’เดฐเต เดธเต‚เดšเดฟเด• เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•:

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เด†เดฆเตเดฏเดคเตเดคเต† เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดฏเดคเดฟเดจเตเดถเต‡เดทเด‚, เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดธเต‚เดšเดฟเด• เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต R4-เตฝ เด†เดฃเต. เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ 230 เด˜เดŸเด•เด™เตเด™เตพ เด‰เดฃเตเดŸเต.

เด…เดคเดฟเดจเต เดŽเดจเตเดคเต เดšเต†เดฏเตเดฏเดฃเด‚? เด‡เดคเตŠเดฐเต เดธเตเดตเดฟเดšเตเดšเต เด†เดฃเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต IDA-เดจเต‹เดŸเต เดชเดฑเดฏเดพเด‚: เดŽเดกเดฟเดฑเตเดฑเต -> เดฎเดฑเตเดฑเตเดณเตเดณเดต -> เดธเตเดตเดฟเดšเตเดšเต เดเดกเดฟเดฏเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเด•.

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดŸเดพเด•เตเดจเตเดจ เด•เต‹เดกเต เดญเดฏเด™เตเด•เดฐเดฎเดพเดฃเต. เดชเด•เตเดทเต‡, เด…เดคเดฟเดจเตเดฑเต† เด•เดพเดŸเตเดŸเดฟเดฒเต‚เดŸเต† เด•เดŸเดจเตเดจเตเดชเต‹เด•เตเดฎเตเดชเต‹เตพ, เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดคเดฟเดจเด•เด‚ เดชเดฐเดฟเดšเดฟเดคเดฎเดพเดฏ เด’เดฐเต เดซเด‚เด—เตโ€Œเดทเดจเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด’เดฐเต เด•เต‹เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚ เดธเดฌเต_6115 เดธเดฟ:

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เด•เต‡เดธเต 3-เตฝ RC4 เด…เตฝเด—เต‹เดฐเดฟเดคเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดกเต€เด•เตเดฐเดฟเดชเตเดทเตป เด‰เดณเตเดณ เด’เดฐเต เดธเตเดตเดฟเดšเตเดšเต เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต. เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดซเด‚เด—เตเดทเดจเดฟเดฒเต‡เด•เตเด•เต เด•เตˆเดฎเดพเดฑเดฟเดฏ เด˜เดŸเดจ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต doCommandNative. เดจเดฎเตเด•เตเด•เต เด…เดตเดฟเดŸเต† เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเดคเต เด“เตผเด•เตเด•เดพเด‚ magicInt เดฎเต‚เดฒเตเดฏเด‚ 16. เดžเด™เตเด™เตพ เด…เดจเตเดฌเดจเตเดง เด•เต‡เดธเต เดจเต‹เด•เตเด•เตเดจเตเดจเต - เดจเดฟเดฐเดตเดงเดฟ เดธเด‚เด•เตเดฐเดฎเดฃเด™เตเด™เตพเด•เตเด•เต เดถเต‡เดทเด‚ เด…เตฝเด—เต‹เดฐเดฟเดคเด‚ เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เด•เต‹เดกเต เดžเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเตเดจเตเดจเต.

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เด‡เดคเดพเดฃเต AES!

เด…เตฝเด—เต‹เดฐเดฟเดคเด‚ เดจเดฟเดฒเดตเดฟเดฒเตเดฃเตเดŸเต, เด…เดคเดฟเดจเตเดฑเต† เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดจเต‡เดŸเตเด• เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเดคเต: เดฎเต‹เดกเต, เด•เต€, เด’เดฐเตเดชเด•เตเดทเต‡, เด‡เดจเต€เดทเตเดฏเดฒเตˆเดธเต‡เดทเตป เดตเต†เด•เตเดฑเตเดฑเตผ (เด…เดคเดฟเดจเตเดฑเต† เดธเดพเดจเตเดจเดฟเดงเตเดฏเด‚ เดŽเด‡เดŽเดธเต เด…เตฝเด—เต‹เดฐเดฟเดคเดคเตเดคเดฟเดจเตเดฑเต† เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดฎเต‹เดกเดฟเดจเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต). เดซเด‚เด—เตเดทเตป เด•เต‹เดณเดฟเดจเต เดฎเตเดฎเตเดชเต เด…เดตเดฐเตเดฎเดพเดฏเตเดณเตเดณ เด˜เดŸเดจ เดŽเดตเดฟเดŸเต†เดฏเต†เด™เตเด•เดฟเดฒเตเด‚ เดฐเต‚เดชเต€เด•เดฐเดฟเด•เตเด•เดฃเด‚ เดธเดฌเต_6115 เดธเดฟ, เดŽเดจเตเดจเดพเตฝ เด•เต‹เดกเดฟเดจเตเดฑเต† เดˆ เดญเดพเด—เด‚ เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเต เด…เดตเตเดฏเด•เตเดคเดฎเดพเดฃเต, เด…เดคเดฟเดจเดพเตฝ เด•เต‹เดกเต เดชเดพเดšเตเดšเต เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เด†เดถเดฏเด‚ เด‰เดฏเตผเดจเตเดจเตเดตเดฐเตเดจเตเดจเต, เด…เด™เตเด™เดจเต† เดกเต€เด•เตเดฐเดฟเดชเตเดทเตป เดซเด‚เด—เตเดทเดจเตเดฑเต† เดŽเดฒเตเดฒเดพ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเตเด‚ เด’เดฐเต เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต เดตเดฒเดฟเดšเตเดšเต†เดฑเดฟเดฏเดชเตเดชเต†เดŸเตเด‚.

เดชเดพเดšเตเดšเต

เด…เดธเด‚เดฌเตเดฒเดฟ เดญเดพเดทเดฏเดฟเตฝ เดŽเดฒเตเดฒเดพ เดชเดพเดšเตเดšเต เด•เต‹เดกเตเด•เดณเตเด‚ เดธเตเดตเดฎเต‡เดงเดฏเดพ เดŽเดดเตเดคเดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด†เตปเดกเตเดฐเต‹เดฏเดฟเดกเต เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เดพเด‚, เดžเด™เตเด™เดณเตเดŸเต† เดกเต€เด•เตเดฐเดฟเดชเตเดทเตป เดซเด‚เด—เตโ€Œเดทเดจเตเดฑเต† เด…เดคเต‡ เด‡เตปเดชเตเดŸเตเดŸเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดซเด‚เด—เตเดทเตป เด…เดตเดฟเดŸเต† เดŽเดดเตเดคเตเด•เดฏเตเด‚ เด’เดฐเต เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต เดŽเดดเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเดพเด‚, เดคเตเดŸเตผเดจเตเดจเต เด•เด‚เดชเตˆเดฒเตผ เดšเต†เดฏเตเดฏเตเดจเตเดจ เด•เต‹เดกเต เดชเด•เตผเดคเตเดคเดฟ เด’เดŸเตเดŸเดฟเด•เตเด•เตเด•. เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•.

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเตผ เดŸเต€เดฎเดฟเดฒเต† เดžเด™เตเด™เดณเตเดŸเต† เดธเตเดนเตƒเดคเตเดคเตเด•เตเด•เดณเตเด‚ เด•เต‹เดกเต เดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดธเต—เด•เดฐเตเดฏเด‚ เดเดฑเตเดฑเต†เดŸเตเดคเตเดคเต. เด“เดฐเต‹ เดซเด‚เด—เตโ€Œเดทเดจเตเดฑเต†เดฏเตเด‚ เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ เดจเดฎเตเด•เตเด•เต เด—เดพเตผเดฌเต‡เดœเต เด•เต‹เดกเต เด‰เดฃเตเดŸเต†เดจเตเดจเต เด“เตผเด•เตเด•เดพเด‚, เด…เดคเต เดฎเดฑเตเดฑเต‡เดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚. เดตเดณเดฐเต† เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฃเต ๐Ÿ™‚ เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดŸเดพเตผเด—เต†เดฑเตเดฑเต เดซเด‚เด—เตเดทเดจเตเดฑเต† เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ เด’เดฐเต เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต เดŽเดฒเตเดฒเดพ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเตเด‚ เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เดกเดฟเดจเต เดฎเดคเดฟเดฏเดพเดฏ เด‡เดŸเดฎเดฟเดฒเตเดฒ. เดŽเดจเดฟเด•เตเด•เต เด…เดคเดฟเดจเต† เดญเดพเด—เด™เตเด™เดณเดพเดฏเดฟ เดตเดฟเดญเดœเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดฏเตฝ เดซเด‚เด—เตเดทเดจเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเดพเดฒเดฟเดจเตเดฏ เดฌเตเดฒเต‹เด•เตเด•เตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดฟเดตเดจเตเดจเต. เด†เด•เต† เดจเดพเดฒเต เดญเดพเด—เด™เตเด™เตพ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต.

เด†เดฆเตเดฏ เดญเดพเด—เด‚:

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

ARM เด†เตผเด•เตเด•เดฟเดŸเต†เด•เตเดšเดฑเดฟเตฝ, เด†เดฆเตเดฏเดคเตเดคเต† เดจเดพเดฒเต เดซเด‚เด—เตเดทเตป เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ R0-R3 เดฐเดœเดฟเดธเตเดฑเตเดฑเดฑเตเด•เดณเดฟเดฒเต‚เดŸเต† เด•เดŸเดจเตเดจเตเดชเต‹เด•เตเดจเตเดจเต, เดฌเดพเด•เตเด•เดฟเดฏเตเดณเตเดณเดต, เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดธเตเดฑเตเดฑเดพเด•เตเด•เดฟเดฒเต‚เดŸเต† เด•เดŸเดจเตเดจเตเดชเต‹เด•เตเดจเตเดจเต. เดŽเตฝเด†เตผ เดฐเดœเดฟเดธเตเดฑเตเดฑเตผ เดฑเดฟเดŸเตเดŸเต‡เตบ เดตเดฟเดฒเดพเดธเด‚ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจเต. เด‡เดคเต†เดฒเตเดฒเดพเด‚ เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เด…เดคเตเดตเดดเดฟ เดžเด™เตเด™เตพ เด…เดคเดฟเดจเตเดฑเต† เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เด‰เดชเต‡เด•เตเดทเดฟเดšเตเดšเดคเดฟเดจเตเดถเต‡เดทเด‚ เดซเด‚เด—เตเดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚. เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดฟเตฝ เดžเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดŽเดฒเตเดฒเดพ เดฐเดœเดฟเดธเตเดฑเตเดฑเดฑเตเด•เดณเตเด‚ เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เด…เดคเดฟเดจเดพเตฝ เดžเด™เตเด™เตพ PUSH.W {R0-R10,LR} เดšเต†เดฏเตเดฏเตเดจเตเดจเต. R7-เตฝ, เดธเตเดฑเตเดฑเดพเด•เตเด•เต เดตเดดเดฟ เดซเด‚เด—เตเดทเดจเดฟเดฒเต‡เด•เตเด•เต เดชเดพเดธเดพเด•เตเด•เดฟเดฏ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเดฟเดจเตเดฑเต† เดตเดฟเดฒเดพเดธเด‚ เดจเดฎเตเด•เตเด•เต เดฒเดญเดฟเด•เตเด•เตเด‚.

เดซเด‚เด—เตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต fopen เดจเดฎเตเด•เตเด•เต เดซเดฏเตฝ เดคเตเดฑเด•เตเด•เดพเด‚ /data/local/tmp/aes "ab" เดฎเต‹เดกเดฟเตฝ
เด…เดคเดพเดฏเดคเต เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เดฒเดฟเดจเต. R0-เตฝ เดžเด™เตเด™เตพ เดซเดฏเดฒเดฟเดจเตเดฑเต† เดชเต‡เดฐเดฟเดจเตเดฑเต† เดตเดฟเดฒเดพเดธเด‚ เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต, R1-เตฝ - เดฎเต‹เดกเต เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ เดตเดฐเดฟเดฏเตเดŸเต† เดตเดฟเดฒเดพเดธเด‚. เด‡เดตเดฟเดŸเต† เด—เดพเตผเดฌเต‡เดœเต เด•เต‹เดกเต เด…เดตเดธเดพเดจเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ เดžเด™เตเด™เตพ เด…เดŸเตเดคเตเดค เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดจเต€เด™เตเด™เตเดจเตเดจเต. เด‡เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดคเตเดŸเดฐเตเดจเตเดจเดคเดฟเดจเต, เดฎเดพเดฒเดฟเดจเตเดฏเดคเตเดคเต† เดฎเดฑเดฟเด•เดŸเดจเตเดจเต เดซเด‚เด—เตเดทเดจเตเดฑเต† เดฏเดฅเดพเตผเดคเตเดฅ เด•เต‹เดกเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดžเด™เตเด™เตพ เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ เด‡เดŸเตเดŸเต, เดฎเดพเดฒเดฟเดจเตเดฏเดคเตเดคเดฟเดจเต เดชเด•เดฐเด‚ เดžเด™เตเด™เตพ เดชเดพเดšเตเดšเดฟเดจเตเดฑเต† เดคเตเดŸเตผเดšเตเดš เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต.

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต fopen.

เดซเด‚เด—เตเดทเดจเตเดฑเต† เด†เดฆเตเดฏ เดฎเต‚เดจเตเดจเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ AES เดคเดฐเด‚ เด‰เดฃเตเดŸเต int. เดžเด™เตเด™เตพ เดฐเดœเดฟเดธเตเดฑเตเดฑเดฑเตเด•เตพ เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ เดธเตเดฑเตเดฑเดพเด•เตเด•เดฟเดฒเต‡เด•เตเด•เต เดธเด‚เดฐเด•เตเดทเดฟเดšเตเดšเดคเดฟเดจเดพเตฝ, เดจเดฎเตเด•เตเด•เต เดซเด‚เด—เตเดทเตป เดชเดพเดธเดพเด•เตเด•เดพเด‚ fwrite เดธเตเดฑเตเดฑเดพเด•เตเด•เดฟเตฝ เด…เดตเดฐเตเดŸเต† เดตเดฟเดฒเดพเดธเด™เตเด™เตพ.

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ เดจเดฎเตเด•เตเด•เต เดฎเต‚เดจเตเดจเต เด˜เดŸเดจเด•เตพ เด‰เดฃเตเดŸเต, เด…เดคเดฟเตฝ เดกเดพเดฑเตเดฑ เดตเดฒเตเดชเตเดชเดตเตเด‚ เด•เต€, เด‡เดจเต€เดทเตเดฏเดฒเตˆเดธเต‡เดทเตป เดตเต†เด•เตเดฑเตเดฑเตผ, เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดค เดกเดพเดฑเตเดฑ เดŽเดจเตเดจเดฟเดตเดฏเตเด•เตเด•เตเดณเตเดณ เดกเดพเดฑเตเดฑเดฏเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด’เดฐเต เดชเต‹เดฏเดฟเดจเตเดฑเดฑเตเด‚ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เด…เดตเดธเดพเดจเด‚, เดซเดฏเตฝ เด…เดŸเดฏเตเด•เตเด•เตเด•, เดฐเดœเดฟเดธเตเดฑเตเดฑเดฑเตเด•เตพ เดชเตเดจเดƒเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเด•, เดฏเดฅเดพเตผเดคเตเดฅ เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด‚ เด•เตˆเดฎเดพเดฑเตเด• AES.

เดชเดพเดšเตเดšเต เดšเต†เดฏเตโ€Œเดค เดฒเตˆเดฌเตเดฐเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เตพ เด’เดฐเต APK เดถเต‡เด–เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด’เดชเตเดชเดฟเดŸเตเด•เดฏเตเด‚ เด‰เดชเด•เดฐเดฃเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต/เดŽเดฎเตเดฒเต‡เดฑเตเดฑเดฑเดฟเดฒเต‡เด•เตเด•เต เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดžเด™เตเด™เดณเตเดŸเต† เดกเด‚เดชเต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเดคเตเด‚ เดงเดพเดฐเดพเดณเด‚ เดกเดพเดฑเตเดฑ เด…เดตเดฟเดŸเต† เดŽเดดเตเดคเตเดจเตเดจเดคเตเด‚ เดžเด™เตเด™เตพ เด•เดพเดฃเตเดจเตเดจเต. เดฌเตเดฐเต—เดธเตผ เดŸเตเดฐเดพเดซเดฟเด•เตเด•เดฟเดจเต เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ เดŽเตปเด•เตเดฐเดฟเดชเตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดŽเดฒเตเดฒเดพ เดŽเตปเด•เตเดฐเดฟเดชเตเดทเดจเตเด•เดณเตเด‚ เดชเตเดฐเดธเตเดคเตเดค เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดฒเต‚เดŸเต† เด•เดŸเดจเตเดจเตเดชเต‹เด•เตเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เดšเดฟเดฒ เด•เดพเดฐเดฃเด™เตเด™เดณเดพเตฝ เด†เดตเดถเตเดฏเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เด‡เดฒเตเดฒ, เด†เดตเดถเตเดฏเดฎเดพเดฏ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดŸเตเดฐเดพเดซเดฟเด•เตเด•เดฟเตฝ เดฆเตƒเดถเตเดฏเดฎเดพเด•เดฟเดฒเตเดฒ. เด†เดตเดถเตเดฏเดฎเดพเดฏ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดŸเดคเตเดคเดพเตป เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเตผ เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดตเดฐเต† เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป, เดจเต‡เดฐเดคเตเดคเต† เดฒเดญเดฟเดšเตเดš เดธเต†เตผเดตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดค เดชเตเดฐเดคเดฟเด•เดฐเดฃเด‚ เดŽเดŸเตเดคเตเดคเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดตเต€เดฃเตเดŸเตเด‚ เดชเดพเดšเตเดšเต เดšเต†เดฏเตเดฏเดพเด‚: เดชเตเดฐเดงเดพเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเดฑเต† 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/" เดฒเดญเดฟเด•เตเด•เตเด‚, APK-เดฏเดฟเตฝ เด† เดชเต‡เดฐเดฟเตฝ เด’เดฐเต เดซเต‹เตพเดกเตผ เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดšเต เด…เดตเดฟเดŸเต† เด…เดฃเตเดฃเดพเตป เดฌเตเดฐเต—เดธเตผ เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเต เดšเต‡เตผเด•เตเด•เตเด•.

เดžเด™เตเด™เตพ เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเดจเตเดจเต, เด’เดชเตเดชเดฟเดŸเตเดจเตเดจเต, เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต. เดฌเดฟเด™เตเด•เต‹! เดžเด™เตเด™เตพเด•เตเด•เต เดคเดพเด•เตเด•เต‹เดฒเตเดฃเตเดŸเต!

MitM

เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เด•เต€เดฏเตเด‚ เด•เต€เด•เตเด•เต เดคเตเดฒเตเดฏเดฎเดพเดฏ เด’เดฐเต เด‡เดจเต€เดทเตเดฏเดฒเตˆเดธเต‡เดทเตป เดตเต†เด•เตโ€ŒเดŸเดฑเตเด‚ เดฒเดญเดฟเดšเตเดšเต. CBC เดฎเต‹เดกเดฟเตฝ เดธเต†เตผเดตเตผ เดชเตเดฐเดคเดฟเด•เดฐเดฃเด‚ เดกเต€เด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เดพเด‚.

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

MD5, โ€œextract_unzipsizeโ€, เด’เดฐเต เดจเดฎเตเดชเตผ เดŽเดจเตเดจเดฟเดตเดฏเตเด•เตเด•เต เดธเดฎเดพเดจเดฎเดพเดฏ เด†เตผเด•เตเด•เตˆเดตเต URL เดžเด™เตเด™เตพ เด•เดพเดฃเตเดจเตเดจเต. เดžเด™เตเด™เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต: เด†เตผเด•เตเด•เตˆเดตเดฟเดจเตเดฑเต† MD5 เดธเดฎเดพเดจเดฎเดพเดฃเต, เดชเดพเดฏเตเด•เตเด•เต เดšเต†เดฏเตเดฏเดพเดคเตเดค เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเตเดŸเต† เดตเดฒเตเดชเตเดชเด‚ เด’เดจเตเดจเตเดคเดจเตเดจเต†เดฏเดพเดฃเต. เดˆ เดฒเตˆเดฌเตเดฐเดฑเดฟ เดชเดพเดšเตเดšเต เดšเต†เดฏเตเดคเต เดฌเตเดฐเต—เดธเดฑเดฟเดจเต เดจเตฝเด•เดพเตป เดžเด™เตเด™เตพ เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเต. เดžเด™เตเด™เดณเตเดŸเต† เดชเดพเดšเตเดšเต เดšเต†เดฏเตโ€Œเดค เดฒเตˆเดฌเตเดฐเดฑเดฟ เดฒเต‹เดกเตเดšเต†เดฏเตโ€Œเดคเตเดตเต†เดจเตเดจเต เด•เดพเดฃเดฟเด•เตเด•เดพเตป, โ€œPWNED!โ€ เดŽเดจเตเดจ เดตเดพเดšเด•เด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต SMS เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด’เดฐเต เด‰เดฆเตเดฆเต‡เดถเตเดฏเด‚ เดžเด™เตเด™เตพ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด‚. เดธเต†เตผเดตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฐเดฃเตเดŸเต เดชเตเดฐเดคเดฟเด•เดฐเดฃเด™เตเด™เตพ เดžเด™เตเด™เตพ เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเด‚: puds.ucweb.com/upgrade/index.xhtml เด†เตผเด•เตเด•เตˆเดตเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚. เด†เดฆเตเดฏเดคเตเดคเต‡เดคเดฟเตฝ เดžเด™เตเด™เตพ MD5 เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเต (เด…เตบเดชเดพเด•เตเด•เต เดšเต†เดฏเตเดคเดคเดฟเดจเต เดถเต‡เดทเด‚ เดตเดฒเตเดชเตเดชเด‚ เดฎเดพเดฑเดฟเดฒเตเดฒ), เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเดฟเตฝ เดžเด™เตเด™เตพ เดชเดพเดšเตเดšเต เดšเต†เดฏเตเดค เดฒเตˆเดฌเตเดฐเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด†เตผเด•เตเด•เตˆเดตเต เดจเตฝเด•เตเดจเตเดจเต.

เดฌเตเดฐเต—เดธเตผ เดจเดฟเดฐเดตเดงเดฟ เดคเดตเดฃ เด†เตผเด•เตเด•เตˆเดตเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ เด…เดคเต เด’เดฐเต เดชเดฟเดถเด•เต เดจเตฝเด•เตเดจเตเดจเต. เดชเตเดฐเดคเตเดฏเด•เตเดทเดคเตเดคเดฟเตฝ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚
เด…เดตเตป เด‡เดทเตเดŸเดชเตเดชเต†เดŸเตเดจเตเดจเดฟเดฒเตเดฒ. เดˆ เดฎเด™เตเด™เดฟเดฏ เดซเต‹เตผเดฎเดพเดฑเตเดฑเต เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดคเดคเดฟเดจเตเดฑเต† เดซเดฒเดฎเดพเดฏเดฟ, เดธเต†เตผเดตเตผ เด†เตผเด•เตเด•เตˆเดตเดฟเดจเตเดฑเต† เดตเดฒเตเดชเตเดชเดตเตเด‚ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเตเดตเต†เดจเตเดจเต เดฎเดจเดธเตเดธเดฟเดฒเดพเดฏเดฟ:

เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เด‡เดคเต LEB128-เตฝ เดŽเตปเด•เต‹เดกเต เดšเต†เดฏเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดชเดพเดšเตเดšเดฟเดจเต เดถเต‡เดทเด‚, เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเตเดฎเดพเดฏเตเดณเตเดณ เด†เตผเด•เตเด•เตˆเดตเดฟเดจเตเดฑเต† เดตเดฒเตเดชเตเดชเด‚ เด…เดฒเตเดชเด‚ เดฎเดพเดฑเดฟ, เด…เดคเดฟเดจเดพเตฝ เด†เตผเด•เตเด•เตˆเดตเต เดตเดณเดšเตเดšเตŠเดŸเดฟเดšเตเดšเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดคเดคเดพเดฏเดฟ เดฌเตเดฐเต—เดธเตผ เด•เดฃเด•เตเด•เดพเด•เตเด•เดฟ, เดจเดฟเดฐเดตเดงเดฟ เดถเตเดฐเดฎเด™เตเด™เตพเด•เตเด•เต เดถเต‡เดทเด‚ เด…เดคเต เด’เดฐเต เดชเดฟเดถเด•เต เดŽเดฑเดฟเดžเตเดžเต.

เดžเด™เตเด™เตพ เด†เตผเด•เตเด•เตˆเดตเดฟเดจเตเดฑเต† เดตเดฒเตเดชเตเดชเด‚ เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต ... เด’เดชเตเดชเด‚ - เดตเดฟเดœเดฏเด‚! ๐Ÿ™‚ เดซเดฒเด‚ เดตเต€เดกเดฟเดฏเต‹เดฏเดฟเตฝ เด‰เดฃเตเดŸเต.

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

เด…เดจเดจเตเดคเดฐเดซเดฒเด™เตเด™เดณเตเด‚ เดกเต†เดตเดฒเดชเตเดชเตผ เดชเตเดฐเดคเดฟเด•เดฐเดฃเดตเตเด‚

เด…เดคเตเดชเต‹เดฒเต† เดคเดจเตเดจเต†, เดนเดพเด•เตเด•เตผเดฎเดพเตผเด•เตเด•เต เดฏเตเดธเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเดจเตเดฑเต† เดธเตเดฐเด•เตเดทเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดค เดซเต€เดšเตเดšเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เตเดทเตเดฆเตเดฐเด•เดฐเดฎเดพเดฏ เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เตพ เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚. เดˆ เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เตพ เดฌเตเดฐเต—เดธเดฑเดฟเดจเตเดฑเต† เดชเดถเตเดšเดพเดคเตเดคเดฒเดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚, เด…เดคเดฟเดจเดพเตฝ เด…เดตเตผเด•เตเด•เต เด…เดคเดฟเดจเตเดฑเต† เดŽเดฒเตเดฒเดพ เดธเดฟเดธเตเดฑเตเดฑเด‚ เด…เดจเตเดฎเดคเดฟเด•เดณเตเด‚ เดฒเดญเดฟเด•เตเด•เตเด‚. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดซเดฟเดทเดฟเด‚เด—เต เดตเดฟเตปเดกเต‹เด•เตพ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเต, เด•เต‚เดŸเดพเดคเต† เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเตฝ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดฒเต‹เด—เดฟเดจเตเด•เตพ, เดชเดพเดธเตโ€Œเดตเต‡เดกเตเด•เตพ, เด•เตเด•เตเด•เดฟเด•เตพ เดŽเดจเตเดจเดฟเดตเดฏเตเตพเดชเตเดชเต†เดŸเต† เด“เดฑเดžเตเดšเต เดšเตˆเดจเต€เดธเต เดธเตโ€Œเด•เตเดตเดฟเดฑเดฒเดฟเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจ เดซเดฏเดฒเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด†เด•เตโ€Œเดธเดธเตเดธเต.

เดžเด™เตเด™เตพ UC เดฌเตเดฐเต—เดธเดฑเดฟเดจเตเดฑเต† เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเดฐเต† เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเด•เดฏเตเด‚ เดžเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏ เดชเตเดฐเดถเตโ€Œเดจเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด…เดตเดฐเต† เด…เดฑเดฟเดฏเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดชเด•เดŸเดธเดพเดงเตเดฏเดคเดฏเตเด‚ เด…เดคเดฟเดจเตเดฑเต† เด…เดชเด•เดŸเดตเตเด‚ เดšเต‚เดฃเตเดŸเดฟเด•เตเด•เดพเดฃเดฟเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเต, เดชเด•เตเดทเต‡ เด…เดตเตผ เดžเด™เตเด™เดณเต‹เดŸเต เด’เดจเตเดจเตเด‚ เดšเตผเดšเตเดš เดšเต†เดฏเตเดคเดฟเดฒเตเดฒ. เด…เดคเต‡เดธเดฎเดฏเด‚, เดฌเตเดฐเต—เดธเตผ เด…เดคเดฟเดจเตเดฑเต† เด…เดชเด•เดŸเด•เดฐเดฎเดพเดฏ เดธเดตเดฟเดถเต‡เดทเดค เดตเตเดฏเด•เตเดคเดฎเดพเดฏ เด•เดพเดดเตเดšเดฏเดฟเตฝ เดชเตเดฐเด•เดŸเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต เดคเตเดŸเตผเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เด…เดชเด•เดŸเดธเดพเดงเตเดฏเดคเดฏเตเดŸเต† เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ เดžเด™เตเด™เตพ เดตเต†เดณเดฟเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเด•เตเด•เดดเดฟเดžเตเดžเดพเตฝ, เดฎเตเดฎเตเดชเดคเตเดคเต†เดชเตเดชเต‹เดฒเต† เด…เดตเด—เดฃเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ. เดฎเดพเตผเดšเตเดšเต 27 เด†เดฏเดฟเดฐเตเดจเตเดจเต
HTTPS เดตเดดเดฟ เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดค UC เดฌเตเดฐเต—เดธเดฑเดฟเดจเตเดฑเต† เด’เดฐเต เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต 12.10.9.1193 เดชเตเดฑเดคเตเดคเดฟเดฑเด™เตเด™เดฟ: puds.ucweb.com/upgrade/index.xhtml.

เด•เต‚เดŸเดพเดคเต†, "เดชเดฐเดฟเดนเดฐเดฟเดšเตเดšเดคเดฟเดจเต" เดถเต‡เดทเดตเตเด‚ เดˆ เดฒเต‡เด–เดจเด‚ เดŽเดดเตเดคเตเดจเตเดจ เดธเดฎเดฏเด‚ เดตเดฐเต†, เด’เดฐเต เดฌเตเดฐเต—เดธเดฑเดฟเตฝ เด’เดฐเต PDF เดคเตเดฑเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเดšเตเดšเดคเต "เดถเตเดถเต‹, เดŽเดจเตเดคเต‹ เด•เตเดดเดชเตเดชเด‚ เดธเด‚เดญเดตเดฟเดšเตเดšเต!" เดŽเดจเตเดจ เดตเดพเดšเด•เดคเตเดคเดฟเตฝ เด’เดฐเต เดชเดฟเดถเด•เต เดธเดจเตเดฆเต‡เดถเดคเตเดคเดฟเดจเต เด•เดพเดฐเดฃเดฎเดพเดฏเดฟ. เด’เดฐเต PDF เดคเตเดฑเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดŸเดคเตเดคเดฟเดฏเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เดฌเตเดฐเต—เดธเตผ เดธเดฎเดพเดฐเด‚เดญเดฟเดšเตเดšเดชเตเดชเต‹เตพ เด’เดฐเต เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดŸเดคเตเดคเดฟ, เด‡เดคเต Google Play เดจเดฟเดฏเดฎเด™เตเด™เตพ เดฒเด‚เด˜เดฟเดšเตเดšเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเดฌเดฟเตพ เด•เต‹เดกเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เด•เดดเดฟเดตเดฟเดจเต† เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•