UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рдкрд░рд┐рдЪрдп

рдорд╛рд░реНрдЪрдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рдЖрдореНрд╣реА рдиреЛрдВрджрд╡рд▓реЗ, рддреНрдпрд╛рдВрдирд╛ UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рдЕрд╕рддреНрдпрд╛рдкрд┐рдд рдХреЛрдб рд▓реЛрдб рдХрд░рдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдЪреА рд▓рдкрд▓реЗрд▓реА рдХреНрд╖рдорддрд╛ рд╕рд╛рдкрдбрд▓реА. рдЖрдЬ рдЖрдкрдг рд╣реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд╕реЗ рд╣реЛрддреЗ рдЖрдгрд┐ рд╣реЕрдХрд░реНрд╕ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рд╣реЗрддреВрдВрд╕рд╛рдареА рддреЗ рдХрд╕реЗ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛рдд рдпрд╛рдмрджреНрджрд▓ рддрдкрд╢реАрд▓рд╡рд╛рд░рдкрдгреЗ рдкрд╛рд╣реВ.

рдХрд╛рд╣реА рдХрд╛рд│рд╛рдкреВрд░реНрд╡реА, UC рдмреНрд░рд╛рдЙрдЭрд░рдЪреА рдЬрд╛рд╣рд┐рд░рд╛рдд рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрдгрд┐ рдЕрддрд┐рд╢рдп рдЖрдХреНрд░рдордХрдкрдгреЗ рд╡рд┐рддрд░реАрдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ: рддреЗ рдорд╛рд▓рд╡реЗрдЕрд░ рд╡рд╛рдкрд░реВрди рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреНрдпрд╛ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ, рд╡реНрд╣рд┐рдбрд┐рдУ рдлрд╛рдЗрд▓реНрд╕рдЪреНрдпрд╛ рд╡реЗрд╖рд╛рдд рд╡рд┐рд╡рд┐рдз рд╕рд╛рдЗрдЯреНрд╕рд╡рд░реВрди рд╡рд┐рддрд░рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ (рдореНрд╣рдгрдЬреЗ, рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рд╡рд╛рдЯрд▓реЗ рдХреА рддреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдд рдЖрд╣реЗрдд, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдПрдХ рдЕрд╢реНрд▓реАрд▓ рд╡реНрд╣рд┐рдбрд┐рдУ, рдкрд░рдВрддреБ рддреНрдпрд╛рдРрд╡рдЬреА рдпрд╛ рдмреНрд░рд╛рдЙрдЭрд░рд╕рд╣ рдПрдХ APK рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реЗ), рдмреНрд░рд╛рдЙрдЭрд░ рдЬреБрдирд╛, рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЖрдгрд┐ рддрддреНрд╕рдо рдЧреЛрд╖реНрдЯреАрдВрд╕рд╣ рд╕рдВрджреЗрд╢ рдЕрд╕рд▓реЗрд▓реЗ рднрд┐рддреАрджрд╛рдпрдХ рдмреЕрдирд░ рд╡рд╛рдкрд░рд▓реЗ. рд╡реНрд╣реАрдХреЗрд╡рд░реАрд▓ рдЕрдзрд┐рдХреГрдд рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЭрд░ рдЧрдЯрд╛рдд рдЖрд╣реЗ рдереАрдо, рдЬреНрдпрд╛рдордзреНрдпреЗ рд╡рд╛рдкрд░рдХрд░реНрддреЗ рдЕрдпреЛрдЧреНрдп рдЬрд╛рд╣рд┐рд░рд╛рддреАрдмрджреНрджрд▓ рддрдХреНрд░рд╛рд░ рдХрд░реВ рд╢рдХрддрд╛рдд, рддреЗрдереЗ рдЕрдиреЗрдХ рдЙрджрд╛рд╣рд░рдгреЗ рдЖрд╣реЗрдд. 2016 рдордзреНрдпреЗ рд╕рдо рд╣реЛрддреА рд╡реНрд╣рд┐рдбрд┐рдУ рдЬрд╛рд╣рд┐рд░рд╛рдд рд░рд╢рд┐рдпрдирдордзреНрдпреЗ (рд╣реЛрдп, рдЬрд╛рд╣рд┐рд░рд╛рдд-рдмреНрд▓реЙрдХрд┐рдВрдЧ рдмреНрд░рд╛рдЙрдЭрд░рд╕рд╛рдареА рдЬрд╛рд╣рд┐рд░рд╛рдд).

рд▓реЗрдЦрдирд╛рдЪреНрдпрд╛ рд╡реЗрд│реА, UC рдмреНрд░рд╛рдЙрдЭрд░рдЪреА Google Play рд╡рд░ 500 рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рд╕реНрдерд╛рдкрдирд╛ рдЖрд╣реЗрдд. рд╣реЗ рдкреНрд░рднрд╛рд╡реА рдЖрд╣реЗ - рдлрдХреНрдд Google Chrome рдордзреНрдпреЗ рдЕрдзрд┐рдХ рдЖрд╣реЗ. рдкреБрдирд░рд╛рд╡рд▓реЛрдХрдирд╛рдВрдордзреНрдпреЗ рдЖрдкрдг рдЬрд╛рд╣рд┐рд░рд╛рддреАрдВрдмрджреНрджрд▓ рдЖрдгрд┐ Google Play рд╡рд░реАрд▓ рдХрд╛рд╣реА рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрд╡рд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдгреНрдпрд╛рдмрджреНрджрд▓ рдмрд░реНтАНрдпрд╛рдЪ рддрдХреНрд░рд╛рд░реА рдкрд╛рд╣реВ рд╢рдХрддрд╛. рд╣реЗ рдЖрдордЪреНрдпрд╛ рд╕рдВрд╢реЛрдзрдирд╛рдЪреЗ рдХрд╛рд░рдг рд╣реЛрддреЗ: рдЖрдореНрд╣реА UC рдмреНрд░рд╛рдЙрдЭрд░ рдХрд╛рд╣реАрддрд░реА рд╡рд╛рдИрдЯ рдХрд░рдд рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рдкрд╛рд╣рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛. рдЖрдгрд┐ рдЕрд╕реЗ рдЭрд╛рд▓реЗ рдХреА рддреЛ рдХрд░рддреЛ!

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛрдбрдордзреНрдпреЗ, рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдЖрдгрд┐ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рд╢реЛрдзрд▓реА рдЧреЗрд▓реА, рдЬреЗ рдЕрд░реНрдЬ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдирд┐рдпрдорд╛рдВрдЪреНрдпрд╛ рд╡рд┐рд░реБрджреНрдз рдЖрд╣реЗ Google Play рд╡рд░. рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреНрдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, UC рдмреНрд░рд╛рдЙрдЭрд░ рд╣реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдкрджреНрдзрддреАрдиреЗ рдХрд░рддреЛ, рдЬреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ MitM рд╣рд▓реНрд▓рд╛ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. рдЖрдкрдг рдЕрд╕рд╛ рд╣рд▓реНрд▓рд╛ рдХрд░реВ рд╢рдХрддреЛ рдХрд╛ рддреЗ рдкрд╛рд╣реВрдпрд╛.

рдЦрд╛рд▓реА рд▓рд┐рд╣рд┐рд▓реЗрд▓реА рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд╖реНрдЯ UC рдмреНрд░рд╛рдЙрдЭрд░рдЪреНрдпрд╛ рдЖрд╡реГрддреНрддреАрд╕рд╛рдареА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ рдЬреА рдЕрднреНрдпрд╛рд╕рд╛рдЪреНрдпрд╛ рд╡реЗрд│реА Google Play рд╡рд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрддреА:

package: com.UCMobile.intl
versionName: 12.10.8.1172
versionCode: 10598
sha1 APK-╤Д╨░╨╣╨╗╨░: f5edb2243413c777172f6362876041eb0c3a928c

рд╣рд▓реНрд▓рд╛ рд╡реЗрдХреНрдЯрд░

UC рдмреНрд░рд╛рдЙрдЭрд░ рдореЕрдирд┐рдлреЗрд╕реНрдЯрдордзреНрдпреЗ рддреБрдореНрд╣реА рд╕реНрд╡-рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгрд╛рддреНрдордХ рдирд╛рд╡ рдЕрд╕рд▓реЗрд▓реА рд╕реЗрд╡рд╛ рд╢реЛрдзреВ рд╢рдХрддрд╛ com.uc.deployment.UpgradeDeployService.

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

рд╣реА рд╕реЗрд╡рд╛ рд╕реБрд░реВ рдЭрд╛рд▓реНрдпрд╛рд╡рд░, рдмреНрд░рд╛рдЙрдЭрд░ рдкреЛрд╕реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рд╡рд┐рдирдВрддреА рдХрд░рддреЛ puds.ucweb.com/upgrade/index.xhtml, рдЬреЗ рд╕реБрд░реВ рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░ рдХрд╛рд╣реА рд╡реЗрд│рд╛рдиреЗ рд░рд╣рджрд╛рд░реАрдордзреНрдпреЗ рджрд┐рд╕реВ рд╢рдХрддреЗ. рдкреНрд░рддрд┐рд╕рд╛рджрд╛рдд, рддреНрдпрд╛рд▓рд╛ рдХрд╛рд╣реА рдЕрдкрдбреЗрдЯ рдХрд┐рдВрд╡рд╛ рдирд╡реАрди рдореЙрдбреНрдпреВрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрдорд╛рдВрдб рдкреНрд░рд╛рдкреНрдд рд╣реЛрдК рд╢рдХрддреЗ. рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рджрд░рдореНрдпрд╛рди, рд╕рд░реНрд╡реНрд╣рд░рдиреЗ рдЕрд╢рд╛ рдЖрдЬреНрдЮрд╛ рджрд┐рд▓реНрдпрд╛ рдирд╛рд╣реАрдд, рдкрд░рдВрддреБ рдЖрдордЪреНрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдЖрд▓реЗ рдХреА рдЬреЗрд╡реНрд╣рд╛ рдЖрдореНрд╣реА рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рдкреАрдбреАрдПрдл рдЙрдШрдбрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЛ, рддреЗрд╡реНрд╣рд╛ рддреЗ рд╡рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкрддреНрддреНрдпрд╛рд╡рд░ рджреБрд╕рд░реА рд╡рд┐рдирдВрддреА рдХрд░рддреЗ, рддреНрдпрд╛рдирдВрддрд░ рддреЗ рдореВрд│ рд▓рд╛рдпрдмреНрд░рд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ. рд╣рд▓реНрд▓рд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА UC рдмреНрд░рд╛рдЙрдЭрд░рдЪреЗ рд╣реЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреЗ рдард░рд╡рд┐рд▓реЗ: рдореВрд│ рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд╛рдкрд░реВрди PDF рдЙрдШрдбрдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛, рдЬреА рдПрдкреАрдХреЗрдордзреНрдпреЗ рдирд╛рд╣реА рдЖрдгрд┐ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕ рддреА рдЗрдВрдЯрд░рдиреЗрдЯрд╡рд░реВрди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ. рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреЗрдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ рдХреА, рд╕реИрджреНрдзрд╛рдВрддрд┐рдХрджреГрд╖реНрдЯреНрдпрд╛, UC рдмреНрд░рд╛рдЙрдЭрд░рд▓рд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджрд╛рд╢рд┐рд╡рд╛рдп рдХрд╛рд╣реАрддрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреНрдпрд╛рд╕ рднрд╛рдЧ рдкрд╛рдбрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ - рдЬрд░ рддреБрдореНрд╣реА рдмреНрд░рд╛рдЙрдЭрд░ рд▓рд╛рдБрдЪ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рдЕрдВрдорд▓рд╛рдд рдЖрдгрд▓реЗрд▓реНрдпрд╛ рд╡рд┐рдирдВрддреАрд▓рд╛ рдпреЛрдЧреНрдп рдкреНрд░рддрд┐рд╕рд╛рдж рджрд┐рд▓рд╛ рддрд░. рдкрд░рдВрддреБ рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣рд╛рд▓рд╛ рд╕рд░реНрд╡реНрд╣рд░рд╢реА рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджрд╛рдЪреНрдпрд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪрд╛ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░ рдЕрднреНрдпрд╛рд╕ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛ рдХреА рдЦрдВрдбрд┐рдд рдкреНрд░рддрд┐рд╕рд╛рдж рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдгреЗ рдЖрдгрд┐ PDF рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд▓рд╛рдпрдмреНрд░рд░реА рдмрджрд▓рдгреЗ рд╕реЛрдкреЗ рд╣реЛрдИрд▓.

рдореНрд╣рдгреВрди, рдЬреЗрд╡реНрд╣рд╛ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдереЗрдЯ рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ PDF рдЙрдШрдбреВ рдЗрдЪреНрдЫрд┐рддреЛ, рддреЗрд╡реНрд╣рд╛ рдЦрд╛рд▓реАрд▓ рд╡рд┐рдирдВрддреНрдпрд╛ рд░рд╣рджрд╛рд░реАрдордзреНрдпреЗ рджрд┐рд╕реВ рд╢рдХрддрд╛рдд:

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рдкреНрд░рдердо рдПрдХ POST рд╡рд┐рдирдВрддреА рдЖрд╣реЗ puds.ucweb.com/upgrade/index.xhtml, рдирдВрддрд░
рдкреАрдбреАрдПрдл рдЖрдгрд┐ рдСрдлрд┐рд╕ рдлреЙрд░рдореЕрдЯ рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА рд▓рд╛рдпрдмреНрд░рд░реАрд╕рд╣ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рд╣реЗ рдЧреГрд╣реАрдд рдзрд░рдгреЗ рддрд░реНрдХрд╕рдВрдЧрдд рдЖрд╣реЗ рдХреА рдкреНрд░рдердо рд╡рд┐рдирдВрддреА рд╕рд┐рд╕реНрдЯрдордмрджреНрджрд▓ рдорд╛рд╣рд┐рддреА рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддреЗ (рдХрд┐рдорд╛рди рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдпрдмреНрд░рд░реА рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░), рдЖрдгрд┐ рддреНрдпрд╛рд╕ рдкреНрд░рддрд┐рд╕рд╛рдж рдореНрд╣рдгреВрди рдмреНрд░рд╛рдЙрдЭрд░рд▓рд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд▓рд╛рдпрдмреНрд░рд░реАрдмрджреНрджрд▓ рдХрд╛рд╣реА рдорд╛рд╣рд┐рддреА рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ: рдкрддреНрддрд╛ рдЖрдгрд┐, рд╢рдХреНрдпрддреЛ , рдХрд╛рд╣реАрддрд░реА. рд╕рдорд╕реНрдпрд╛ рдЕрд╢реА рдЖрд╣реЗ рдХреА рд╣реА рд╡рд┐рдирдВрддреА рдПрдирдХреНрд░рд┐рдкреНрдЯ рдХреЗрд▓реЗрд▓реА рдЖрд╣реЗ.

рддреБрдХрдбрд╛ рд╡рд┐рдирдВрддреА

рдЙрддреНрддрд░рд╛рдЪрд╛ рддреБрдХрдбрд╛

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рд▓рд╛рдпрдмреНрд░рд░реА рд╕реНрд╡рддрдГ рдЭрд┐рдкрдордзреНрдпреЗ рдкреЕрдХреЗрдЬ рдХреЗрд▓реЗрд▓реА рдЖрд╣реЗ рдЖрдгрд┐ рдПрдирдХреНрд░рд┐рдкреНрдЯ рдХреЗрд▓реЗрд▓реА рдирд╛рд╣реА.

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рд░рд╣рджрд╛рд░реА рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЛрдб рд╢реЛрдзрд╛

рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ рдкреНрд░рддрд┐рд╕рд╛рджрд╛рдЪрд╛ рдЙрд▓рдЧрдбрд╛ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВрдпрд╛. рдЪрд▓рд╛ рд╡рд░реНрдЧ рдХреЛрдб рдкрд╛рд╣реВ com.uc.deployment.UpgradeDeployService: рдкрджреНрдзрддреАрдиреЗ onStartCommand рдЬрд╛ com.uc.deployment.bx, рдЖрдгрд┐ рддреНрдпрд╛рддреВрди рддреЗ com.uc.browser.core.dcfe:

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

рдЖрдореНрд╣реА рдпреЗрдереЗ рдкреЛрд╕реНрдЯ рд╡рд┐рдирдВрддреАрдЪреА рдирд┐рд░реНрдорд┐рддреА рдкрд╛рд╣рддреЛ. рдЖрдореНрд╣реА 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);
}
}

рдЖрдгрд┐ рд╡рд░реНрдЧ рджреЗрдЦреАрд▓ 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 рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдирд▓рд╛ рд╕рд╛рдВрдЧрдгреНрдпрд╛рдЪреЗ рджреЛрди рдорд╛рд░реНрдЧ рдЖрд╣реЗрдд рдХреА рдореВрд│ рд▓рд╛рдпрдмреНрд░рд░реАрдордзреНрдпреЗ Java рдХреЛрдбрдордзреНрдпреЗ рдШреЛрд╖рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкрджреНрдзрддреАрдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдиреЗрдордХреА рдХреБрдареЗ рдЖрд╣реЗ. рдкреНрд░рдердо рддреНрдпрд╛рд▓рд╛ рдкреНрд░рдЬрд╛рддреАрдЪреЗ рдирд╛рд╡ рджреЗрдгреЗ рдЖрд╣реЗ Java_package_name_ClassName_MethodName.

рджреБрд╕рд░реЗ рдореНрд╣рдгрдЬреЗ рд▓рд╛рдпрдмреНрд░рд░реА рд▓реЛрдб рдХрд░рддрд╛рдирд╛ рддреНрдпрд╛рдЪреА рдиреЛрдВрджрдгреА рдХрд░рдгреЗ (рдлрдВрдХреНрд╢рдирдордзреНрдпреЗ JNI_рдСрдирд▓реЛрдб)
рдлрдВрдХреНрд╢рди рдХреЙрд▓ рд╡рд╛рдкрд░рдгреЗ рдиреЛрдВрджрдгреАрдХреГрдд рдирд┐рд╡рд╛рд╕реА.

рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдЖрдореНрд╣реА рдкрд╣рд┐рд▓реА рдкрджреНрдзрдд рд╡рд╛рдкрд░рд▓реНрдпрд╛рд╕, рдирд╛рд╡ рдЕрд╕реЗ рдЕрд╕рд╛рд╡реЗ: Java_com_taobao_wireless_security_adapter_JNICLlibrary_doCommandNative.

рдирд┐рд░реНрдпрд╛рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдлрдВрдХреНрд╢рдиреНрд╕рдордзреНрдпреЗ рдЕрд╕реЗ рдХреЛрдгрддреЗрд╣реА рдлрдВрдХреНрд╢рди рдирд╛рд╣реА, рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдХреЙрд▓ рд╢реЛрдзрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ рдиреЛрдВрджрдгреАрдХреГрдд рдирд┐рд╡рд╛рд╕реА.
рдЪрд▓рд╛ рдлрдВрдХреНрд╢рдирд▓рд╛ рдЬрд╛рдКрдпрд╛ JNI_рдСрдирд▓реЛрдб рдЖрдгрд┐ рдЖрдореНрд╣реА рд╣реЗ рдЪрд┐рддреНрд░ рдкрд╛рд╣рддреЛ:

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рдЗрдереЗ рдХрд╛рдп рдЪрд╛рд▓рд▓реЗ рдЖрд╣реЗ? рдкрд╣рд┐рд▓реНрдпрд╛ рджреГрд╖реНрдЯреАрдХреНрд╖реЗрдкрд╛рдд, рдлрдВрдХреНрд╢рдирдЪреА рд╕реБрд░реБрд╡рд╛рдд рдЖрдгрд┐ рд╢реЗрд╡рдЯ рдПрдЖрд░рдПрдо рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрдкреВрд░реНрдг рдЖрд╣реЗрдд. рд╕реНрдЯреЕрдХрд╡рд░реАрд▓ рдкрд╣рд┐рд▓реА рд╕реВрдЪрдирд╛ рд░рдЬрд┐рд╕реНрдЯрд░реНрд╕рдЪреА рд╕рд╛рдордЧреНрд░реА рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рддреЗ рдЬреА рдлрдВрдХреНрд╢рди рддреНрдпрд╛рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ рд╡рд╛рдкрд░реЗрд▓ (рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, R0, R1 рдЖрдгрд┐ R2), рддрд╕реЗрдЪ LR рд░рдЬрд┐рд╕реНрдЯрд░рдЪреА рд╕рд╛рдордЧреНрд░реА, рдЬреНрдпрд╛рдордзреНрдпреЗ рдлрдВрдХреНрд╢рдирдЪрд╛ рдкрд░рддрд╛рд╡рд╛ рдкрддреНрддрд╛ рдЕрд╕рддреЛ. . рд╢реЗрд╡рдЯрдЪреА рд╕реВрдЪрдирд╛ рдЬрддрди рдХреЗрд▓реЗрд▓реА рдиреЛрдВрджрдгреА рдкреБрдирд░реНрд╕рдВрдЪрдпрд┐рдд рдХрд░рддреЗ рдЖрдгрд┐ рдкрд░рддреАрдЪрд╛ рдкрддреНрддрд╛ рддрд╛рдмрдбрддреЛрдм рдкреАрд╕реА рд░рдЬрд┐рд╕реНрдЯрд░рдордзреНрдпреЗ рдареЗрд╡рд▓рд╛ рдЬрд╛рддреЛ - рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рдлрдВрдХреНрд╢рдирдордзреВрди рдкрд░рдд рдпреЗрддреЛ. рдкрд░рдВрддреБ рддреБрдореНрд╣реА рдмрд╛рд░рдХрд╛рдИрдиреЗ рдкрд╛рд╣рд┐рд▓реНрдпрд╛рд╕, рддреБрдордЪреНрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдпреЗрдИрд▓ рдХреА рдЕрдВрддрд┐рдо рд╕реВрдЪрдирд╛ рд╕реНрдЯреЕрдХрд╡рд░ рд╕рдВрдЧреНрд░рд╣рд┐рдд рд░рд┐рдЯрд░реНрди рдкрддреНрддрд╛ рдмрджрд▓рддреЗ. рдирдВрддрд░ рддреЗ рдХрд╕реЗ рдЕрд╕реЗрд▓ рддреЗ рдореЛрдЬреВрдпрд╛
рдХреЛрдбрдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА. рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрддреНрддрд╛ 1xB0 R130 рдордзреНрдпреЗ рд▓реЛрдб рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рддреНрдпрд╛рддреВрди 5 рд╡рдЬрд╛ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рдирдВрддрд░ рддреЛ R0 рд╡рд░ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдд 0x10 рдЬреЛрдбрд▓рд╛ рдЬрд╛рддреЛ. рд╣реЗ 0xB13B рдмрд╛рд╣реЗрд░ рд╡рд│рддреЗ. рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ, IDA рд▓рд╛ рд╡рд╛рдЯрддреЗ рдХреА рд╢реЗрд╡рдЯрдЪреА рд╕реВрдЪрдирд╛ рд╣реА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдлрдВрдХреНрд╢рди рд░рд┐рдЯрд░реНрди рдЖрд╣реЗ, рдкрд░рдВрддреБ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рддреА рдЧрдгрдирд╛ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкрддреНрддреНрдпрд╛рд╡рд░ 0xB13B рдЖрд╣реЗ.

рдпреЗрдереЗ рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ рдХреА рдПрдЖрд░рдПрдо рдкреНрд░реЛрд╕реЗрд╕рд░рдордзреНрдпреЗ рджреЛрди рдореЛрдб рдЖрдгрд┐ рд╕реВрдЪрдирд╛рдВрдЪреЗ рджреЛрди рд╕рдВрдЪ рдЖрд╣реЗрдд: рдПрдЖрд░рдПрдо рдЖрдгрд┐ рдердВрдм. рдкрддреНрддреНрдпрд╛рддреАрд▓ рд╕рд░реНрд╡рд╛рдд рдХрдореА рдорд╣рддреНрддреНрд╡рд╛рдЪрд╛ рднрд╛рдЧ рдкреНрд░реЛрд╕реЗрд╕рд░рд▓рд╛ рд╕рд╛рдВрдЧрддреЗ рдХреА рдХреЛрдгрддрд╛ рдирд┐рд░реНрджреЗрд╢ рд╕рдВрдЪ рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рдд рдЖрд╣реЗ. рдореНрд╣рдгрдЬреЗрдЪ, рдкрддреНрддрд╛ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд 0xB13A рдЖрд╣реЗ рдЖрдгрд┐ рдХрдореАрддрдХрдореА рд▓рдХреНрд╖рдгреАрдп рдмрд┐рдЯрдкреИрдХреА рдПрдХ рдердВрдм рдореЛрдб рджрд░реНрд╢рд╡рддреЛ.

рдпрд╛ рд▓рд╛рдпрдмреНрд░рд░реАрддреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рдлрдВрдХреНрд╢рдирдЪреНрдпрд╛ рд╕реБрд░реВрд╡рд╛рддреАрд▓рд╛ рдПрдХ рд╕рдорд╛рди тАЬрдЕреЕрдбреЙрдкреНрдЯрд░тАЭ рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐
рдХрдЪрд░рд╛ рдХреЛрдб. рдЖрдореНрд╣реА рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╡рд░ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд░рд╛рд╣рдгрд╛рд░ рдирд╛рд╣реА - рдЖрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рдЖрдард╡рддреЗ
рдХреА рдЬрд╡рд│рдЬрд╡рд│ рд╕рд░реНрд╡ рдлрдВрдХреНрд╢рдиреНрд╕рдЪреА рдЦрд░реА рд╕реБрд░реБрд╡рд╛рдд рдереЛрдбреА рджреВрд░ рдЖрд╣реЗ.

рдХреЛрдб рд╕реНрдкрд╖реНрдЯрдкрдгреЗ 0xB13A рд╡рд░ рдЬрд╛рдд рдирд╕рд▓реНрдпрд╛рдореБрд│реЗ, IDA рдиреЗ рд╕реНрд╡рддрдГ рдУрд│рдЦрд▓реЗ рдирд╛рд╣реА рдХреА рдХреЛрдб рдпрд╛ рд╕реНрдерд╛рдирд╛рд╡рд░ рдЖрд╣реЗ. рддреНрдпрд╛рдЪ рдХрд╛рд░рдгрд╛рд╕реНрддрд╡, рддреЗ рд▓рд╛рдпрдмреНрд░рд░реАрддреАрд▓ рдмрд╣реБрддреЗрдХ рдХреЛрдб рдХреЛрдб рдореНрд╣рдгреВрди рдУрд│рдЦрдд рдирд╛рд╣реА, рдЬреНрдпрд╛рдореБрд│реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛рд╣реАрд╕реЗ рдХрдареАрдг рд╣реЛрддреЗ. рдЖрдореНрд╣реА IDA рд▓рд╛ рд╕рд╛рдВрдЧрддреЛ рдХреА рд╣рд╛ рдХреЛрдб рдЖрд╣реЗ рдЖрдгрд┐ рд╣реЗ рдЕрд╕реЗ рд╣реЛрддреЗ:

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рдЯреЗрдмрд▓ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ 0xB144 рдкрд╛рд╕реВрди рд╕реБрд░реВ рд╣реЛрддреЗ. sub_494C рдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ?

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рдПрд▓рдЖрд░ рд░рдЬрд┐рд╕реНрдЯрд░рдордзреНрдпреЗ рдпрд╛ рдлрдВрдХреНрд╢рдирд▓рд╛ рдХреЙрд▓ рдХрд░рддрд╛рдирд╛, рдЖрдореНрд╣рд╛рд▓рд╛ рдкреВрд░реНрд╡реА рдирдореВрдж рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЯреЗрдмрд▓рдЪрд╛ рдкрддреНрддрд╛ (0xB144) рдорд┐рд│рддреЛ. R0 рдордзреНрдпреЗ - рдпрд╛ рдЯреЗрдмрд▓рдордзреАрд▓ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛. рдореНрд╣рдгрдЬреЗрдЪ, рдореВрд▓реНрдп рдЯреЗрдмрд▓рдордзреВрди рдШреЗрддрд▓реЗ рдЬрд╛рддреЗ, рдПрд▓рдЖрд░рдордзреНрдпреЗ рдЬреЛрдбрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рдкрд░рд┐рдгрд╛рдо рд╣реЛрддреЛ
рдЬрд╛рдгреНрдпрд╛рд╕рд╛рдареА рдкрддреНрддрд╛. рдЪрд▓рд╛ рддреНрдпрд╛рдЪреА рдЧрдгрдирд╛ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВрдпрд╛: 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 рдирдВрддрд░рдЪреНрдпрд╛ рд╕реВрдЪрдирд╛рдВрдЪрд╛ рдлрд╛рд░рд╕рд╛ рдЕрд░реНрде рд╡рд╛рдЯрдд рдирд╛рд╣реА, рд╣реЗ рдХрд╛рд╣реА рдкреНрд░рдХрд╛рд░рдЪреЗ рд╡рд┐рд╕реНрдерд╛рдкрди рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ. рдЪрд▓рд╛ sub_4964 рдкрд╛рд╣реВ:

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рдЖрдгрд┐ рдЦрд░рдВрдЪ, рдпреЗрдереЗ LR рдордзреНрдпреЗ рдкрдбрд▓реЗрд▓реНрдпрд╛ рдкрддреНрддреНрдпрд╛рд╡рд░ рдПрдХ dword рдШреЗрддрд▓рд╛ рдЬрд╛рддреЛ, рдпрд╛ рдкрддреНрддреНрдпрд╛рд╡рд░ рдЬреЛрдбрд▓рд╛ рдЬрд╛рддреЛ, рддреНрдпрд╛рдирдВрддрд░ рдкрд░рд┐рдгрд╛рдореА рдкрддреНрддреНрдпрд╛рд╡рд░реАрд▓ рдореВрд▓реНрдп рдШреЗрддрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рд╕реНрдЯреЕрдХрд╡рд░ рдареЗрд╡рд▓реЗ рдЬрд╛рддреЗ. рддрд╕реЗрдЪ, LR рдордзреНрдпреЗ 4 рдЬреЛрдбрд▓реЗ рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реВрди рдлрдВрдХреНрд╢рдирдордзреВрди рдкрд░рдд рдЖрд▓реНрдпрд╛рдирдВрддрд░, рд╣рд╛рдЪ рдСрдлрд╕реЗрдЯ рд╡рдЧрд│рд▓рд╛ рдЬрд╛рдИрд▓. рддреНрдпрд╛рдирдВрддрд░ POP {R1} рдХрдорд╛рдВрдб рд╕реНрдЯреЕрдХрдордзреВрди рдкрд░рд┐рдгрд╛рдореА рдореВрд▓реНрдп рдШреЗрддреЗ. 0xB4BA + 0xEA = 0xB5A4 рдкрддреНрддреНрдпрд╛рд╡рд░ рдХрд╛рдп рдЖрд╣реЗ рддреЗ рддреБрдореНрд╣реА рдкрд╛рд╣рд┐рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ рдЕреЕрдбреНрд░реЗрд╕ рдЯреЗрдмрд▓рд╕рд╛рд░рдЦреЗ рдХрд╛рд╣реАрддрд░реА рджрд┐рд╕реЗрд▓:

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рд╣реЗ рдбрд┐рдЭрд╛рдЗрди рдкреЕрдЪ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдХреЛрдбрдордзреВрди рджреЛрди рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдорд┐рд│рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ: рдСрдлрд╕реЗрдЯ рдЖрдгрд┐ рдиреЛрдВрджрдгреА рдХреНрд░рдорд╛рдВрдХ рдЬреНрдпрд╛рдордзреНрдпреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдирд┐рдХрд╛рд▓ рд▓рд╛рд╡рд╛рдпрдЪрд╛ рдЖрд╣реЗ. рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрднрд╛рд╡реНрдп рдиреЛрдВрджрдгреАрд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдХреЛрдбрдЪрд╛ рдПрдХ рддреБрдХрдбрд╛ рдЖрдЧрд╛рдК рддрдпрд╛рд░ рдХрд░рд╛рд╡рд╛ рд▓рд╛рдЧреЗрд▓.

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

рдЖрдореНтАНрд╣реА 0xB4B2 - рдмрджрд▓реВ рдЗрдЪреНтАНрдЫрд┐рдд рд╕рдВрд░рдЪрдиреЗрдЪреНтАНрдпрд╛ рд╕реБрд░реВрд╡рд╛рддреАрд▓рд╛ рдХрд░реНрд╕рд░ рдареЗрд╡рддреЛ рдЖрдгрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд▓рд╡рддреЛ:

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рдЖрдзреАрдЪ рдирдореВрдж рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рдВрд░рдЪрдирд╛рдВрд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдХреЛрдбрдордзреНрдпреЗ рдЦрд╛рд▓реАрд▓ рдЧреЛрд╖реНрдЯреА рджреЗрдЦреАрд▓ рдЖрд╣реЗрдд:

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рдорд╛рдЧреАрд▓ рдкреНрд░рдХрд░рдгрд╛рдкреНрд░рдорд╛рдгреЗ, BLX рдирд┐рд░реНрджреЗрд╢рд╛рдирдВрддрд░ рдПрдХ рдСрдлрд╕реЗрдЯ рдЖрд╣реЗ:

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рдЖрдореНрд╣реА рдСрдлрд╕реЗрдЯ рдПрд▓рдЖрд░ рд╡рд░реВрди рдкрддреНрддреНрдпрд╛рд╡рд░ рдШреЗрддреЛ, рддреЛ рдПрд▓рдЖрд░рдордзреНрдпреЗ рдЬреЛрдбрддреЛ рдЖрдгрд┐ рддрд┐рдереЗ рдЬрд╛рддреЛ. 0x72044 + 0xC = 0x72050. рдпрд╛ рдбрд┐рдЭрд╛рдЗрдирдЪреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдЧрджреА рд╕реЛрдкреА рдЖрд╣реЗ:

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

рд╕реНрдХреНрд░рд┐рдкреНрдЯрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪрд╛ рдкрд░рд┐рдгрд╛рдо:

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рдПрдХрджрд╛ рдлрдВрдХреНрд╢рдирдордзреНрдпреЗ рд╕рд░реНрд╡рдХрд╛рд╣реА рдкреЕрдЪ рдХреЗрд▓реЗ рдХреА, рддреБрдореНрд╣реА IDA рд▓рд╛ рддреНрдпрд╛рдЪреА рдЦрд░реА рд╕реБрд░реБрд╡рд╛рдд рджрд░реНрд╢рд╡реВ рд╢рдХрддрд╛. рд╣реЗ рд╕рд░реНрд╡ рдлрдВрдХреНрд╢рди рдХреЛрдб рдПрдХрддреНрд░ рдХрд░реЗрд▓ рдЖрдгрд┐ рд╣реЗрдХреНрд╕рд░реЗ рд╡рд╛рдкрд░реВрди рддреЗ рд╡рд┐рдШрдЯрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.

рдбреАрдХреЛрдбрд┐рдВрдЧ рд╕реНрдЯреНрд░рд┐рдВрдЧ

рдЖрдореНрд╣реА рд▓рд╛рдпрдмреНрд░рд░реАрдордзреНрдпреЗ рдорд╢реАрди рдХреЛрдбрдЪреНрдпрд╛ рдЕрд╕реНрдкрд╖реНрдЯрддреЗрд▓рд╛ рд╕рд╛рдореЛрд░реЗ рдЬрд╛рдгреНрдпрд╛рд╕ рд╢рд┐рдХрд▓реЛ рдЖрд╣реЛрдд libsgmainso-6.4.36.so UC рдмреНрд░рд╛рдЙрдЭрд░ рд╡рд░реВрди рдЖрдгрд┐ рдлрдВрдХреНрд╢рди рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХреЗрд▓рд╛ JNI_рдСрдирд▓реЛрдб.

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

рдЪрд▓рд╛ рдЦрд╛рд▓реАрд▓ рдУрд│реА рдЬрд╡рд│реВрди рдкрд╛рд╣реВ:

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

рдХрд╛рд░реНрдпрд╛рдд sub_73E24 рд╡рд░реНрдЧрд╛рдЪреЗ рдирд╛рд╡ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХреЗрд▓реЗ рдЬрд╛рдд рдЖрд╣реЗ. рдпрд╛ рдлрдВрдХреНрд╢рдирдЪреЗ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдореНрд╣рдгреВрди, рдПрдирдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ рд╕рд╛рд░рдЦреНрдпрд╛ рдбреЗрдЯрд╛рд╕рд╛рдареА рдПрдХ рдкреЙрдЗрдВрдЯрд░, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрдлрд░ рдЖрдгрд┐ рд╕рдВрдЦреНрдпрд╛ рдкрд╛рд╕ рдХреЗрд▓реА рдЬрд╛рддреЗ. рдЕрд░реНрдерд╛рдд, рдлрдВрдХреНрд╢рдирд▓рд╛ рдХреЙрд▓ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рдмрдлрд░рдордзреНрдпреЗ рдПрдХ рдбрд┐рдХреНрд░рд┐рдкреНрдЯреЗрдб рдУрд│ рдЕрд╕реЗрд▓, рдХрд╛рд░рдг рддреА рдлрдВрдХреНрд╢рдирд▓рд╛ рджрд┐рд▓реА рдЬрд╛рддреЗ. рдХреНрд▓рд╛рд╕ рд╢реЛрдзрд╛, рдЬреЗ рд╡рд░реНрдЧрд╛рдЪреЗ рдирд╛рд╡ рджреБрд╕рд░реЗ рдкреЕрд░рд╛рдореАрдЯрд░ рдореНрд╣рдгреВрди рдШреЗрддреЗ. рдореНрд╣рдгреВрди, рд╕рдВрдЦреНрдпрд╛ рдмрдлрд░рдЪрд╛ рдЖрдХрд╛рд░ рдХрд┐рдВрд╡рд╛ рд░реЗрд╖реЗрдЪреА рд▓рд╛рдВрдмреА рдЖрд╣реЗ. рдЪрд▓рд╛ рд╡рд░реНрдЧрд╛рдЪреЗ рдирд╛рд╡ рдЙрд▓рдЧрдбрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВрдпрд╛, рдЖрдкрдг рдпреЛрдЧреНрдп рджрд┐рд╢реЗрдиреЗ рдЬрд╛рдд рдЖрд╣реЛрдд рдХреА рдирд╛рд╣реА рд╣реЗ рд╕рд╛рдВрдЧрд╛рд╡реЗ. рдордзреНрдпреЗ рдХрд╛рдп рд╣реЛрддреЗ рддреЗ рдЬрд╡рд│реВрди рдкрд╛рд╣реВрдпрд╛ sub_73E24.

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

рдХрд╛рд░реНрдп sub_7AF78 рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдХрд╛рд░рд╛рдЪреНрдпрд╛ рдмрд╛рдЗрдЯ рдЕреЕрд░реЗрд╕рд╛рдареА рдХрдВрдЯреЗрдирд░рдЪреЗ рдЙрджрд╛рд╣рд░рдг рддрдпрд╛рд░ рдХрд░рддреЗ (рдЖрдореНрд╣реА рдпрд╛ рдХрдВрдЯреЗрдирд░рд╡рд░ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд░рд╛рд╣рдгрд╛рд░ рдирд╛рд╣реА). рдпреЗрдереЗ рдЕрд╕реЗ рджреЛрди рдХрдВрдЯреЗрдирд░ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЖрд╣реЗрдд: рдПрдХрд╛рдордзреНрдпреЗ рдУрд│ рдЖрд╣реЗ "DcO/lcK+h?m3c*q@" (рд╣реА рдХреА рдЖрд╣реЗ рдЕрд╕рд╛ рдЕрдВрджрд╛рдЬ рд▓рд╛рд╡рдгреЗ рд╕реЛрдкреЗ рдЖрд╣реЗ), рджреБрд╕рд▒реНрдпрд╛рдордзреНрдпреЗ рдХреВрдЯрдмрджреНрдз рдбреЗрдЯрд╛ рдЖрд╣реЗ. рдкреБрдвреЗ, рджреЛрдиреНрд╣реА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдПрдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд░рдЪрдиреЗрдд рдареЗрд╡рд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд, рдЬреНрдпрд╛ рдлрдВрдХреНрд╢рдирдордзреНрдпреЗ рдкрд╛рд╕ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд sub_6115C. рдпрд╛ рд╕рдВрд░рдЪрдиреЗрдд 3 рдореВрд▓реНрдп рдЕрд╕рд▓реЗрд▓реЗ рдлреАрд▓реНрдб рджреЗрдЦреАрд▓ рдЪрд┐рдиреНрд╣рд╛рдВрдХрд┐рдд рдХрд░реВ рдпрд╛. рдпрд╛ рд░рдЪрдиреЗрдЪреЗ рдкреБрдвреЗ рдХрд╛рдп рд╣реЛрддреЗ рддреЗ рдкрд╛рд╣реВ.

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

рд╕реНрд╡рд┐рдЪ рдкреЕрд░рд╛рдореАрдЯрд░ рд╣реЗ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдлреАрд▓реНрдб рдЖрд╣реЗ рдЬреНрдпрд╛рд▓рд╛ рдЖрдзреА рдореВрд▓реНрдп 3 рдирд┐рдпреБрдХреНрдд рдХреЗрд▓реЗ рд╣реЛрддреЗ. рдХреЗрд╕ 3 рдкрд╣рд╛: рдлрдВрдХреНрд╢рдирд▓рд╛ sub_6364C рдорд╛рдЧреАрд▓ рдлрдВрдХреНрд╢рдирдордзреНрдпреЗ рдЬреЛрдбрд▓реЗрд▓реНрдпрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░рдордзреВрди рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдкрд╛рд╕ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд, рдореНрд╣рдгрдЬреЗ рдХреА рдЖрдгрд┐ рдПрдирдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛. рдмрд╛рд░рдХрд╛рдИрдиреЗ рдмрдШрд┐рддрд▓реЗ рддрд░ sub_6364C, рддреБрдореНрд╣реА рддреНрдпрд╛рддреАрд▓ RC4 рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдУрд│рдЦреВ рд╢рдХрддрд╛.

рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдПрдХ рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдЖрдгрд┐ рдПрдХ рдХреА рдЖрд╣реЗ. рдЪрд▓рд╛ рд╡рд░реНрдЧрд╛рдЪреЗ рдирд╛рд╡ рдЙрд▓рдЧрдбрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВрдпрд╛. рдХрд╛рдп рдЭрд╛рд▓реЗ рддреЗ рдпреЗрдереЗ рдЖрд╣реЗ: com/taobao/wireless/security/adapter/JNICLlibrary. рдЫрд╛рди! рдЖрдореНрд╣реА рдпреЛрдЧреНрдп рдорд╛рд░реНрдЧрд╛рд╡рд░ рдЖрд╣реЛрдд.

рдЖрдЬреНрдЮрд╛ рд╡реГрдХреНрд╖

рдЖрддрд╛ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЖрд╡реНрд╣рд╛рди рд╢реЛрдзрдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдЖрд╣реЗ рдиреЛрдВрджрдгреАрдХреГрдд рдирд┐рд╡рд╛рд╕реА, рдЬреЗ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдлрдВрдХреНрд╢рдирдХрдбреЗ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрд▓ doCommandNative. рдкрд╛рд╕реВрди рдХреЙрд▓ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдлрдВрдХреНрд╢рдиреНрд╕ рдкрд╛рд╣реВ JNI_рдСрдирд▓реЛрдб, рдЖрдгрд┐ рдЖрдореНрд╣рд╛рд▓рд╛ рддреЗ рд╕рд╛рдкрдбрддреЗ sub_B7B0:

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

рдЖрдгрд┐ рдЦрд░рдВрдЪ, рдирд╛рд╡рд╛рд╕рд╣ рдореВрд│ рдкрджреНрдзрдд рдпреЗрдереЗ рдиреЛрдВрджрдгреАрдХреГрдд рдЖрд╣реЗ doCommandNative. рдЖрддрд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рдЪрд╛ рдкрддреНрддрд╛ рдорд╛рд╣рд┐рдд рдЖрд╣реЗ. рддреЛ рдХрд╛рдп рдХрд░рддреЛ рддреЗ рдкрд╛рд╣реВрдпрд╛.

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

рдирд╛рд╡рд╛рд╡рд░реВрди рддреБрдореНрд╣реА рдЕрдВрджрд╛рдЬ рд▓рд╛рд╡реВ рд╢рдХрддрд╛ рдХреА рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдиреА рдореВрд│ рд▓рд╛рдпрдмреНрд░рд░реАрдордзреНрдпреЗ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рдлрдВрдХреНрд╢рдиреНрд╕рдЪрд╛ рдПрдВрдЯреНрд░реА рдкреЙрдЗрдВрдЯ рдпреЗрдереЗ рдЖрд╣реЗ. рдЖрдореНрд╣рд╛рд▓рд╛ рдлрдВрдХреНрд╢рди рдХреНрд░рдорд╛рдВрдХ 10601 рдордзреНрдпреЗ рд╕реНрд╡рд╛рд░рд╕реНрдп рдЖрд╣реЗ.

рддреБрдореНрд╣реА рдХреЛрдбрд╡рд░реВрди рдкрд╛рд╣реВ рд╢рдХрддрд╛ рдХреА рдХрдорд╛рдВрдб рдирдВрдмрд░ рддреАрди рд╕рдВрдЦреНрдпрд╛ рддрдпрд╛рд░ рдХрд░рддреЛ: рдХрдорд╛рдВрдб/10000, рдХрдорд╛рдВрдб % 10000 / 100 ╨╕ рдХрдорд╛рдВрдб % 10, рдореНрд╣рдгрдЬреЗ, рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, 1, 6 рдЖрдгрд┐ 1. рдпрд╛ рддреАрди рд╕рдВрдЦреНрдпрд╛, рддрд╕реЗрдЪ рдПрдХ рд╕реВрдЪрдХ JNIEnv рдЖрдгрд┐ рдлрдВрдХреНрд╢рдирд▓рд╛ рджрд┐рд▓реЗрд▓реЗ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рд╕реНрдЯреНрд░рдХреНрдЪрд░рдордзреНрдпреЗ рдЬреЛрдбрд▓реЗ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рдкреБрдвреЗ рдЬрд╛рддрд╛рдд. рдорд┐рд│рд╛рд▓реЗрд▓реНрдпрд╛ рддреАрди рдХреНрд░рдорд╛рдВрдХрд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди (рддреНрдпрд╛рдВрдирд╛ N1, N2 рдЖрдгрд┐ N3 рджрд░реНрд╢рд╡реВ), рдХрдорд╛рдВрдб рдЯреНрд░реА рддрдпрд╛рд░ рдХреЗрд▓реА рдЖрд╣реЗ.

рдпрд╛рд╕рд╛рд░рдЦреЗрдЪ рдХрд╛рд╣реАрд╕реЗ:

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рдЭрд╛рдб рдЧрддрд┐рд╢реАрд▓рдкрдгреЗ рднрд░рд▓реЗ рдЖрд╣реЗ JNI_рдСрдирд▓реЛрдб.
рддреАрди рд╕рдВрдЦреНрдпрд╛ рдЭрд╛рдбрд╛рддреАрд▓ рдорд╛рд░реНрдЧ рдПрдиреНрдХреЛрдб рдХрд░рддрд╛рдд. рдЭрд╛рдбрд╛рдЪреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдкрд╛рдирд╛рдордзреНрдпреЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпрд╛рдЪрд╛ рдкреЛрдХ рдХреЗрд▓реЗрд▓рд╛ рдкрддреНрддрд╛ рдЕрд╕рддреЛ. рдХреА рдкреЕрд░реЗрдВрдЯ рдиреЛрдбрдордзреНрдпреЗ рдЖрд╣реЗ. рдЬрд░ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рд░рдЪрдирд╛ рд╕рдордЬрд▓реНрдпрд╛ рдЕрд╕рддреАрд▓ рддрд░ рдХреЛрдбрдордзреНрдпреЗ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реЗ рдлрдВрдХреНрд╢рди рдЬреЛрдбрд▓реЗрд▓реЗ рд╕реНрдерд╛рди рд╢реЛрдзрдгреЗ рдХрдареАрдг рдирд╛рд╣реА (рдЖрдореНрд╣реА рддреНрдпрд╛рдВрдЪреЗ рд╡рд░реНрдгрди рдХрд░рдд рдирд╛рд╣реА рдЬреЗрдгреЗрдХрд░реВрди рдЖрдзреАрдЪ рдореЛрдард╛ рд▓реЗрдЦ рдлреБрдЧрд╡реВ рдирдпреЗ).

рдЕрдзрд┐рдХ рдЧреЛрдВрдзрд│

рдЖрдореНрд╣рд╛рд▓рд╛ рдлрдВрдХреНрд╢рдирдЪрд╛ рдкрддреНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓рд╛ рдЬреНрдпрд╛рдиреЗ рд░рд╣рджрд╛рд░реА рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХреЗрд▓реА рдкрд╛рд╣рд┐рдЬреЗ: 0x5F1AC. рдкрд░рдВрддреБ рдЖрдирдВрдж рдХрд░рдгреЗ рдЦреВрдк рд▓рд╡рдХрд░ рдЖрд╣реЗ: UC рдмреНрд░рд╛рдЙрдЭрд░рдЪреНрдпрд╛ рд╡рд┐рдХрд╕рдХрд╛рдВрдиреА рдЖрдордЪреНрдпрд╛рд╕рд╛рдареА рдЖрдгрдЦреА рдПрдХ рдЖрд╢реНрдЪрд░реНрдп рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЖрд╣реЗ.

Java рдХреЛрдбрдордзреНрдпреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЕреЕрд░реЗрдордзреВрди рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдкреНрд░рд╛рдкреНрдд рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рдЖрдореНрд╣рд╛рд▓рд╛ рдорд┐рд│рддреЗ
0x4D070 рдкрддреНрддреНрдпрд╛рд╡рд░реАрд▓ рдХрд╛рд░реНрдпрд╛рд╕рд╛рдареА. рдЖрдгрд┐ рдЗрдереЗ рдЖрдгрдЦреА рдПрдХ рдкреНрд░рдХрд╛рд░рдЪрд╛ рдХреЛрдб рдЧреЛрдВрдзрд│ рдЖрдкрд▓реА рд╡рд╛рдЯ рдкрд╛рд╣рдд рдЖрд╣реЗ.

рдЖрдореНрд╣реА R7 рдЖрдгрд┐ R4 рдордзреНрдпреЗ рджреЛрди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдареЗрд╡рддреЛ:

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рдЖрдореНрд╣реА рдкрд╣рд┐рд▓рд╛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ R11 рд╡рд░ рд╢рд┐рдлреНрдЯ рдХрд░рддреЛ:

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рдЯреЗрдмрд▓рд╡рд░реВрди рдкрддреНрддрд╛ рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА, рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╡рд╛рдкрд░рд╛:

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рдкрд╣рд┐рд▓реНрдпрд╛ рдкрддреНрддреНрдпрд╛рд╡рд░ рдЧреЗрд▓реНрдпрд╛рдирдВрддрд░, рджреБрд╕рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ, рдЬреЛ R4 рдордзреНрдпреЗ рдЖрд╣реЗ. рдЯреЗрдмрд▓рдордзреНрдпреЗ 230 рдШрдЯрдХ рдЖрд╣реЗрдд.

рддреНрдпрд╛рдмрджреНрджрд▓ рдХрд╛рдп рдХрд░рд╛рд╡реЗ? рддреБрдореНрд╣реА IDA рд▓рд╛ рд╕рд╛рдВрдЧреВ рд╢рдХрддрд╛ рдХреА рд╣реЗ рдПрдХ рд╕реНрд╡рд┐рдЪ рдЖрд╣реЗ: рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рд╛ -> рдЗрддрд░ -> рд╕реНрд╡рд┐рдЪ рдЖрдпрдбрд┐рдУрдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рд╛.

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рднрдпрдВрдХрд░ рдЖрд╣реЗ. рдкрд░рдВрддреБ, рдЬрдВрдЧрд▓рд╛рддреВрди рдорд╛рд░реНрдЧ рдХрд╛рдврдд рдЕрд╕рддрд╛рдирд╛, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЖрдзреАрдЪ рдкрд░рд┐рдЪрд┐рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдлрдВрдХреНрд╢рдирдЪрд╛ рдХреЙрд▓ рд▓рдХреНрд╖рд╛рдд рдпреЗрдИрд▓ sub_6115C:

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рдПрдХ рд╕реНрд╡рд┐рдЪ рд╣реЛрддрд╛ рдЬреНрдпрд╛рдордзреНрдпреЗ рдХреЗрд╕ 3 рдордзреНрдпреЗ RC4 рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рд╡рд╛рдкрд░реВрди рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рд╣реЛрддреЗ. рдЖрдгрд┐ рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдлрдВрдХреНрд╢рдирд▓рд╛ рдкрд╛рд╕ рдХреЗрд▓реЗрд▓реА рд░рдЪрдирд╛ рдкрд╛рд╕ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рдордзреВрди рднрд░рд▓реА рдЬрд╛рддреЗ doCommandNative. рдЖрдкрдг рддреЗрдереЗ рдХрд╛рдп рд╣реЛрддреЗ рддреЗ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡реВрдпрд╛ magicInt рдореВрд▓реНрдпрд╛рд╕рд╣ 16. рдЖрдореНрд╣реА рд╕рдВрдмрдВрдзрд┐рдд рдХреЗрд╕ рдкрд╛рд╣рддреЛ - рдЖрдгрд┐ рдЕрдиреЗрдХ рд╕рдВрдХреНрд░рдордгрд╛рдВрдирдВрддрд░ рдЖрдореНрд╣рд╛рд▓рд╛ рдХреЛрдб рд╕рд╛рдкрдбрддреЛ рдЬреНрдпрд╛рджреНрд╡рд╛рд░реЗ рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдУрд│рдЦрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ.

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рд╣реЗ рдПрдИрдПрд╕ рдЖрд╣реЗ!

рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЖрд╣реЗ, рдлрдХреНрдд рддреНрдпрд╛рдЪреЗ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдорд┐рд│рд╡рдгреЗ рдмрд╛рдХреА рдЖрд╣реЗ: рдореЛрдб, рдХреА рдЖрдгрд┐ рд╢рдХреНрдпрддреЛ, рдЗрдирд┐рд╢рд┐рдПрд▓рд╛рдпрдЭреЗрд╢рди рд╡реЗрдХреНрдЯрд░ (рддреНрдпрд╛рдЪреА рдЙрдкрд╕реНрдерд┐рддреА AES рдЕрд▓реНрдЧреЛрд░рд┐рджрдордЪреНрдпрд╛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдбрд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рддреЗ). рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╣ рд░рдЪрдирд╛ рдлрдВрдХреНрд╢рди рдХреЙрд▓рдЪреНрдпрд╛ рдЖрдзреА рдХреБрдареЗрддрд░реА рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ sub_6115C, рдкрд░рдВрддреБ рдХреЛрдбрдЪрд╛ рд╣рд╛ рднрд╛рдЧ рд╡рд┐рд╢реЗрд╖рддрдГ рдЕрд╕реНрдкрд╖реНрдЯ рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдХреЛрдб рдкреЕрдЪ рдХрд░рдгреНрдпрд╛рдЪреА рдХрд▓реНрдкрдирд╛ рдЙрджреНрднрд╡рддреЗ рдЬреЗрдгреЗрдХрд░реВрди рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдлрдВрдХреНрд╢рдирдЪреЗ рд╕рд░реНрд╡ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдЯрд╛рдХрд▓реЗ рдЬрд╛рддреАрд▓.

рдкреЕрдЪ

рд╕рд░реНрд╡ рдкреЕрдЪ рдХреЛрдб рдЕрд╕реЗрдВрдмреНрд▓реА рднрд╛рд╖реЗрдд рдореЕрдиреНрдпреБрдЕрд▓реА рд▓рд┐рд╣реВ рдирдпреЗ рдореНрд╣рдгреВрди, рддреБрдореНрд╣реА рдЕрдБрдбреНрд░реЙрдЗрдб рд╕реНрдЯреБрдбрд┐рдУ рд▓рд╛рдБрдЪ рдХрд░реВ рд╢рдХрддрд╛, рддреЗрдереЗ рдПрдХ рдлрдВрдХреНрд╢рди рд▓рд┐рд╣реВ рд╢рдХрддрд╛ рдЬреЗ рдЖрдордЪреНрдпрд╛ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдлрдВрдХреНрд╢рдирд╕рд╛рд░рдЦреЗрдЪ рдЗрдирдкреБрдЯ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рдЖрдгрд┐ рдлрд╛рдЗрд▓рд╡рд░ рд▓рд┐рд╣рд┐рддреЗ, рддреНрдпрд╛рдирдВрддрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд░реЗрд▓ рддреЛ рдХреЛрдб рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд░рд╛. рдЙрддреНрдкрдиреНрди рдХрд░рд╛.

UC рдмреНрд░рд╛рдЙрдЭрд░ рдЯреАрдордордзреАрд▓ рдЖрдордЪреНрдпрд╛ рдорд┐рддреНрд░рд╛рдВрдиреА рджреЗрдЦреАрд▓ рдХреЛрдб рдЬреЛрдбрдгреНрдпрд╛рдЪреНрдпрд╛ рд╕реЛрдпреАрдЪреА рдХрд╛рд│рдЬреА рдШреЗрддрд▓реА. рдЖрдкрдг рд▓рдХреНрд╖рд╛рдд рдареЗрд╡реВрдпрд╛ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдлрдВрдХреНрд╢рдирдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдЖрдкрд▓реНрдпрд╛рдХрдбреЗ рдХрдЪрд░рд╛ рдХреЛрдб рдЕрд╕рддреЛ рдЬреЛ рд╕рд╣рдЬрдкрдгреЗ рдЗрддрд░ рдХреЛрдгрддреНрдпрд╛рд╣реА рдмрд░реЛрдмрд░ рдмрджрд▓рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. рдЦреВрдк рд╕реЛрдпреАрд╕реНрдХрд░ ЁЯЩВ рддрдерд╛рдкрд┐, рд▓рдХреНрд╖реНрдп рдлрдВрдХреНрд╢рдирдЪреНрдпрд╛ рд╕реБрд░реВрд╡рд╛рддреАрд╕ рдХреЛрдбрд╕рд╛рдареА рдкреБрд░реЗрд╢реА рдЬрд╛рдЧрд╛ рдирд╛рд╣реА рдЬреА рдлрд╛рдЗрд▓рдордзреНрдпреЗ рд╕рд░реНрд╡ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдЬрддрди рдХрд░рддреЗ. рдорд▓рд╛ рддреЗ рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрд▓реЗ рдЖрдгрд┐ рд╢реЗрдЬрд╛рд░рдЪреНрдпрд╛ рдлрдВрдХреНрд╢рдиреНрд╕рдордзреАрд▓ рдХрдЪрд░рд╛ рдмреНрд▓реЙрдХреНрд╕ рд╡рд╛рдкрд░рд╛рд╡реЗ рд▓рд╛рдЧрд▓реЗ. рдПрдХреВрдг рдЪрд╛рд░ рднрд╛рдЧ рд╣реЛрддреЗ.

рдкрд╣рд┐рд▓рд╛ рднрд╛рдЧрдГ

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рдПрдЖрд░рдПрдо рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рдордзреНрдпреЗ, рдкрд╣рд┐рд▓реЗ рдЪрд╛рд░ рдлрдВрдХреНрд╢рди рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдиреЛрдВрджрдгреА R0-R3 рдордзреВрди рдкрд╛рд╕ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд, рдмрд╛рдХреАрдЪреЗ, рдЕрд╕рд▓реНрдпрд╛рд╕, рд╕реНрдЯреЕрдХрдордзреВрди рдкрд╛рд╕ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рдПрд▓рдЖрд░ рд░рдЬрд┐рд╕реНрдЯрд░рдордзреНрдпреЗ рдкрд░рддреАрдЪрд╛ рдкрддреНрддрд╛ рдЕрд╕рддреЛ. рд╣реЗ рд╕рд░реНрд╡ рдЬрддрди рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реВрди рдЖрдореНрд╣реА рддреНрдпрд╛рдЪреЗ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдЯрд╛рдХрд▓реНрдпрд╛рдирдВрддрд░ рдлрдВрдХреНрд╢рди рдХрд╛рд░реНрдп рдХрд░реВ рд╢рдХреЗрд▓. рдЖрдореНрд╣реА рдкреНрд░рдХреНрд░рд┐рдпреЗрдд рд╡рд╛рдкрд░рдгрд╛рд░ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рд░рдЬрд┐рд╕реНрдЯрд░реНрд╕ рджреЗрдЦреАрд▓ рд╕реЗрд╡реНрд╣ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдЖрдореНрд╣реА PUSH.W {R0-R10,LR} рдХрд░рддреЛ. R7 рдордзреНрдпреЗ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╕реНрдЯреЕрдХрджреНрд╡рд╛рд░реЗ рдлрдВрдХреНрд╢рдирд▓рд╛ рдкрд╛рд╕ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рдЪреНрдпрд╛ рд╕реВрдЪреАрдЪрд╛ рдкрддреНрддрд╛ рдорд┐рд│рддреЛ.

рдлрдВрдХреНрд╢рди рд╡рд╛рдкрд░рдгреЗ fopen рдлрд╛рдИрд▓ рдЙрдШрдбреВ /data/local/tmp/aes "ab" рдореЛрдбрдордзреНрдпреЗ
рдореНрд╣рдгрдЬреЗ рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА. R0 рдордзреНрдпреЗ рдЖрдореНрд╣реА рдлрд╛рдЗрд▓ рдирд╛рд╡рд╛рдЪрд╛ рдкрддреНрддрд╛ рд▓реЛрдб рдХрд░рддреЛ, R1 рдордзреНрдпреЗ - рдореЛрдб рджрд░реНрд╢рд╡рд┐рдгрд╛рд▒реНрдпрд╛ рдУрд│реАрдЪрд╛ рдкрддреНрддрд╛. рдЖрдгрд┐ рдпреЗрдереЗ рдХрдЪрд░рд╛ рдХреЛрдб рд╕рдВрдкрддреЛ, рдореНрд╣рдгреВрди рдЖрдкрдг рдкреБрдвреАрд▓ рдлрдВрдХреНрд╢рдирдХрдбреЗ рдЬрд╛рдК. рддреЗ рдХрд╛рд░реНрдп рдХрд░рдгреЗ рд╕реБрд░реВ рдареЗрд╡рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдлрдВрдХреНрд╢рдирдЪреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдбрдордзреНрдпреЗ рд╕рдВрдХреНрд░рдордг рдареЗрд╡рд▓реЗ, рдХрдЪрд░рд╛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рддреЛ рдЖрдгрд┐ рдХрдЪрд░рд╛рдРрд╡рдЬреА рдЖрдореНрд╣реА рдкреЕрдЪрдЪреА рдирд┐рд░рдВрддрд░рддрд╛ рдЬреЛрдбрддреЛ.

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рдХреЙрд▓ рдХрд░рдд рдЖрд╣реЗ fopen.

рдлрдВрдХреНрд╢рдирдЪреЗ рдкрд╣рд┐рд▓реЗ рддреАрди рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ aes рдкреНрд░рдХрд╛рд░ рдЖрд╣реЗ int. рдЖрдореНрд╣реА рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рд╕реНрдЯреЕрдХрдордзреНрдпреЗ рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реЗрд╡реНрд╣ рдХреЗрд▓реНрдпрд╛рдореБрд│реЗ, рдЖрдореНрд╣реА рдлрдВрдХреНрд╢рди рдлрдХреНрдд рдкрд╛рд╕ рдХрд░реВ рд╢рдХрддреЛ рд▓рд┐рд╣рд╛ рд╕реНрдЯреЕрдХрд╡рд░ рддреНрдпрд╛рдВрдЪреЗ рдкрддреНрддреЗ.

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/тАЭ рдорд┐рд│реЗрд▓, APK рдордзреНрдпреЗ рддреНрдпрд╛ рдирд╛рд╡рд╛рдЪреЗ рдлреЛрд▓реНрдбрд░ рддрдпрд╛рд░ рдХрд░рд╛ рдЖрдгрд┐ рддреЗрдереЗ рдЧрд┐рд▓рд╣рд░реА рдмреНрд░рд╛рдЙрдЭрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬреЛрдбрд╛.

рдЖрдореНрд╣реА рдПрдХрддреНрд░ рдХрд░рддреЛ, рд╕рд╛рдЗрди рдЗрди рдХрд░рддреЛ, рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЛ, рд▓реЙрдиреНрдЪ рдХрд░рддреЛ. рдмрд┐рдВрдЧреЛ! рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдХрд┐рд▓реНрд▓реА рдЖрд╣реЗ!

MitM

рдЖрдореНрд╣рд╛рд▓рд╛ рдПрдХ рдХреА рдЖрдгрд┐ рдХреАрдЪреНрдпрд╛ рдмрд░реЛрдмрд░реАрдЪрд╛ рдЗрдирд┐рд╢рд┐рдПрд▓рд╛рдпрдЭреЗрд╢рди рд╡реЗрдХреНрдЯрд░ рдорд┐рд│рд╛рд▓рд╛. CBC рдореЛрдбрдордзреНрдпреЗ рд╕рд░реНрд╡реНрд╣рд░ рдкреНрд░рддрд┐рд╕рд╛рдж рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВрдпрд╛.

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рдЖрдореНрд╣реА рд╕рдВрдЧреНрд░рд╣рдг URL рдкрд╛рд╣рддреЛ, MD5 рд╕рд╛рд░рдЦреЗ рдХрд╛рд╣реАрддрд░реА, тАЬextract_unzipsizeтАЭ рдЖрдгрд┐ рд╕рдВрдЦреНрдпрд╛. рдЖрдореНрд╣реА рддрдкрд╛рд╕рддреЛ: рд╕рдВрдЧреНрд░рд╣рдгрд╛рдЪрд╛ MD5 рд╕рдорд╛рди рдЖрд╣реЗ, рдЕрдирдкреЕрдХ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд▓рд╛рдпрдмреНрд░рд░реАрдЪрд╛ рдЖрдХрд╛рд░ рд╕рдорд╛рди рдЖрд╣реЗ. рдЖрдореНрд╣реА рд╣реА рд▓рд╛рдпрдмреНрд░рд░реА рдкреЕрдЪ рдХрд░реВрди рдмреНрд░рд╛рдЙрдЭрд░рд▓рд╛ рджреЗрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рдд рдЖрд╣реЛрдд. рдЖрдордЪреА рдкреЕрдЪ рдХреЗрд▓реЗрд▓реА рд▓рд╛рдпрдмреНрд░рд░реА рд▓реЛрдб рдЭрд╛рд▓реА рдЖрд╣реЗ рд╣реЗ рджрд╛рдЦрд╡рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА тАЬPWNED!тАЭ рдпрд╛ рдордЬрдХреБрд░рд╛рд╕рд╣ рдПрд╕рдПрдордПрд╕ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪрд╛ рд╣реЗрддреВ рд▓рд╛рдБрдЪ рдХрд░реВ. рдЖрдореНрд╣реА рд╕рд░реНрд╡реНрд╣рд░рд╡рд░реВрди рджреЛрди рдкреНрд░рддрд┐рд╕рд╛рдж рдмрджрд▓реВ: puds.ucweb.com/upgrade/index.xhtml рдЖрдгрд┐ рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА. рдкреНрд░рдердо рдЖрдореНрд╣реА MD5 рдкреБрдирд░реНрд╕реНрдерд┐рдд рдХрд░рддреЛ (рдЕрдирдкреЕрдХ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рдЖрдХрд╛рд░ рдмрджрд▓рдд рдирд╛рд╣реА), рджреБрд╕рд▒реНрдпрд╛рдордзреНрдпреЗ рдЖрдореНрд╣реА рдкреЕрдЪ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд▓рд╛рдпрдмреНрд░рд░реАрд╕рд╣ рд╕рдВрдЧреНрд░рд╣рдг рджреЗрддреЛ.

рдмреНрд░рд╛рдЙрдЭрд░ рдЕрдиреЗрдХ рд╡реЗрд│рд╛ рд╕рдВрдЧреНрд░рд╣рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЛ, рддреНрдпрд╛рдирдВрддрд░ рддреЛ рддреНрд░реБрдЯреА рджреЗрддреЛ. рд╡рд░рд╡рд░ рдкрд╛рд╣рддрд╛ рдХрд╛рд╣реАрддрд░реА
рддреНрдпрд╛рд▓рд╛ рдЖрд╡рдбрдд рдирд╛рд╣реА. рдпрд╛ рдЧреЛрдВрдзрд│рд▓реЗрд▓реНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗрд▓реНрдпрд╛рдореБрд│реЗ, рдЕрд╕реЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА рд╕рд░реНрд╡реНрд╣рд░ рд╕рдВрдЧреНрд░рд╣рдгрд╛рдЪрд╛ рдЖрдХрд╛рд░ рджреЗрдЦреАрд▓ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддреЛ:

UC рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдд рдЖрд╣реЗ

рд╣реЗ LEB128 рдордзреНрдпреЗ рдПрдиреНрдХреЛрдб рдХреЗрд▓реЗрд▓реЗ рдЖрд╣реЗ. рдкреЕрдЪрдирдВрддрд░, рд▓рд╛рдпрдмреНрд░рд░реАрд╕рд╣ рд╕рдВрдЧреНрд░рд╣рдгрд╛рдЪрд╛ рдЖрдХрд╛рд░ рдереЛрдбрд╛ рдмрджрд▓рд▓рд╛, рдореНрд╣рдгреВрди рдмреНрд░рд╛рдЙрдЭрд░рдиреЗ рдЕрд╕реЗ рдорд╛рдирд▓реЗ рдХреА рд╕рдВрдЧреНрд░рд╣рдг рдХреБрдЯрд┐рд▓рдкрдгреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рд╣реЛрддреЗ рдЖрдгрд┐ рдЕрдиреЗрдХ рдкреНрд░рдпрддреНрдирд╛рдВрдирдВрддрд░ рддреНрдпрд╛рдд рддреНрд░реБрдЯреА рдЖрд▓реА.

рдЖрдореНрд╣реА рд╕рдВрдЧреНрд░рд╣рдгрд╛рдЪрд╛ рдЖрдХрд╛рд░ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддреЛ... рдЖрдгрд┐ - рд╡рд┐рдЬрдп! ЁЯЩВ рдкрд░рд┐рдгрд╛рдо рд╡реНрд╣рд┐рдбрд┐рдУрдордзреНрдпреЗ рдЖрд╣реЗ.

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

рдкрд░рд┐рдгрд╛рдо рдЖрдгрд┐ рд╡рд┐рдХрд╕рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛

рддреНрдпрд╛рдЪ рдкреНрд░рдХрд╛рд░реЗ, рд╣реЕрдХрд░реНрд╕ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд┐рддрд░рд┐рдд рдЖрдгрд┐ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА UC рдмреНрд░рд╛рдЙрдЭрд░рдЪреНрдпрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВ рд╢рдХрддрд╛рдд. рд╣реА рд▓рд╛рдпрдмреНрд░рд░реА рдмреНрд░рд╛рдЙрдЭрд░рдЪреНрдпрд╛ рд╕рдВрджрд░реНрднрд╛рдд рдХрд╛рдо рдХрд░рддреАрд▓, рддреНрдпрд╛рдореБрд│реЗ рддреНрдпрд╛рдВрдирд╛ рддреНрдпрд╛рдЪреНрдпрд╛ рд╕рд░реНрд╡ рд╕рд┐рд╕реНрдЯрдо рдкрд░рд╡рд╛рдирдЧреНрдпрд╛ рдорд┐рд│рддреАрд▓. рдкрд░рд┐рдгрд╛рдореА, рдлрд┐рд╢рд┐рдВрдЧ рд╡рд┐рдВрдбреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛, рддрд╕реЗрдЪ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рд▓реЙрдЧрд┐рди, рдкрд╛рд╕рд╡рд░реНрдб рдЖрдгрд┐ рдХреБрдХреАрдЬрд╕рд╣ рдСрд░реЗрдВрдЬ рдЪрд╛рдпрдиреАрдЬ рдЧрд┐рд▓рд╣рд░реАрдЪреНрдпрд╛ рдХрд╛рд░реНрдпрд░рдд рдлрд╛рдЗрд▓реНрд╕рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢.

рдЖрдореНрд╣реА UC рдмреНрд░рд╛рдЙрдЭрд░рдЪреНрдпрд╛ рд╡рд┐рдХрд╕рдХрд╛рдВрд╢реА рд╕рдВрдкрд░реНрдХ рд╕рд╛рдзрд▓рд╛ рдЖрдгрд┐ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдврд│рд▓реЗрд▓реНрдпрд╛ рд╕рдорд╕реНрдпреЗрдмрджреНрджрд▓ рддреНрдпрд╛рдВрдирд╛ рдорд╛рд╣рд┐рддреА рджрд┐рд▓реА, рдЕрд╕реБрд░рдХреНрд╖рд┐рддрддрд╛ рдЖрдгрд┐ рддреНрдпрд╛рдЪрд╛ рдзреЛрдХрд╛ рджрд░реНрд╢рд╡рд┐рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛, рдкрд░рдВрддреБ рддреНрдпрд╛рдВрдиреА рдЖрдордЪреНрдпрд╛рд╢реА рдХрд╛рд╣реАрд╣реА рдЪрд░реНрдЪрд╛ рдХреЗрд▓реА рдирд╛рд╣реА. рджрд░рдореНрдпрд╛рди, рдмреНрд░рд╛рдЙрдЭрд░рдиреЗ рддреНрдпрд╛рдЪреЗ рдзреЛрдХрд╛рджрд╛рдпрдХ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рд╕рд╛рдзреНрдпрд╛ рджреГрд╖реНрдЯреАрдХреНрд╖реЗрдкрд╛рдд рджрд╛рдЦрд╡рдгреЗ рд╕реБрд░реВ рдареЗрд╡рд▓реЗ. рдкрдг рдПрдХрджрд╛ рдЖрдореНрд╣реА рдЕрд╕реБрд░рдХреНрд╖рд┐рддрддреЗрдЪреЗ рддрдкрд╢реАрд▓ рдЙрдШрдб рдХреЗрд▓реНрдпрд╛рд╡рд░, рдкреВрд░реНрд╡реАрд╕рд╛рд░рдЦреЗ рджреБрд░реНрд▓рдХреНрд╖ рдХрд░рдгреЗ рд╢рдХреНрдп рдирд╡реНрд╣рддреЗ. 27 рдорд╛рд░реНрдЪ рд╣реЛрддрд╛
UC рдмреНрд░рд╛рдЙрдЭрд░ 12.10.9.1193 рдЪреА рдирд╡реАрди рдЖрд╡реГрддреНрддреА рд░рд┐рд▓реАрдЭ рдЭрд╛рд▓реА, рдЬреНрдпрд╛рдиреЗ HTTPS рджреНрд╡рд╛рд░реЗ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдкреНрд░рд╡реЗрд╢ рдХреЗрд▓рд╛: puds.ucweb.com/upgrade/index.xhtml.

рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, "рдирд┐рд░рд╛рдХрд░рдг" рдирдВрддрд░ рдЖрдгрд┐ рд╣рд╛ рд▓реЗрдЦ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪреНрдпрд╛ рд╡реЗрд│реЗрдкрд░реНрдпрдВрдд, рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рдкреАрдбреАрдПрдл рдЙрдШрдбрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓реНрдпрд╛рдореБрд│реЗ "рдЕрд░реЗрд░реЗ, рдХрд╛рд╣реАрддрд░реА рдЪреВрдХ рдЭрд╛рд▓реА!" рдордЬрдХреБрд░рд╛рд╕рд╣ рдПрдХ рддреНрд░реБрдЯреА рд╕рдВрджреЗрд╢ рдЖрд▓рд╛. рдкреАрдбреАрдПрдл рдЙрдШрдбрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддрд╛рдирд╛ рд╕рд░реНрд╡реНрд╣рд░рд▓рд╛ рд╡рд┐рдирдВрддреА рдХреЗрд▓реА рдЧреЗрд▓реА рдирд╡реНрд╣рддреА, рдкрд░рдВрддреБ рдмреНрд░рд╛рдЙрдЭрд░ рд▓реЙрдиреНрдЪ рдХреЗрд▓реНрдпрд╛рд╡рд░ рд╡рд┐рдирдВрддреА рдХреЗрд▓реА рдЧреЗрд▓реА рд╣реЛрддреА, рдЬреА Google Play рдирд┐рдпрдорд╛рдВрдЪреЗ рдЙрд▓реНрд▓рдВрдШрди рдХрд░реВрди рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреНрдпрд╛рдЪреА рд╕рддрдд рдХреНрд╖рдорддрд╛ рджрд░реНрд╢рд╡рддреЗ.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛