рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

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

рдорд╛рд░реНрдЪ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╣рдо рд╕реВрдЪрдирд╛, рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЕрд╕рддреНрдпрд╛рдкрд┐рдд рдХреЛрдб рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдПрдХ рдЫрд┐рдкреА рд╣реБрдИ рдХреНрд╖рдорддрд╛ рдХреА рдЦреЛрдЬ рдХреАред рдЖрдЬ рд╣рдо рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╣реИрдХрд░реНрд╕ рдЗрд╕реЗ рдЕрдкрдиреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдмрд╣реБрдд рдЖрдХреНрд░рд╛рдордХ рддрд░реАрдХреЗ рд╕реЗ рд╡рд┐рдЬреНрдЮрд╛рдкрд┐рдд рдФрд░ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рдпрд╣ рдореИрд▓рд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╡реАрдбрд┐рдпреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЖрдбрд╝ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕рд╛рдЗрдЯреЛрдВ рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдпрд╛рдиреА, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд▓рдЧрд╛ рдХрд┐ рд╡реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд░рд╣реЗ рдереЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд╢реНрд▓реАрд▓ рд╡реАрдбрд┐рдпреЛ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдПрдкреАрдХреЗ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ), рдЙрди рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдбрд░рд╛рд╡рдиреЗ рдмреИрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреБрд░рд╛рдирд╛, рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреА рдЪреАрдЬреЗрдВ рдереАрдВред рд╡реАрдХреЗ рдкрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдореВрд╣ рдореЗрдВ рд╣реИ рд╡рд┐рд╖рдп, рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрдЪрд┐рдд рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдРрд╕реЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред 2016 рдореЗрдВ рднреА рд╣реБрдЖ рдерд╛ рд╡реАрдбрд┐рдпреЛ рд╡рд┐рдЬреНрдЮрд╛рдкрди рд░реВрд╕реА рдореЗрдВ (рд╣рд╛рдБ, рд╡рд┐рдЬреНрдЮрд╛рдкрди-рдЕрд╡рд░реЛрдзрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреНрдЮрд╛рдкрди)ред

рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ Google Play рдкрд░ 500 рд╕реЗ рдЕрдзрд┐рдХ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╣реИрдВред рдпрд╣ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИ - рдХреЗрд╡рд▓ Google Chrome рдореЗрдВ рд╣реА рдЕрдзрд┐рдХ рд╣реИред рд╕рдореАрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЖрдк Google Play рдкрд░ рдХреБрдЫ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдФрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рд╢рд┐рдХрд╛рдпрддреЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣реА рд╣рдорд╛рд░реЗ рд╢реЛрдз рдХрд╛ рдХрд╛рд░рдг рдерд╛: рд╣рдордиреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдХрд┐ рдХреНрдпрд╛ рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреБрдЫ рдмреБрд░рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╡рд╣ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ!

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдореЗрдВ, рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдЦреЛрдЬ рдХреА рдЧрдИ, рдЬреЛ рдЖрд╡реЗрджрди рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИ рдЧреВрдЧрд▓ рдкреНрд▓реЗ рдкрд░. рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд┐рдЯрдПрдо рд╣рдорд▓рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдРрд╕рд╛ рдХреЛрдИ рд╣рдорд▓рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдиреАрдЪреЗ рд▓рд┐рдЦреА рд╣рд░ рдмрд╛рдд рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рдЬреЛ рдЕрдзреНрдпрдпрди рдХреЗ рд╕рдордп Google Play рдкрд░ рдЙрдкрд▓рдмреНрдз рдерд╛:

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

рдЖрдХреНрд░рдордг рд╕рджрд┐рд╢

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдирд┐рдлреЗрд╕реНрдЯ рдореЗрдВ рдЖрдк рд╕реНрд╡-рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рдирд╛рдо рд╡рд╛рд▓реА рдПрдХ рд╕реЗрд╡рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ com.uc.deployment.UpgradeDeployService.

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

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

рдЗрд╕рд▓рд┐рдП, рдЬрдм рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реАрдзреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреАрдбреАрдПрдл рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдЯреНрд░реИрдлрд╝рд┐рдХ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрд░реЛрдз рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

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

рдЦрдВрдб рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ

рдЙрддреНрддрд░ рдЦрдВрдб

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрд╡рдпрдВ рдЬрд╝рд┐рдк рдореЗрдВ рдкреИрдХ рдХреА рдЧрдИ рд╣реИ рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдирд╣реАрдВ рд╣реИред

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рдЯреНрд░реИрдлрд╝рд┐рдХ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЛрдб рдЦреЛрдЬреЗрдВ

рдЖрдЗрдП рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЖрдЗрдП рдХреНрд▓рд╛рд╕ рдХреЛрдб рджреЗрдЦреЗрдВ com.uc.deployment.UpgradeDeployService: рд╡рд┐рдзрд┐ рд╕реЗ рдСрдирд╕реНрдЯрд╛рд░реНрдЯрдХрдорд╛рдВрдб рдЬрд╛рдУ com.uc.deployment.bx, рдФрд░ рдЗрд╕рд╕реЗ рддрдХ com.uc.browser.core.dcfe:

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

рд╣рдо рдпрд╣рд╛рдВ рдПрдХ POST рдЕрдиреБрд░реЛрдз рдХрд╛ рдЧрдарди рджреЗрдЦрддреЗ рд╣реИрдВред рд╣рдо 16 рдмрд╛рдЗрдЯреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдиреЗ рдФрд░ рдЙрд╕реЗ рднрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ: 0x5F, 0, 0x1F, -50 (=0xCE)ред рдЙрдкрд░реЛрдХреНрдд рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╣рдордиреЗ рдЬреЛ рджреЗрдЦрд╛, рдЙрд╕рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред

рдЙрд╕реА рдХреНрд▓рд╛рд╕ рдореЗрдВ рдЖрдк рдПрдХ рдиреЗрд╕реНрдЯреЗрдб рдХреНрд▓рд╛рд╕ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рддрд░реАрдХрд╛ рд╣реИ:

        public final void a(l arg10, byte[] arg11) {
f v0 = this.iGQ;
StringBuilder v1 = new StringBuilder("[");
v1.append(arg10.iGX.ipR);
v1.append("]:UpgradeSuccess");
byte[] v1_1 = null;
if(arg11 == null) {
}
else if(arg11.length < 16) {
}
else {
if(arg11[0] != 0x60 && arg11[3] != 0xFFFFFFD0) {
goto label_57;
}
int v3 = 1;
int v5 = arg11[1] == 1 ? 1 : 0;
if(arg11[2] != 1 && arg11[2] != 11) {
if(arg11[2] == 0x1F) {
}
else {
v3 = 0;
}
}
byte[] v7 = new byte[arg11.length - 16];
System.arraycopy(arg11, 16, v7, 0, v7.length);
if(v3 != 0) {
v7 = g.j(arg11[2], v7);
}
if(v7 == null) {
goto label_57;
}
if(v5 != 0) {
v1_1 = g.P(v7);
goto label_57;
}
v1_1 = v7;
}
label_57:
if(v1_1 == null) {
v0.iGY.iGI.a(arg10, "up_decrypt", "yes", "fail");
return;
}
q v11 = g.b(arg10, v1_1);
if(v11 == null) {
v0.iGY.iGI.a(arg10, "up_decode", "yes", "fail");
return;
}
if(v0.iGY.iGt) {
v0.d(arg10);
}
if(v0.iGY.iGo != null) {
v0.iGY.iGo.a(0, ((o)v11));
}
if(v0.iGY.iGs) {
v0.iGY.a(((o)v11));
v0.iGY.iGI.a(v11, "up_silent", "yes", "success");
v0.iGY.iGI.a(v11);
return;
}
v0.iGY.iGI.a(v11, "up_silent", "no", "success");
}
}

рд╡рд┐рдзрд┐ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╛рдЗрдЯреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рд▓реЗрддреА рд╣реИ рдФрд░ рдЬрд╛рдВрдЪ рдХрд░рддреА рд╣реИ рдХрд┐ рд╢реВрдиреНрдп рдмрд╛рдЗрдЯ 0x60 рд╣реИ рдпрд╛ рддреАрд╕рд░реА рдмрд╛рдЗрдЯ 0xD0 рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдЗрдЯ 1, 11 рдпрд╛ 0x1F рд╣реИред рд╣рдо рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ: рд╢реВрдиреНрдп рдмрд╛рдЗрдЯ 0x60 рд╣реИ, рджреВрд╕рд░рд╛ 0x1F рд╣реИ, рддреАрд╕рд░рд╛ 0x60 рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкрдВрдХреНрддрд┐рдпреЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "up_decrypt") рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣рд╛рдВ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╕рд░реНрд╡рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдЧрд╛ред
рдЪрд▓рд┐рдП рд╡рд┐рдзрд┐ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ рдЬреА рдЬреЗ. рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкрд╣рд▓рд╛ рддрд░реНрдХ рдСрдлрд╕реЗрдЯ 2 рдкрд░ рдмрд╛рдЗрдЯ рд╣реИ (рдпрд╛рдиреА рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ 0x1F), рдФрд░ рджреВрд╕рд░рд╛ рдмрд┐рдирд╛ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ
рдкрд╣рд▓реЗ 16 рдмрд╛рдЗрдЯреНрд╕.

     public static byte[] j(int arg1, byte[] arg2) {
if(arg1 == 1) {
arg2 = c.c(arg2, c.adu);
}
else if(arg1 == 11) {
arg2 = m.aF(arg2);
}
else if(arg1 != 0x1F) {
}
else {
arg2 = EncryptHelper.decrypt(arg2);
}
return arg2;
}

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣рд╛рдВ рд╣рдо рдПрдХ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╣реА рдмрд╛рдЗрдЯ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ
0x1F рдХреЗ рдмрд░рд╛рдмрд░ рдХрд╛ рдорд╛рдорд▓рд╛, рддреАрди рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

рд╣рдо рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рдХреБрдЫ рдЫрд▓рд╛рдБрдЧреЛрдВ рдХреЗ рдмрд╛рдж рд╣рдо рд╕реНрд╡рдпрдВ рдХреЛ рдПрдХ рд╕реНрд╡-рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рдирд╛рдо рд╡рд╛рд▓реА рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рддреЗ рд╣реИрдВ рдбрд┐рдХреНрд░рд┐рдкреНрдЯрдмрд╛рдЗрдЯреНрд╕рдмрд╛рдпрдХреА.

рдпрд╣рд╛рдВ рд╣рдорд╛рд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рджреЛ рдФрд░ рдмрд╛рдЗрдЯреНрд╕ рдЕрд▓рдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдВрджреЗрд╢ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреА рдХреБрдВрдЬреА рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

    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 рдХрд╛ рдЕрд░реНрде рд╣реИ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди, рдЬреИрд╕рд╛ рдХрд┐ рд╡рд┐рдзрд┐ рдореЗрдВ рд╣реИ doFinal рд╕рд┐рд╕реНрдЯрдо рдХреНрд▓рд╛рд╕ javax.рдХреНрд░рд┐рдкреНрдЯреЛ.рд╕рд┐рдлрд░. рдФрд░ рдпрд╣ рд╕рдм 10601 рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░рд╛рдЙрдЯрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрдорд╛рдВрдб рдирдВрдмрд░ рд╣реИред

рдмрджрд▓рд╛рд╡реЛрдВ рдХреА рдЕрдЧрд▓реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЖрдИрд░рд╛рдЙрдЯрд░рдХрдВрдкреЛрдиреЗрдВрдЯ рдФрд░ рд╡рд┐рдзрд┐ 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);
}
}

рдФрд░ рдХреНрд▓рд╛рд╕ рднреА рдЬреЗрдПрдирдЖрдИрд╕реАрд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдЬрд┐рд╕рдореЗрдВ рдореВрд▓ рд╡рд┐рдзрд┐ рдШреЛрд╖рд┐рдд рдХреА рдЧрдИ рд╣реИ 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 рдореЗрдВ рджреЛрдмрд╛рд░рд╛ рдЦреЛрд▓реЗрдВ.

рдЬрд╛рд╡рд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ рдХрд┐ рдореВрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ рдореВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рд╡рд┐рдзрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╣рд╛рдБ рд╕реНрдерд┐рдд рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдПрдХ рдкреНрд░рдЬрд╛рддрд┐ рдХрд╛ рдирд╛рдо рджреЗрдирд╛ рд╣реИ Java_package_name_ClassName_MethodName.

рджреВрд╕рд░рд╛ рд╣реИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп (рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ) рдЗрд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рдЬреЗрдПрдирдЖрдИ_рдСрдирд▓реЛрдб)
рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд░рдЬрд┐рд╕реНрдЯрд░рдиреЗрдЯрд┐рд╡реНрд╕.

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ рд╣рдо рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдирд╛рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: Java_com_taobao_wireless_security_adapter_JNICLibrary_doCommandNative.

рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдРрд╕рд╛ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреЙрд▓ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рд╣реЛрдЧреА рд░рдЬрд┐рд╕реНрдЯрд░рдиреЗрдЯрд┐рд╡реНрд╕.
рдЪрд▓реЛ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВ рдЬреЗрдПрдирдЖрдИ_рдСрдирд▓реЛрдб рдФрд░ рд╣рдо рдпрд╣ рдЪрд┐рддреНрд░ рджреЗрдЦрддреЗ рд╣реИрдВ:

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ? рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдПрдЖрд░рдПрдо рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИрдВред рд╕реНрдЯреИрдХ рдкрд░ рдкрд╣рд▓рд╛ рдирд┐рд░реНрджреЗрд╢ рдЙрди рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдлрд╝рдВрдХреНрд╢рди рдЕрдкрдиреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрд░0, рдЖрд░1 рдФрд░ рдЖрд░2), рд╕рд╛рде рд╣реА рдПрд▓рдЖрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА рд╕рд╛рдордЧреНрд░реА, рдЬрд┐рд╕рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд░рд┐рдЯрд░реНрди рдкрддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ . рдЕрдВрддрд┐рдо рдирд┐рд░реНрджреЗрд╢ рд╕рд╣реЗрдЬреЗ рдЧрдП рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд░рд┐рдЯрд░реНрди рдкрддрд╛ рддреБрд░рдВрдд рдкреАрд╕реА рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдмрд╛рд░реАрдХреА рд╕реЗ рджреЗрдЦреЗрдВрдЧреЗ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЕрдВрддрд┐рдо рдирд┐рд░реНрджреЗрд╢ рд╕реНрдЯреИрдХ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд░рд┐рдЯрд░реНрди рдкрддреЗ рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдЖрдЗрдП рдЧрдгрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдХреИрд╕рд╛ рд╣реЛрдЧрд╛
рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди. рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрддрд╛ 1xB0 рдХреЛ R130 рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рд╕реЗ 5 рдШрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдЗрд╕реЗ R0 рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ 0x10 рдХреЛ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ 0xB13B рдирд┐рдХрд▓рд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдИрдбреАрдП рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рдирд┐рд░реНрджреЗрд╢ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рдВрдХреНрд╢рди рд░рд┐рдЯрд░реНрди рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рдкрддреЗ 0xB13B рдкрд░ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдпрд╣рд╛рдВ рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдПрдЖрд░рдПрдо рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рджреЛ рдореЛрдб рдФрд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рджреЛ рд╕реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ: рдПрдЖрд░рдПрдо рдФрд░ рдердВрдмред рдкрддреЗ рдХрд╛ рд╕рдмрд╕реЗ рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдирд┐рд░реНрджреЗрд╢ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрд╛рдиреА, рдкрддрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 0xB13A рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯ рдореЗрдВ рд╕реЗ рдПрдХ рдердВрдм рдореЛрдб рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рд╕рдорд╛рди "рдПрдбреЗрдкреНрдЯрд░" рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ
рдХрдЪрд░рд╛ рдХреЛрдб. рд╣рдо рдЙрди рдкрд░ рдЖрдЧреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗ - рд╣рдо рдмрд╕ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ
рдХрд┐ рд▓рдЧрднрдЧ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╢реБрд░реБрдЖрдд рдереЛрдбрд╝реА рджреВрд░ рд╣реИред

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

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рддрд╛рд▓рд┐рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ 0xB144 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред Sub_494C рдореЗрдВ рдХреНрдпрд╛ рд╣реИ?

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ LR рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░, рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рддрд╛рд▓рд┐рдХрд╛ (0xB144) рдХрд╛ рдкрддрд╛ рдорд┐рд▓рддрд╛ рд╣реИред R0 рдореЗрдВ - рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХред рдЕрд░реНрдерд╛рддреН, рдорд╛рди рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрд▓рдЖрд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╣реЛрддрд╛ рд╣реИ
рдЬрд╛рдиреЗ рдХрд╛ рдкрддрд╛. рдЖрдЗрдП рдЗрд╕рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ: 0xB144 + [0xB144 + 8* 4] = 0xB144 + 0x120 = 0xB264ред рд╣рдо рдкреНрд░рд╛рдкреНрдд рдкрддреЗ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╕реНрддреБрддрдГ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдирд┐рд░реНрджреЗрд╢ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ 0xB140 рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ:

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рдЕрдм рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рд╕реВрдЪрдХрд╛рдВрдХ 0x20 рдХреЗ рд╕рд╛рде рдСрдлрд╕реЗрдЯ рдкрд░ рдПрдХ рд╕рдВрдХреНрд░рдордг рд╣реЛрдЧрд╛ред

рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдХреЛрдб рдореЗрдВ рдРрд╕реЗ рдХрдИ рдмрджрд▓рд╛рд╡ рд╣реЛрдВрдЧреЗред рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкрддреЛрдВ рдХреА рдореИрдиреНрдпреБрдЕрд▓ рдЧрдгрдирд╛ рдХрд┐рдП рдмрд┐рдирд╛, рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╕рдВрднрд╡ рд╣реИред рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЖрдИрдбреАрдП рдореЗрдВ рдХреЛрдб рдкреИрдЪ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрддреА рд╣реИ:

def put_unconditional_branch(source, destination):
offset = (destination - source - 4) >> 1
if offset > 2097151 or offset < -2097152:
raise RuntimeError("Invalid offset")
if offset > 1023 or offset < -1024:
instruction1 = 0xf000 | ((offset >> 11) & 0x7ff)
instruction2 = 0xb800 | (offset & 0x7ff)
patch_word(source, instruction1)
patch_word(source + 2, instruction2)
else:
instruction = 0xe000 | (offset & 0x7ff)
patch_word(source, instruction)
ea = here()
if get_wide_word(ea) == 0xb503: #PUSH {R0,R1,LR}
ea1 = ea + 2
if get_wide_word(ea1) == 0xbf00: #NOP
ea1 += 2
if get_operand_type(ea1, 0) == 1 and get_operand_value(ea1, 0) == 0 and get_operand_type(ea1, 1) == 2:
index = get_wide_dword(get_operand_value(ea1, 1))
print "index =", hex(index)
ea1 += 2
if get_operand_type(ea1, 0) == 7:
table = get_operand_value(ea1, 0) + 4
elif get_operand_type(ea1, 1) == 2:
table = get_operand_value(ea1, 1) + 4
else:
print "Wrong operand type on", hex(ea1), "-", get_operand_type(ea1, 0), get_operand_type(ea1, 1)
table = None
if table is None:
print "Unable to find table"
else:
print "table =", hex(table)
offset = get_wide_dword(table + (index << 2))
put_unconditional_branch(ea, table + offset)
else:
print "Unknown code", get_operand_type(ea1, 0), get_operand_value(ea1, 0), get_operand_type(ea1, 1) == 2
else:
print "Unable to detect first instruction"

рдХрд░реНрд╕рд░ рдХреЛ рд▓рд╛рдЗрди 0xB26A рдкрд░ рд░рдЦреЗрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдБ рдФрд░ 0xB4B0 рдореЗрдВ рд╕рдВрдХреНрд░рдордг рджреЗрдЦреЗрдВ:

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

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

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рдмреАрдПрд▓рдПрдХреНрд╕ рдХреЗ рдмрд╛рдж рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдЕрд░реНрде рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рдпрд╣ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рд╕реНрдерд╛рдкрди рдЬреИрд╕рд╛ рд╣реИред рдЖрдЗрдП рдЙрдк_4964 рджреЗрдЦреЗрдВ:

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

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

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рдЗрд╕ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЛ рдкреИрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЛрдб рд╕реЗ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА: рдСрдлрд╝рд╕реЗрдЯ рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдирдВрдмрд░ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдкрд░рд┐рдгрд╛рдо рдбрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

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

рд╣рдо рдХрд░реНрд╕рд░ рдХреЛ рдЙрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдо рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - 0xB4B2 - рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рддреЗ рд╣реИрдВ:

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рдкрд╣рд▓реЗ рд╕реЗ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЛрдб рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рдкрд┐рдЫрд▓реЗ рдорд╛рдорд▓реЗ рдХреА рддрд░рд╣, BLX рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдмрд╛рдж рдПрдХ рдСрдлрд╕реЗрдЯ рд╣реИ:

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рд╣рдо рдСрдлрд╕реЗрдЯ рдХреЛ рдПрд▓рдЖрд░ рд╕реЗ рдкрддреЗ рдкрд░ рд▓реЗрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдПрд▓рдЖрд░ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╣рд╛рдВ рдЬрд╛рддреЗ рд╣реИрдВред 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"

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо:

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рдПрдХ рдмрд╛рд░ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕рдм рдХреБрдЫ рдкреИрдЪ рд╣реЛ рдЬрд╛рдиреЗ рдкрд░, рдЖрдк рдЖрдИрдбреАрдП рдХреЛ рдЗрд╕рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╢реБрд░реБрдЖрдд рдХреА рдУрд░ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдХреЛ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рдФрд░ рдЗрд╕реЗ HexRays рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдШрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рд╣рдордиреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдорд╢реАрди рдХреЛрдб рдХреА рдЧрдбрд╝рдмрдбрд╝реА рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╕реАрдЦ рд▓рд┐рдпрд╛ рд╣реИ libsgmainso-6.4.36.so рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬреЗрдПрдирдЖрдИ_рдСрдирд▓реЛрдб.

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);

рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рдЙрдк_73рдИ24 рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ рдХреЗ рд╕рдорд╛рди рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╕рдВрдХреЗрддрдХ, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрдлрд░ рдФрд░ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдкрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдмрдлрд░ рдореЗрдВ рдПрдХ рдбрд┐рдХреНрд░рд┐рдкреНрдЯреЗрдб рд▓рд╛рдЗрди рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░ рджреА рдЬрд╛рддреА рд╣реИ рдлрд╛рдЗрдВрдбрдХреНрд▓рд╛рд╕, рдЬреЛ рдХреНрд▓рд╛рд╕ рдирд╛рдо рдХреЛ рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕рдВрдЦреНрдпрд╛ рдмрдлрд╝рд░ рдХрд╛ рдЖрдХрд╛рд░ рдпрд╛ рд░реЗрдЦрд╛ рдХреА рд▓рдВрдмрд╛рдИ рд╣реИред рдЖрдЗрдП рдХрдХреНрд╖рд╛ рдХреЗ рдирд╛рдо рдХреЛ рд╕рдордЭрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рд╣рдо рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдЖрдЗрдП рдмрд╛рд░реАрдХреА рд╕реЗ рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЙрдк_73рдИ24.

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;
}

рд╕рдорд╛рд░реЛрд╣ рдЙрдк_7рдПрдПрдл78 рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдХрд╛рд░ рдХреЗ рдмрд╛рдЗрдЯ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ (рд╣рдо рдЗрди рдХрдВрдЯреЗрдирд░реЛрдВ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗ)ред рдпрд╣рд╛рдВ рджреЛ рдРрд╕реЗ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ: рдПрдХ рдореЗрдВ рд▓рд╛рдЗрди рд╣реИ "DcO/lcK+h?m3c*q@" (рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдХреБрдВрдЬреА рд╣реИ), рджреВрд╕рд░реЗ рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рджреЛрдиреЛрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рднреЗрдЬ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЙрдк_6115рд╕реА. рдЖрдЗрдП рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдорд╛рди 3 рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝реАрд▓реНрдб рднреА рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред

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

рд╕реНрд╡рд┐рдЪ рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдлрд╝реАрд▓реНрдб рд╣реИ рдЬрд┐рд╕реЗ рдкрд╣рд▓реЗ рдорд╛рди 3 рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдорд▓реЗ 3 рдХреЛ рджреЗрдЦреЗрдВ рдЙрдк_6364рд╕реА рдкреИрд░рд╛рдореАрдЯрд░ рдЙрд╕ рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдкрд┐рдЫрд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдереЗ, рдпрд╛рдиреА рдХреБрдВрдЬреА рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ред рдЕрдЧрд░ рдЖрдк рдЧреМрд░ рд╕реЗ рджреЗрдЦреЗрдВрдЧреЗ рдЙрдк_6364рд╕реА, рдЖрдк рдЗрд╕рдореЗрдВ RC4 рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдкрд╣рдЪрд╛рди рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдФрд░ рдПрдХ рдХреБрдВрдЬреА рд╣реИ. рдЖрдЗрдП рдХрдХреНрд╖рд╛ рдХреЗ рдирд╛рдо рдХреЛ рд╕рдордЭрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реБрдЖ: com/taobao/рд╡рд╛рдпрд░рд▓реЗрд╕/рд╕реБрд░рдХреНрд╖рд╛/рдПрдбрд╛рдкреНрдЯрд░/JNICLibrary. рдорд╣рд╛рди! рд╣рдо рд╕рд╣реА рд░рд╛рд╕реНрддреЗ рдкрд░ рд╣реИрдВ.

рдЖрджреЗрд╢ рд╡реГрдХреНрд╖

рдЕрдм рд╣рдореЗрдВ рдПрдХ рдЪреБрдиреМрддреА рдвреВрдВрдврдиреА рд╣реЛрдЧреА рд░рдЬрд┐рд╕реНрдЯрд░рдиреЗрдЯрд┐рд╡реНрд╕, рдЬреЛ рд╣рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреА рдУрд░ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ doCommandNative. рдЖрдЗрдП рд╕реЗ рдмреБрд▓рд╛рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рджреЗрдЦреЗрдВ рдЬреЗрдПрдирдЖрдИ_рдСрдирд▓реЛрдб, рдФрд░ рд╣рдо рдЗрд╕реЗ рдЗрд╕рдореЗрдВ рдкрд╛рддреЗ рд╣реИрдВ рдЙрдк_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ред рдпреЗ рддреАрди рд╕рдВрдЦреНрдпрд╛рдПрдБ, рд╕рд╛рде рд╣реА рдПрдХ рд╕реВрдЪрдХ рднреА рдЬреЗрдПрдирдЖрдИрдПрдирд╡реА рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рджрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рдХреЛ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдЧреЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рд╛рдкреНрдд рддреАрди рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ (рдЖрдЗрдП рдЙрдиреНрд╣реЗрдВ N1, N2 рдФрд░ N3 рдирд┐рд░реВрдкрд┐рдд рдХрд░реЗрдВ), рдПрдХ рдХрдорд╛рдВрдб рдЯреНрд░реА рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рдкреЗрдбрд╝ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИ рдЬреЗрдПрдирдЖрдИ_рдСрдирд▓реЛрдб.
рддреАрди рд╕рдВрдЦреНрдпрд╛рдПрдБ рдкреЗрдбрд╝ рдореЗрдВ рдкрде рдХреЛ рдХреВрдЯрдмрджреНрдз рдХрд░рддреА рд╣реИрдВред рдкреЗрдбрд╝ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкрддреНрддреЗ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреЙрдХреНрдб рдкрддрд╛ рд╣реЛрддрд╛ рд╣реИред рдХреБрдВрдЬреА рдореВрд▓ рдиреЛрдб рдореЗрдВ рд╣реИ. рдХреЛрдб рдореЗрдВ рд╡рд╣ рд╕реНрдерд╛рди рдвреВрдВрдврдирд╛ рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рдЬрд┐рд╕ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЙрд╕реЗ рдкреЗрдбрд╝ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рдЖрдк рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рд╕рднреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВ рддреЛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ (рд╣рдо рдЙрдирдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдбрд╝реЗ рд▓реЗрдЦ рдХреЛ рдлреВрд▓рд╛ рди рдЬрд╛рдП)ред

рдЕрдзрд┐рдХ рднреНрд░рдо

рд╣рдореЗрдВ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рдЬреЛ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: 0x5F1ACред рд▓реЗрдХрд┐рди рдЕрднреА рдЦреБрд╢ рд╣реЛрдирд╛ рдЬрд▓реНрджрдмрд╛рдЬреА рд╣реЛрдЧреА: рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЖрд╢реНрдЪрд░реНрдп рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред

рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ рдмрдиреЗ рдРрд░реЗ рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ
рдкрддреЗ 0x4D070 рдкрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдПред рдФрд░ рдпрд╣рд╛рдВ рдПрдХ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рдХреЛрдб рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рд╣рдорд╛рд░рд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реА рд╣реИред

рд╣рдордиреЗ R7 рдФрд░ R4 рдореЗрдВ рджреЛ рд╕реВрдЪрдХрд╛рдВрдХ рд░рдЦреЗ рд╣реИрдВ:

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

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

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рдХрд┐рд╕реА рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рдкрд╣рд▓реЗ рдкрддреЗ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рджреВрд╕рд░реЗ рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ R4 рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ 230 рддрддреНрд╡ рд╣реИрдВред

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

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдбрд░рд╛рд╡рдирд╛ рд╣реИ. рд▓реЗрдХрд┐рди, рдЗрд╕рдХреЗ рдЬрдВрдЧрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдирд╛ рд░рд╛рд╕реНрддрд╛ рдмрдирд╛рддреЗ рд╣реБрдП, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдорд╛рд░реЗ рдкрд░рд┐рдЪрд┐рдд рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рдХреЙрд▓ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЙрдк_6115рд╕реА:

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рдПрдХ рд╕реНрд╡рд┐рдЪ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╕ 3 рдореЗрдВ RC4 рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдерд╛ред рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджреА рдЧрдИ рд╕рдВрд░рдЪрдирд╛ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рднрд░реА рдЬрд╛рддреА рд╣реИ doCommandNative. рдЖрдЗрдП рдпрд╛рдж рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рдерд╛ рдореИрдЬрд┐рдХрдЗрдВрдЯ рдорд╛рди 16 рдХреЗ рд╕рд╛рдеред рд╣рдо рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рдорд▓реЗ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ - рдФрд░ рдХрдИ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рд╡рд╣ рдХреЛрдб рдорд┐рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдкрд╣рдЪрд╛рди рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рдпрд╣ рдПрдИрдПрд╕ рд╣реИ!

рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореМрдЬреВрдж рд╣реИ, рдЬреЛ рдХреБрдЫ рдмрдЪрд╛ рд╣реИ рд╡рд╣ рдЗрд╕рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ: рдореЛрдб, рдХреБрдВрдЬреА рдФрд░, рд╕рдВрднрд╡рддрдГ, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡реЗрдХреНрдЯрд░ (рдЗрд╕рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдПрдИрдПрд╕ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдб рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ)ред рдЙрдирдХреЗ рд╕рд╛рде рд╕рдВрд░рдЪрдирд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╣реАрдВ рдмрдирдиреА рдЪрд╛рд╣рд┐рдП рдЙрдк_6115рд╕реА, рд▓реЗрдХрд┐рди рдХреЛрдб рдХрд╛ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдб рдХреЛ рдкреИрдЪ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЙрдарддрд╛ рд╣реИ рддрд╛рдХрд┐ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рднреА рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбрдВрдк рд╣реЛ рдЬрд╛рдПрдВред

рдкреИрдЪ

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

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

рдкрд╣рд▓рд╛ рднрд╛рдЧ:

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

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

рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдлреЛрдкреЗрди рдЖрдЗрдП рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ /рдбреЗрдЯрд╛/рд╕реНрдерд╛рдиреАрдп/рдЯреАрдПрдордкреА/рдПрдИрдПрд╕ "рдЕрдм" рдореЛрдб рдореЗрдВ
рдпрд╛рдиреА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП. R0 рдореЗрдВ рд╣рдо рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХрд╛ рдкрддрд╛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, R1 рдореЗрдВ - рдореЛрдб рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд▓рд╛рдЗрди рдХрд╛ рдкрддрд╛ред рдФрд░ рдпрд╣рд╛рдВ рдХрдЪрд░рд╛ рдХреЛрдб рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрдЧрд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрдЪрд░реЗ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХрдЪрд░реЗ рдХреЗ рдмрдЬрд╛рдп рд╣рдо рдкреИрдЪ рдХреА рдирд┐рд░рдВрддрд░рддрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рдХреЙрд▓рд┐рдВрдЧ рдлреЛрдкреЗрди.

рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд╣рд▓реЗ рддреАрди рдкреИрд░рд╛рдореАрдЯрд░ рдПрдИрдПрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ int. рдЪреВрдБрдХрд┐ рд╣рдордиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рд╕реНрдЯреИрдХ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдерд╛, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ fwrite рд╕реНрдЯреИрдХ рдкрд░ рдЙрдирдХреЗ рдкрддреЗ.

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рдЖрдЧреЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддреАрди рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдбреЗрдЯрд╛ рдЖрдХрд╛рд░ рдФрд░ рдХреБрдВрдЬреА, рдЖрд░рдВрднреАрдХрд░рдг рд╡реЗрдХреНрдЯрд░ рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╕рдВрдХреЗрддрдХ рд╢рд╛рдорд┐рд▓ рд╣реИред

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рдЕрдВрдд рдореЗрдВ, рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрдВрдж рдХрд░реЗрдВ, рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ рдПрдИрдПрд╕.

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

рд╣рдореЗрдВ рдХреБрдВрдЬреА рдХреЗ рдмрд░рд╛рдмрд░ рдПрдХ рдХреБрдВрдЬреА рдФрд░ рдПрдХ рдЖрд░рдВрднреАрдХрд░рдг рд╡реЗрдХреНрдЯрд░ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖред рдЖрдЗрдП рд╕реАрдмреАрд╕реА рдореЛрдб рдореЗрдВ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

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

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдИ рдмрд╛рд░ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдХреБрдЫ
рд╡рд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ред рдЗрд╕ рдЕрд╕реНрдкрд╖реНрдЯ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╕рд░реНрд╡рд░ рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЖрдХрд╛рд░ рднреА рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:

рдпреВрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢

рдпрд╣ LEB128 рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреИрдЪ рдХреЗ рдмрд╛рдж, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЖрдХрд╛рд░ рдереЛрдбрд╝рд╛ рдмрджрд▓ рдЧрдпрд╛, рдЗрд╕рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдиреЗ рдорд╛рдирд╛ рдХрд┐ рд╕рдВрдЧреНрд░рд╣ рдЯреЗрдврд╝рд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдХрдИ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдмрд╛рдж рдЗрд╕рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдЖ рдЧрдИред

рд╣рдо рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЖрдХрд╛рд░ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ... рдФрд░ - рдЬреАрдд! ЁЯЩВ рдирддреАрдЬрд╛ рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рд╣реИ.

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

рдкрд░рд┐рдгрд╛рдо рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛

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

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

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ