
рдкрд░рд┐рдЪрдп
рдорд╛рд░реНрдЪ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╣рдордиреЗ рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЕрд╕рддреНрдпрд╛рдкрд┐рдд рдХреЛрдб рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЫрд┐рдкреА рдХреНрд╖рдорддрд╛
рдХреА рд╕реВрдЪрдирд╛ рджреА ред рдЖрдЬ рд╣рдо рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╣реИрдХрд░реНрд╕ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдХрд╛рдлреА рдЖрдХреНрд░рд╛рдордХ рддрд░реАрдХреЗ рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдореИрд▓рд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╡реАрдбрд┐рдпреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЖрдбрд╝ рдореЗрдВ рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ (рдпрд╛рдиреА, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рд╡реЗ рдкреЛрд░реНрдиреЛрдЧреНрд░рд╛рдлрд╝реА рдпрд╛ рдХреБрдЫ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдПрдкреАрдХреЗ рдлрд╝рд╛рдЗрд▓реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рдереЗ), рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдЖрдЙрдЯрдбреЗрдЯреЗрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛рдЬрдирдХ рдмреИрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╡рд┐рдЬреНрдЮрд╛рдкрд┐рдд рдпрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рддред рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡реАрдХреЗ рд╕рдореВрд╣ рдХрд╛ рдПрдХ
рд╡рд┐рд╖рдп рдерд╛ рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЭреВрдареЗ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░ рд╕рдХрддреЗ рдереЗ рдФрд░ рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддреЗ рдереЗред 2016 рдореЗрдВ, рд░реВрд╕реА рдореЗрдВ рднреА рдПрдХ
рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдерд╛ (рд╣рд╛рдБ, рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдПрдХ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдЬреЛ рд╡рд┐рдЬреНрдЮрд╛рдкрдиреЛрдВ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддрд╛ рд╣реИ)ред
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, UC Browser рдХреЛ Google Play рд╕реЗ 500,000,000 рдмрд╛рд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ Google Chrome рдЙрд╕ рд╢реАрд░реНрд╖ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдлрд▓ рд░рд╣рд╛ рд╣реИред рд╕рдореАрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ, рдЖрдк рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢рд┐рдХрд╛рдпрддреЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ Google Play рдкрд░ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╣рдорд╛рд░реЗ рдЕрдзреНрдпрдпрди рдХрд╛ рдХрд╛рд░рдг рдерд╛: рд╣рдо рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдХрд┐ рдХреНрдпрд╛ рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреБрдЫ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдФрд░ рдпрд╣ рд╣реИ! рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рдЬреЛ
рдРрдк рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд▓рд┐рдП Google Play рдХреА рдиреАрддрд┐ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИ ред рдФрд░ рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗрд╡рд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ; рдпрд╣ рдЗрд╕реЗ рдмреЗрд╡рдЬрд╣ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд┐рдЯрдо рд╣рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдЕрдзреНрдпрдпрди рдХреЗ рд╕рдордп Google Play рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдП рдЧрдП UC рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рдм рдХреБрдЫ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
package: com.UCMobile.intl versionName: 12.10.8.1172 versionCode: 10598 sha1 APK-file: f5edb2243413c777172f6362876041eb0c3a928c
рд╣рдорд▓рд╛ рд╡реЗрдХреНрдЯрд░
UC Browser рдХреЗ рдкреНрд░рдХрдЯреАрдХрд░рдг рдореЗрдВ
com.uc.deployment.UpgradeDeployService рдирд╛рдо рдХрд╛
рдЯреЗрд▓реНрдЯреЗрд▓ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕реЗрд╡рд╛ рд╣реИред
<service android:exported="false" android:name="com.uc.deployment.UpgradeDeployService" android:process=":deploy" />
рдЬрдм рдпрд╣ рд╕реЗрд╡рд╛ рд▓реЙрдиреНрдЪ рд╣реЛрддреА рд╣реИ, рддреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░
puds.ucweb.com/upgrad/index.xhtml рдкрд░ рдПрдХ POST рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдлрд╝рд┐рдХ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдХрд┐рд╕реА рднреА рдЕрджреНрдпрддрди рдпрд╛ рдПрдХ рдирдП рдореЙрдбреНрдпреВрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рджреМрд░рд╛рди, рд╣рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рдРрд╕реА рдХрдорд╛рдВрдб рдХрднреА рдирд╣реАрдВ рдорд┐рд▓реА, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЬрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреАрдбреАрдПрдл рдлрд╛рдЗрд▓ рдЦреЛрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдпрд╣ рдЙрдкрд░реЛрдХреНрдд рдкрддреЗ рдкрд░ рдЕрдиреБрд░реЛрдз рдХреЛ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдПрдХ рдореВрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╣рдорд▓реЗ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ - рдПрдХ рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреАрдбреАрдПрдл рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ - рдПрдкреАрдХреЗ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рднреЗрдЬреЗ рдЧрдП рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЕрдиреБрдорддрд┐ рдХреЗ рдмрд┐рдирд╛ рдХреБрдЫ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрд╢рди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдХреЗрд╡рд▓ рд╣реБрдХ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдерд╛ рдФрд░ рдлрд┐рд░ рдкреАрдбреАрдПрдл рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдХреБрдЫ рдЕрд▓рдЧ рд╕реЗ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
рдЗрд╕рд▓рд┐рдП рдЬрдм рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реАрдзреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреАрдбреАрдПрдл рдлрд╛рдЗрд▓ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдЯреНрд░реИрдлрд╝рд┐рдХ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрд░реЛрдз рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ,
puds.ucweb.com/upgrad/index.xhtml рдкрд░ POST рдЕрдиреБрд░реЛрдз рд╣реИ, рдлрд┐рд░ PDF рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдХрд╛рд░реНрдпрд╛рд▓рдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдкреАрдбрд╝рд┐рдд рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛рддреА рд╣реИред рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ, рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкрд╣рд▓рд╛ рдЕрдиреБрд░реЛрдз рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рднреЗрдЬрддрд╛ рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░, рдХреНрдпреЛрдВрдХрд┐ рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдЙрдкрдпреБрдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ), рдФрд░ рд╕рд░реНрд╡рд░ рдЙрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдЙрд╕рдХрд╛ рдкрддрд╛ рдФрд░ рд╢рд╛рдпрдж рдХреБрдЫ рдФрд░ред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдиреБрд░реЛрдз рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╣реИред
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдХ рдЬрд╝рд┐рдк рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдкреАрдбрд╝рд┐рдд рд╣реИ рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЯреНрд░реИрдлрд╝рд┐рдХ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЛрдб рдХреА рдЦреЛрдЬ рдХрд░рдирд╛
рдЖрдЗрдП рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рд░реНрд╡рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рддреЗ рд╣реИрдВред
Com.uc.deployment.UpgradeDeployService рд╡рд░реНрдЧ рдХреЗ рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
onStartCommand рд╡рд┐рдзрд┐ рд╕реЗ , рд╣рдо
com.uc.deployment.bx рдкрд░
рдЬрд╛рдПрдБ , рдФрд░ рдлрд┐рд░
com.uc.bodser.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(); mb(v3_4); h v4_2 = new h(); mb(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.baacgetCpuArch())); v3_2.add(g.fs("cpu_arch", com.uc.baacPb())); String v4_3 = com.uc.baacPd(); 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.baacPc())); 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.baacJl()))); v3_2.add(g.fs("ram_1", String.valueOf(com.uc.baahPo()))); v3_2.add(g.fs("totalram", String.valueOf(com.uc.baahOL()))); 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 = gi(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.dci 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.dci$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); mb(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 = gj(arg11[2], v7); } if(v7 == null) { goto label_57; } if(v5 != 0) { v1_1 = gP(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 = gb(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 = cc(arg2, c.adu); } else if(arg1 == 11) { arg2 = m.aF(arg2); } else if(arg1 != 0x1F) { } else { arg2 = EncryptHelper.decrypt(arg2); } return arg2; }
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЪрдпрди рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдмрд╛рдЗрдЯ рдЬреЛ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ 0x1F рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рддреАрди рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рддреЗ рд╣реИрдВред рдПрдХ-рджреЛ рдЫрд▓рд╛рдВрдЧ рдХреЗ рдмрд╛рдж, рд╣рдо
рдЯреЗрд▓рдЯреЗрд▓ рдирд╛рдо,
рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдмрд╛рдпрдЯреЗрд╕рдмрд╛рдпрдХреЗ рдХреЗ рд╕рд╛рде рд╡рд┐рдзрд┐ рдкреНрд░рд╛рдкреНрдд
рдХрд░рддреЗ рд╣реИрдВ ред рдЕрдм, рджреЛ рдФрд░ рдмрд╛рдЗрдЯреНрд╕ рд╣рдорд╛рд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдирд╛рддреЗ рд╣реИрдВред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╕рдВрджреЗрд╢ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА рдХрд╛ рдЪрдпрди рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
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];
рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдХреВрджрддреЗ рд╣реБрдП, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░рдореБрдЦ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИ, рдХреБрдВрдЬреА рд╣реА рдирд╣реАрдВред рдХреБрдВрдЬреА рдЪрдпрди рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рдЕрдЧрд▓реА рд╡рд┐рдзрд┐ рдореЗрдВ, рдореМрдЬреВрджрд╛ рд╡рд╛рд▓реЗ рдореЗрдВ рджреЛ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХреБрд▓ рдЪрд╛рд░ рдорд┐рд▓рддреЗ рд╣реИрдВред рдЬрд╛рджреВ рдирдВрдмрд░ 16, рдкреНрд░рдореБрдЦ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛, рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛, рдФрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЦрд╛рд▓реА)ред
public final byte[] l(String keyId, byte[] encrypted) throws SecException { return this.ayJ().staticBinarySafeDecryptNoB64(16, keyId, encrypted, ""); }
рдХреВрджрдиреЗ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдмрд╛рдж, рд╣рдо
com.alibaba.wireless.security.open.staticdataencrypt.IStaticDataEnnryptComponent рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА
staticBinarySafeDecryptNoB64 рд╡рд┐рдзрд┐ рджреЗрдЦрддреЗ рд╣реИрдВред рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдореЗрдВ рдХреЛрдИ рд╡рд░реНрдЧ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд░реНрдЧ рдлрд╝рд╛рдЗрд▓
lib / armeabi-v7a / libsgmain.so рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ , рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмрд▓реНрдХрд┐ .JAR рдЬрд┐рд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рд╣рдо рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рд╡рд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИ:
package com.alibaba.wireless.security.ai;
рдпрд╣рд╛рдВ, рд╣рдорд╛рд░реА рдкреИрд░рд╛рдореАрдЯрд░ рд╕реВрдЪреА рджреЛ рдФрд░ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рд╕рд╛рде рдкреВрд░рдХ рд╣реИ: 2 рдФрд░ 0. рдЬрд╛рд╣рд┐рд░ рд╣реИ, 2 рдХрд╛ рдЕрд░реНрде рд╣реИ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди, рдЬреИрд╕рд╛ рдХрд┐
javax.crypto.Cipher рд╕рд┐рд╕реНрдЯрдо рдХреНрд▓рд╛рд╕ рдХреА
рд╡рд┐рдзрд┐ рдореЗрдВ рд╣реИред рдлрд┐рд░, рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА 10601 рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░рд╛рдЙрдЯрд░ рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрдорд╛рдВрдб рдирдВрдмрд░ рд╣реИред
рдЬрдВрдк рдХреА рдЕрдЧрд▓реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ
RouterComponent рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░
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); } }
рдЬреЗрдПрдирдЖрдИрд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреНрд▓рд╛рд╕ рднреА рд╣реИ, рдЬрд╣рд╛рдВ рджреЗрд╢реА
doCandandNative рдкрджреНрдзрддрд┐ рдШреЛрд╖рд┐рдд рдХреА рдЧрдИ рд╣реИ:
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 ред рд╣рдо рдЗрд╕реЗ рдЖрдИрдбреАрдП рдореЗрдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдиреБрднрд╛рдЧ рд╢реАрд░реНрд╖ рд▓реЗрдЦ рддрд╛рд▓рд┐рдХрд╛ рдЕрдорд╛рдиреНрдп рд╣реИред рдпрд╣ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реИрд╕реЗ рднреА рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реЗрдбрд░ рдЯреЗрдмрд▓ ELF рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЙрд╕рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдо рд╣реЗрдбрд░ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рд╢реВрдиреНрдп рдХрд░рддреЗ рд╣реБрдП, рдмрд╕ рд╣реЗрдбрд░ рдЯреЗрдмрд▓ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВред

рдлрд┐рд░ рд╣рдо рдЖрдИрдбреАрдП рдореЗрдВ рдлрд╛рдЗрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рддреЗ рд╣реИрдВред
рдЬрд╛рд╡рд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЛ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдореВрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ рдореВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рд╡рд┐рдзрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢рд╛рдорд┐рд▓ рд╣реИред рдкрд╣рд▓рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдПрдХ рдирд╛рдо рджрд┐рдпрд╛ рдЬрд╛рдП:
Java_package_name_ClassName_methodName ред рджреВрд╕рд░рд╛ рдкрдВрдЬреАрдХрд░рдг рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (JNI_OnLoad рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ) рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдЗрд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ рдЖрдк рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдирд╛рдо рдЗрд╕ рддрд░рд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
Java_com_taobao_wireless_security_adapter_JNICLibrary_doCommandNative ред рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдпрд╣ рдирд╛рдо рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдореЗрдВ RegisterNatives рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рд╣реЛрдЧреАред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо JNI_OnLoad рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦрддреЗ рд╣реИрдВ:

рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ? рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдПрдЖрд░рдПрдо рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИрдВред рдкрд╣рд▓рд╛ рдирд┐рд░реНрджреЗрд╢ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдзрдХреНрдХрд╛ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, R0, R1, рдФрд░ R2), рд╕рд╛рде рд╣реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░рд┐рдЯрд░реНрди рдкрддреЗ рдХреЗ рд╕рд╛рде LR рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рднреАред рдЕрдВрддрд┐рдо рдЕрдиреБрджреЗрд╢ рд╕рд╣реЗрдЬреЗ рдЧрдП рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреАрд╕реА рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд░рд┐рдЯрд░реНрди рдПрдбреНрд░реЗрд╕ рдбрд╛рд▓рддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд▓реМрдЯрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рддреЛ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдирд┐рд░реНрджреЗрд╢ рд░рд┐рдЯрд░реНрди рдПрдбреНрд░реЗрд╕ рдХреЛ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ, рд╕реНрдЯреИрдХ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрддред рдЖрдЗрдП рдЧрдгрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред рдкрддрд╛ 1xB130 R1 рдореЗрдВ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рд╕реЗ 5 рдШрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ R0 рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ 0x10 рдХрд╛ рдЬреЛрдбрд╝ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдпрд╣ 0xB13B рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдИрдбреАрдП рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рдирд┐рд░реНрджреЗрд╢ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рдВрдХреНрд╢рди рд░рд┐рдЯрд░реНрди рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рдкрддреЗ 0xB13B рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд░рддрд╛ рд╣реИред
рдЕрдм рд╣рдо рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддреЗ рд╣реИрдВ рдХрд┐ рдПрдЖрд░рдПрдо рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рджреЛ рдореЛрдб рдФрд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рджреЛ рд╕реЗрдЯ рд╣реИрдВ - рдПрдЖрд░рдПрдо рдФрд░ рдердореНрдмред рдкрддреЗ рдХрд╛ рдХрдо-рдХреНрд░рдо рдмрд┐рдЯ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд┐рд╕ рдЕрдиреБрджреЗрд╢ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рд╡рд╣ рдкрддрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 0xB13A рд╣реИ, рдЬрдмрдХрд┐ рдХрдо-рдХреНрд░рдо рдмрд┐рдЯ рдореЗрдВ рдорд╛рди рдердВрдм рдореЛрдб рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рд╕рдорд╛рди "рдПрдбреЗрдкреНрдЯрд░" рдФрд░ рдХреБрдЫ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рдХрдЪрд░рд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдЙрди рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗред рдмрд╕ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд▓рдЧрднрдЧ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╢реБрд░реБрдЖрдд рдереЛрдбрд╝реА рдФрд░ рд╣реИред
рдЪреВрдВрдХрд┐ рдХреЛрдб рдореЗрдВ 0xB13A рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рд╕рдВрдХреНрд░рдордг рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдЖрдИрдбреАрдП рдкрд╣рдЪрд╛рди рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдВ рдХреЛрдб рд╣реИред рдЗрд╕реА рдХрд╛рд░рдг рд╕реЗ, рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛрдб рдХреЛ рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ, рдЬреЛ рдереЛрдбрд╝рд╛ рдкреЗрдЪреАрджрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИред рддреЛ, рд╣рдо рдЖрдИрдбреАрдП рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдб рд╣реИ, рдФрд░ рдРрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИ:

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:
рд╣рдо рдХрд░реНрд╕рд░ рдХреЛ 0xB26A рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░ рд░рдЦрддреЗ рд╣реИрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рдФрд░ 0xB4B0 рдкрд░ рд╕рдВрдХреНрд░рдордг рджреЗрдЦрддреЗ рд╣реИрдВ:

рдлрд┐рд░, рдЖрдИрдбреАрдП рдЗрд╕ рд╕реНрдерд╛рди рдХреЛ рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдиреНрдпрддрд╛ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рд╣рдо рдЗрд╕рдХреА рдорджрдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╣рд╛рдВ рдПрдХ рдФрд░ рд╕рдВрд░рдЪрдирд╛ рджреЗрдЦрддреЗ рд╣реИрдВ:

рдмреАрдПрд▓рдПрдХреНрд╕ рдХреЗ рдмрд╛рдж рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рд░реНрджреЗрд╢ рдмрд╣реБрдд рд╕рд╛рд░реНрдердХ рдирд╣реАрдВ рд▓рдЧрддреЗ рд╣реИрдВ; рд╡реЗ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдСрдлрд╕реЗрдЯ рдХреА рддрд░рд╣ рд╣реИрдВред рд╣рдо рд╕рдм_4964 рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:

рджрд░рдЕрд╕рд▓, рдпрд╣ LR рд╕реЗ рдкрддреЗ рдкрд░ DWORD рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕ рдкрддреЗ рдкрд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдореА рдкрддреЗ рдкрд░ рдорд╛рди рд▓реЗрддрд╛ рд╣реИ рдФрд░ рд╕реНрдЯреИрдХ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд▓реМрдЯрдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реА рдСрдлрд╕реЗрдЯ рдХреЛ рдХреВрджрдиреЗ рдХреЗ рд▓рд┐рдП 4 рд╕реЗ LR рдЬреЛрдбрд╝рддрд╛ рд╣реИред рддрдм 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
рд╣рдо рдХрд░реНрд╕рд░ рдХреЛ рдЙрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдо рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдпрд╛рдиреА 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:
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо:

рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕рдм рдХреБрдЫ рдкреИрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЖрдИрдбреАрдП рдХреЛ рдЗрд╕рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдкреВрд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдЯреБрдХрдбрд╝реЗ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдЧрд╛ рдФрд░ рд╣рдо HexRays рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред
рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдирд╛
рд╣рдордиреЗ рд╕реАрдЦрд╛ рд╣реИ рдХрд┐ рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд░ рд╕реЗ
libsgmainso-6.4.36.so рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдорд╢реАрди рдХреЛрдб рдХреЗ
рдЕрд╡рд░реЛрдз рд╕реЗ рдХреИрд╕реЗ
рдирд┐рдкрдЯреЗрдВ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб
JNI_OnLoad рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
int __fastcall real_JNI_OnLoad(JavaVM *vm) { int result;
рдЖрдЗрдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд╛рд░реЛрдВ рдкрд░ рдЧреМрд░ рдХрд░реЗрдВ:
sub_73E24(&unk_83EA6, &v6, 49); clazz = (jclass)((int (__fastcall *)(JNIEnv *, int *))(*env)->FindClass)(env, &v6);
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐
рдЙрдк_73E24 рдлрд╝рдВрдХреНрд╢рди рд╡рд░реНрдЧ рдирд╛рдо рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб, рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрдлрд░ рдФрд░ рдПрдХ рдирдВрдмрд░ рдХреЗ рд╕рдорд╛рди рджрд┐рдЦрддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдПрдХ рдбрд┐рдХреНрд░рд┐рдкреНрдЯреЗрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдХреЗ рдмрд╛рдж рдмрдлрд░ рдореЗрдВ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдмрдлрд░
рдлрд╛рдЗрдВрдбрдХреНрд▓рд╛рд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рдорд╛рди рд╡рд░реНрдЧ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рддреЛ рд╕рдВрдЦреНрдпрд╛ рдмрдлрд░ рдХреЗ рдЖрдХрд╛рд░ рдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рд╣реИред рдХрдХреНрд╖рд╛ рдХреЗ рдирд╛рдо рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╣рдо рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдЖрдЗрдП
sub_73E24 рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдкрд░ рдПрдХ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░
рдбрд╛рд▓реЗрдВ ред
int __fastcall sub_73E56(unsigned __int8 *in, unsigned __int8 *out, size_t size) { int v4;
рдЙрдк_7AF78 рдлрд╝рдВрдХреНрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдХрд╛рд░ рдХреЗ рдмрд╛рдЗрдЯ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ (рд╣рдо рдЙрди рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗ)ред рдРрд╕реЗ рджреЛ рдХрдВрдЯреЗрдирд░ рдпрд╣рд╛рдВ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ: рдПрдХ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ "
DcO / lcK + h? M3c * q @ " рд╣реИ (рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдВрдЬреА рд╣реИ), рджреВрд╕рд░реЗ рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ рд╣реИред рджреЛрдиреЛрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ
рд╕рдм_6115C рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рд╣рдо рдпрд╣ рднреА рдиреЛрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ 3. рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝реАрд▓реНрдб рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред
int __fastcall sub_611B4(struc_1 *a1, _DWORD *a2) { int v3;
рдкрд╣рд▓реЗ рд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП рдорд╛рди 3 рдХреЗ рд╕рд╛рде рдлрд╝реАрд▓реНрдб рдХреЛ рд╕реНрд╡рд┐рдЪ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЗрдП рдХреЗрд╕ 3 рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ - рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛ рдкрд┐рдЫрд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╛рдиреА, рдХреБрдВрдЬреА рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛) рд╕рдм_6364C рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо sub_6364C рдХреЛ рдХрд░реАрдм рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо RC4 рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЛ рдкрд╣рдЪрд╛рди рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдФрд░ рдПрдХ рдХреБрдВрдЬреА рд╣реИред рдХрдХреНрд╖рд╛ рдХреЗ рдирд╛рдо рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ: рдХреЙрдо / рдЯреИрдпреВрдмреЛрдЗрд╕ / рд╡рд╛рдпрд░рд▓реЗрд╕ / рд╕реБрд░рдХреНрд╖рд╛ / рдПрдбрд╛рдкреНрдЯрд░ / рдЬреЗрдПрдирдЖрдИрд╕реАрдпреВрд▓реЗрдЯреНрд╕ред рд╢рд╛рдирджрд╛рд░! рд╣рдо рд╕рд╣реА рд░рд╛рд╕реНрддреЗ рдкрд░ рд╣реИрдВред
рдХрдорд╛рди рдХрд╛ рдкреЗрдбрд╝
рдЕрдм рд╣рдореЗрдВ
RegisterNatives рдкрд░ рдХреЙрд▓ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ
doCommandNative рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рд╣рдо
JNI_OnLoad рд╕реЗ
рдмреБрд▓рд╛рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ
рджреЗрдЦрддреЗ рд╣реИрдВ , рдФрд░ рдЗрд╕реЗ
рд╕рдм_7B0 рдореЗрдВ
рдЦреЛрдЬреЗрдВ :
int __fastcall sub_B7F6(JNIEnv *env, jclass clazz) { char signature[41];
рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ,
doCommandNative рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдореВрд▓ рд╡рд┐рдзрд┐ рдпрд╣рд╛рдВ рдкрдВрдЬреАрдХреГрдд рд╣реИред рдЕрдм рд╣рдо рдЗрд╕рдХрд╛ рдкрддрд╛ рдЬрд╛рдирддреЗ рд╣реИрдВред рдЖрдЗрдП рдирдЬрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред
int __fastcall doCommandNative(JNIEnv *env, jobject obj, int command, jarray args) { int v5;
рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрди рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реИ рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдореВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рд╕рдВрдЦреНрдпрд╛ 10601 рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред
рдХреЛрдб рд╕реЗ, рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрдорд╛рдВрдб рдирдВрдмрд░ рд╣рдореЗрдВ рддреАрди рдирдВрдмрд░ рджреЗрддрд╛ рд╣реИ: рдХрдорд╛рдВрдб / 10000, рдХрдорд╛рдВрдб% 10000/100, рдФрд░ рдХрдорд╛рдВрдб% 10 (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, 1, 6, рдФрд░ 1)ред рдпреЗ рддреАрди рдирдВрдмрд░, рд╕рд╛рде рд╣реА рдЬреЗрдПрдирдЖрдИрдПрдирдИрд╡реА рдХреЗ рд╕реВрдЪрдХ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЧрдП рддрд░реНрдХ, рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрди рддреАрди рдирдВрдмрд░реЛрдВ рдХреЗ рд╕рд╛рде (рд╣рдо рдЙрдиреНрд╣реЗрдВ рдПрди 1, рдПрди 2 рдФрд░ рдПрди 3 рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдВрдЧреЗ), рдПрдХ рдХрдорд╛рдВрдб рдЯреНрд░реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

рдкреЗрдбрд╝ рдХреЛ рдЬреЗрдПрдирдЖрдИ_рдСрдирд▓рд╛рдб рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рддреАрди рдирдВрдмрд░ рдкреЗрдбрд╝ рдореЗрдВ рд░рд╛рд╕реНрддрд╛ рдШреЗрд░рддреЗ рд╣реИрдВред рдкреЗрдбрд╝ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкрддреНрддреЗ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХрд╛ xorred рдкрддрд╛ рд╣реЛрддрд╛ рд╣реИред рдХреБрдВрдЬреА рдореВрд▓ рдиреЛрдб рдореЗрдВ рд╣реИред рдХреЛрдб рдореЗрдВ рдПрдХ рдЬрдЧрд╣ рдвреВрдВрдврдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рдЬрд┐рд╕ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЙрд╕реЗ рдкреЗрдбрд╝ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рд╣рдо рд╡рд╣рд╛рдВ рд╕рднреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВ (рд╣рдо рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЙрдирдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдордп рд╡реНрдпрддреАрдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ)ред
рдЕрдзрд┐рдХ рдЖрдкрддреНрддрд┐
рд╣рдореЗрдВ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрддрд╛ рдорд┐рд▓рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдирд╛ рд╣реИ: 0x5F1ACред рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдЖрд░рд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрд▓реНрдж рд╣реИ - рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рд╣реИред
рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ рдПрдХ рд╕рд░рдгреА рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо 0x4D070 рдкрд░ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВред рдПрдХ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХреЛрдб рдСрдмрдлреНрдпреВрдЬреЗрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред
рд╣рдо рддреЛ R7 рдФрд░ R4 рдореЗрдВ рджреЛ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЛ рдзрдХреНрдХрд╛ рджреЗрддреЗ рд╣реИрдВ:

рдкрд╣рд▓рд╛ рд╕реВрдЪрдХрд╛рдВрдХ R11 рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ:

рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдЗрд╕ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

рдкрд╣рд▓реЗ рдкрддреЗ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо R4 рд╕реЗ рджреВрд╕рд░реЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ 230 рддрддреНрд╡ рд╣реИрдВред
рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ? рд╣рдо рдЖрдИрдбреАрдП рдХреЛ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕реНрд╡рд┐рдЪ рд╣реИ: рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ -> рдЕрдиреНрдп -> тАЛтАЛрд╕реНрд╡рд┐рдЪ рдореБрд╣рд╛рд╡рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред

рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рднрдпрд╛рд╡рд╣ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдо рдХреЙрд▓ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдкрд░рд┐рдЪрд┐рдд рдЙрдк_6115C рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрд╕рдХреА рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдореЗрдВ:
рдорд╛рдорд▓реЗ рдореЗрдВ RC4 рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд╕рд╛рде рд╕реНрд╡рд┐рдЪ рдкреИрд░рд╛рдореАрдЯрд░ рдерд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рдВрд░рдЪрдирд╛ doCandandNative рдХреЛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рд╕реЗ рднрд░реА рд╣реБрдИ рд╣реИред рд╣рдореЗрдВ рдпрд╛рдж рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 16 рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдЬрд╛рджреВ рдерд╛ред рд╣рдо рдЗрд╕реА рдорд╛рдорд▓реЗ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рдХрдИ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рдмрд╛рдж, рдЙрд╕ рдХреЛрдб рдХреЛ рдвреВрдВрдврддреЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдПрдИрдПрд╕ рд╣реИ!рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдореЛрдб, рдХреБрдВрдЬреА, рдФрд░ (рд╕рдВрднрд╡рддрдГ) рдЖрд░рдВрднреАрдХрд░рдг рд╡реЗрдХреНрдЯрд░ (рдЗрд╕рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдПрдИрдПрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдСрдкрд░реЗрд╢рди рдореЛрдб рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ)ред рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рд╕рдм_6115C рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдХреЛрдб рдХрд╛ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ obfuscated рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдХреЛрдб рдХреЛ рдкреИрдЪ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рддрд╛рдХрд┐ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбрдВрдк рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗредрдкреИрдЪ
рдпрджрд┐ рдЖрдк рдЕрд╕реЗрдВрдмрд▓реА рднрд╛рд╖рд╛ рдХреЗ рд╕рднреА рдкреИрдЪ рдХреЛрдб рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдорд╛рди рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдкрд░ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБред рд╕рдВрдХрд▓рдХредрдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЯреАрдо рд╕реЗ рд╣рдорд╛рд░реЗ рдЕрдЪреНрдЫреЗ рджреЛрд╕реНрдд рднреА рдХреЛрдб рдЬреЛрдбрд╝рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ "рд╕реБрдирд┐рд╢реНрдЪрд┐рдд" рдХрд░рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдпрд╛рдж рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрдЪрд░рд╛ рдХреЛрдб рд╣реИ, рдЬрд┐рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЛрдб рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ :) рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЛрдб рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖реНрдп рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИред рд╣рдореЗрдВ рдЗрд╕реЗ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдФрд░ рдкрдбрд╝реЛрд╕реА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрдЪрд░рд╛ рдмреНрд▓реЙрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛ред рд╣рдореЗрдВ рдХреБрд▓ рдЪрд╛рд░ рднрд╛рдЧ рдорд┐рд▓реЗредрднрд╛рдЧ рдПрдХ:
ARM рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдкрд╣рд▓реЗ рдЪрд╛рд░ рдлрдВрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ R0-R3 рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЬрдмрдХрд┐ рдмрд╛рдХреА, рдпрджрд┐ рдХреЛрдИ рд╣реЛ, рд╕реНрдЯреИрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддрд╛ рд╣реИред рдПрд▓рдЖрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рд░рд┐рдЯрд░реНрди рдПрдбреНрд░реЗрд╕ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рд╣рдореЗрдВ рдЗрд╕ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╣рдо рдЗрд╕рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдбрдВрдк рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд╛рд░реНрдп рдХрд░ рд╕рдХреЗрдВред рд╣рдореЗрдВ рдЙрди рд╕рднреА рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рднреА рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╣рдо рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо PUSH.W {R0-R10, LR} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред R7 рдореЗрдВ, рд╣рдореЗрдВ рд╕реНрдЯреИрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕реВрдЪреА рдХрд╛ рдкрддрд╛ рдорд┐рд▓рддрд╛ рд╣реИредрдлреЛрдкреЗрди рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо "ab" рдореЛрдб рдореЗрдВ / рдбреЗрдЯрд╛ / рд╕реНрдерд╛рдиреАрдп / tmp / aes рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рддреЗ рд╣реИрдВ (рддрд╛рдХрд┐ рд╣рдо рдХреБрдЫ рдЬреЛрдбрд╝ рд╕рдХреЗрдВ)ред рдлрд┐рд░ рд╣рдо рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдкрддреЗ рдХреЛ R0 рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрддреЗ рдореЗрдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ R1 рдореЗрдВ рдореЛрдб рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдХрдЪрд░рд╛ рдХреЛрдб рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрдЧрд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗ, рддреЛ рд╣рдо рд╕рдВрдХреНрд░рдордг рдХреЛ рдХрдЪрд░рд╛ рд╕реЗ рдкрд╣рд▓реЗ, рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдФрд░ рдХрдЪрд░реЗ рдХреЛ рдмрд╛рдХреА рдкреИрдЪ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВред
рд╣рдо рддреЛ рдлреЛрдкреЗрди рдХрд╣рддреЗ рд╣реИрдВредрдПрдИрдПрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд╣рд▓реЗ рддреАрди рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдВрддрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рд╕реНрдЯреИрдХ рдкрд░ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕реНрдЯреИрдХ рдореЗрдВ рдЙрдирдХреЗ рдкрддреЗ рдХреЛ рдлрд╛рдЗрдЯрд╛рдЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдЧрд▓рд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддреАрди рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдХреБрдВрдЬреА, рдЖрд░рдВрднреАрдХрд░рдг рд╡реЗрдХреНрдЯрд░ рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ рд╣реЛрддрд╛ рд╣реИред
рдЕрдВрдд рдореЗрдВ, рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рдмрд╣рд╛рд▓ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдИрдПрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡рд╛рдкрд╕ рдирд┐рдпрдВрддреНрд░рдг рджреЗрддреЗ рд╣реИрдВредрд╣рдо рдкреИрдЪ рдХреА рдЧрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдПрдкреАрдХреЗ рдлрд╛рдЗрд▓ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдХрд┐рд╕реА рдбрд┐рд╡рд╛рдЗрд╕ рдпрд╛ рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВред рдЕрдм рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдбрдВрдк рдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗрд╡рд▓ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдбреЗрдЯрд╛ рднреА, рдФрд░ рд╕рднреА рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рд╣рдореЗрдВ рд╡рд╣ рдбреЗрдЯрд╛ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЬрд┐рд╕ рдЕрдиреБрд░реЛрдз рдХреА рд╣рдо рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдЯреНрд░реИрдлрд╝рд┐рдХ рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЪрд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд░ рдХреЗ рдкрд╛рд╕ рдпрд╣ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХрд╛ рдореМрдХрд╛ рди рд╣реЛ рдФрд░ рдлрд┐рд░ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреИрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓реЗ рд▓реЗрдВред рд╣рдо рдореБрдЦреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ onCreate рдореЗрдВ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред const/16 v1, 0x62 new-array v1, v1, [B fill-array-data v1, :encrypted_data const/16 v0, 0x1f invoke-static {v0, v1}, Lcom/uc/browser/core/d/c/g;->j(I[B)[B move-result-object v1 array-length v2, v1 invoke-static {v2}, Ljava/lang/String;->valueOf(I)Ljava/lang/String; move-result-object v2 const-string v0, "ololo" invoke-static {v0, v2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
рд╣рдо рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рддреЗ рд╣реИрдВ, рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдПрдХ NullPointerException рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдзрд┐ рдПрдХ рд╢реВрдиреНрдп рдорд╛рди рд▓реМрдЯрд╛рддреА рд╣реИредрдЖрдЧреЗ рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдорд┐рд▓рд╛, рдЬрд┐рд╕рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рддрд╛рд░ рдереЗ: "META-INF /" рдФрд░ ".RSA"ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрдк рдЕрдкрдиреЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдпрд╣рд╛рдВ рд╕реЗ рдХреБрдВрдЬреА рднреА рдмрдирд╛рддрд╛ рд╣реИред рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕реЗ рдЦреЛрджрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЪрд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рд╕рд╣реА рдкреНрд░рдорд╛рдг рдкрддреНрд░ рджреЗрддреЗ рд╣реИрдВред рд╣рдо рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкреИрдЪ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП "META-INF /" рдХреЗ рдмрдЬрд╛рдп рд╣рдореЗрдВ "BLABLINF /" рдорд┐рд▓рддрд╛ рд╣реИ, рд╣рдо рдПрдкреАрдХреЗ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрд╕ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВредрд╣рдо рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рддреЗ рд╣реИрдВ, рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВред рдмрд┐рдВрдЧреЛ! рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЪрд╛рдмреА рд╣реИ!MITM
рдЕрдм рд╣рдореЗрдВ рдХреБрдВрдЬреА рдФрд░ рдПрдХ рд╕рдорд╛рди рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╡реЗрдХреНрдЯрд░ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИред рдЪрд▓реЛ CBC рдореЛрдб рдореЗрдВ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ URL, MD5, "extract_unzipsize", рдФрд░ рдПрдХ рдирдВрдмрд░ рдЬреИрд╕рд╛ рдХреБрдЫ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдЖрдЗрдП рд╣рдо рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдПрдордбреА 5 рд╕рдорд╛рди рд╣реИ; рдЕрдирдЬрд╝рд┐рдкреНрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЖрдХрд╛рд░ рд╕рдорд╛рди рд╣реИред рдЕрдм рд╣рдо рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдкреИрдЪ рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рддрдХ рдкрд╣реБрдБрдЪрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдорд╛рд░реА рдкреИрдЪ рдХреА рдЧрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЛрдб рд╣реЛ рдЧрдИ рд╣реИ, рд╣рдо рдЯреЗрдХреНрд╕реНрдЯ рд╕рдВрджреЗрд╢ "PWNED!" рд╣рдо рд╕рд░реНрд╡рд░ рд╕реЗ рджреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ: puds.ucweb.com/upgrad/index.xhtml рдФрд░ рд╡рд╣ рдЬреЛ рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред рдкрд╣рд▓реЗ рдореЗрдВ, рд╣рдо рдПрдордбреА 5 рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ (рдЖрдХрд╛рд░ рдЕрдирдЬрд╝рд┐рдкрд┐рдВрдЧ рдХреЗ рдмрд╛рдж рд╕рдорд╛рди рд░рд╣рддрд╛ рд╣реИ); рджреВрд╕рд░реЗ рдореЗрдВ, рд╣рдо рд╕рдВрдЧреНрд░рд╣реАрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рднреЗрдЬрддреЗ рд╣реИрдВредрдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╡рд╣рд╛рдБ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдЪрд┐рддреНрд░ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реБрдП, рд╣рдордиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╕рд░реНрд╡рд░ рднреА рдЖрд░реНрдХрд╛рдЗрд╡ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:
рдпрд╣ LEB128 рдПрдирдХреЛрдбреЗрдб рд╣реИред рдкреИрдЪ рд╕рдВрдХреБрдЪрд┐рдд рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рд╕рдВрдЧреНрд░рд╣ рдХрдИ рдмрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рддреНрд░реБрдЯрд┐ рдкрд░ рдЯреВрдЯ рдЧрдпрд╛ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреАредрддреЛ рд╣рдо рд╕рдВрдЧреНрд░рд╣ рдЖрдХрд╛рд░ рдФрд░ ... рд╡реЙрдЗрд▓рд╛ рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ! :) рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рджреЗрдЦреЗрдВ рдкрд░рд┐рдгрд╛рдоредрдкрд░рд┐рдгрд╛рдо рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛
рдЙрд╕реА рддрд░рд╣, рд╣реИрдХрд░реНрд╕ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдЗрд╕ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреВрд░реНрдг рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдкрд╛рд╕ рд╣реИред рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдлрд╝рд┐рд╢рд┐рдВрдЧ рд╡рд┐рдВрдбреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╢рд╛рд╕рди рджреЗрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓реЙрдЧрд┐рди, рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдХреБрдХреАрдЬрд╝ рд╕рд╣рд┐рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдХрд╛рд░реНрдпрд╢реАрд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИредрд╣рдордиреЗ рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдорд┐рд▓реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛, рднреЗрджреНрдпрддрд╛ рдФрд░ рдЙрд╕рдХреЗ рдЦрддрд░реЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред рдЗрд╕ рдмреАрдЪ, рдЦрддрд░рдирд╛рдХ рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рд▓рд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рд╛рджреЗ рджреГрд╢реНрдп рдореЗрдВ рд░рд╣рд╛ред рдпрджреНрдпрдкрд┐ рдЬреИрд╕реЗ рд╣реА рд╣рдордиреЗ рднреЗрджреНрдпрддрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг рдкреНрд░рдХрдЯ рдХрд┐рдпрд╛, рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдерд╛ред UC Browser рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг 10.10.9.1193 27 рдорд╛рд░реНрдЪ рдХреЛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдиреЗ HTTPS puds.ucweb.com/upgrad/index.xhtml рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдБрдЪрд╛редред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, "рдмрдЧ рдлрд┐рдХреНрд╕рд┐рдВрдЧ" рдФрд░ рд╕рдордп рдХреЗ рдмреАрдЪ рд╣рдордиреЗ рдпрд╣ рд▓реЗрдЦ рд▓рд┐рдЦрд╛, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ рдкреАрдбреАрдПрдл рдЦреЛрд▓рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрд╛рда рдХреЗ рд╕рд╛рде рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЖрдпрд╛, "рдЙрдлрд╝, рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИред" рдкреАрдбреАрдПрдл рдлрд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдкрд░ рд╕рд░реНрд╡рд░ рд╕реЗ рдХреЛрдИ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдПрдХ рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ Google Play рдиреАрддрд┐рдпреЛрдВ рдХреЗ рдЙрд▓реНрд▓рдВрдШрди рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИред