āĻā§āĻŽāĻŋāĻāĻž
āĻŽāĻžāĻ°ā§āĻā§āĻ° āĻļā§āĻˇā§ āĻāĻŽāĻ°āĻž
āĻāĻŋāĻā§ āĻ¸āĻŽāĻ¯āĻŧ āĻāĻā§, UC āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°āĻāĻŋāĻ° āĻŦāĻŋāĻā§āĻāĻžāĻĒāĻ¨ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻā§āĻŦ āĻāĻā§āĻ°āĻŽāĻ¨āĻžāĻ¤ā§āĻŽāĻāĻāĻžāĻŦā§ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛: āĻāĻāĻŋ āĻŽā§āĻ¯āĻžāĻ˛āĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻĄāĻŋāĻāĻžāĻāĻ¸ā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻāĻŋāĻĄāĻŋāĻ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻāĻĄāĻŧāĻžāĻ˛ā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¸āĻžāĻāĻ āĻĨā§āĻā§ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ (āĻ
āĻ°ā§āĻĨāĻžā§, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ°āĻž āĻā§āĻŦā§āĻāĻŋāĻ˛ āĻ¯ā§ āĻ¤āĻžāĻ°āĻž āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°āĻā§, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻāĻŋ āĻĒāĻ°ā§āĻŖ āĻāĻŋāĻĄāĻŋāĻ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻāĻ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°āĻāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ APK āĻĒā§āĻ¯āĻŧā§āĻāĻŋ), āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¸āĻš āĻā§āĻ¤āĻŋāĻāĻ° āĻŦā§āĻ¯āĻžāĻ¨āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻā§ āĻ¯ā§ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°āĻāĻŋ āĻĒā§āĻ°āĻžāĻ¨ā§, āĻĻā§āĻ°ā§āĻŦāĻ˛ āĻāĻŦāĻ āĻāĻ āĻāĻžāĻ¤ā§āĻ¯āĻŧ āĻāĻŋāĻ¨āĻŋāĻ¸āĨ¤ āĻāĻŋāĻā§āĻ¤ā§ āĻ
āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻāĻāĻ¸āĻŋ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ° āĻā§āĻ°ā§āĻĒā§ āĻ°āĻ¯āĻŧā§āĻā§
āĻ˛ā§āĻāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻāĻ¸āĻŋ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻā§āĻāĻ˛ āĻĒā§āĻ˛ā§āĻ¤ā§ 500 āĻāĻ° āĻŦā§āĻļāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻāĻŋ āĻāĻŋāĻ¤ā§āĻ¤āĻžāĻāĻ°ā§āĻˇāĻ - āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° Google Chrome āĻāĻ° āĻāĻ°āĻ āĻāĻā§ā§ˇ āĻĒāĻ°ā§āĻ¯āĻžāĻ˛ā§āĻāĻ¨āĻžāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻĒāĻ¨āĻŋ āĻŦāĻŋāĻā§āĻāĻžāĻĒāĻ¨ āĻāĻŦāĻ Google Play-āĻ¤ā§ āĻāĻŋāĻā§ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§ āĻĒā§āĻ¨āĻāĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻĒā§āĻ°āĻā§āĻ° āĻ
āĻāĻŋāĻ¯ā§āĻ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻŦā§āĻˇāĻŖāĻžāĻ° āĻāĻžāĻ°āĻŖ āĻāĻŋāĻ˛: āĻāĻŽāĻ°āĻž UC āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ° āĻāĻžāĻ°āĻžāĻĒ āĻāĻŋāĻā§ āĻāĻ°āĻā§ āĻāĻŋāĻ¨āĻž āĻ¤āĻž āĻĻā§āĻāĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋāĨ¤ āĻāĻ° āĻĻā§āĻāĻž āĻā§āĻ˛ āĻ¸ā§ āĻāĻŋ āĻāĻ°ā§!
āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻā§āĻĄā§, āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻā§āĻŦāĻ˛ āĻā§āĻĄ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻŦāĻ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻā§āĻˇāĻŽāĻ¤āĻž āĻāĻŦāĻŋāĻˇā§āĻā§āĻ¤ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛,
āĻ¨āĻŋāĻā§ āĻ˛ā§āĻāĻž āĻ¸āĻŦāĻāĻŋāĻā§āĻ UC āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§āĻ° āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻžāĻ¸āĻā§āĻāĻŋāĻ āĻ¯āĻž āĻ āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ Google Play-āĻ¤ā§ āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻāĻŋāĻ˛:
package: com.UCMobile.intl
versionName: 12.10.8.1172
versionCode: 10598
sha1 APK-ŅĐ°ĐšĐģĐ°: f5edb2243413c777172f6362876041eb0c3a928c
āĻāĻā§āĻ°āĻŽāĻŖ āĻā§āĻā§āĻāĻ°
UC āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ° āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻā§ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻ¸ā§āĻŦ-āĻŦā§āĻ¯āĻžāĻā§āĻ¯āĻžāĻŽā§āĻ˛āĻ āĻ¨āĻžāĻŽ āĻ¸āĻš āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻā§āĻāĻā§ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ com.uc.deployment.UpgradeDeployService.
<service android_exported="false" android_name="com.uc.deployment.UpgradeDeployService" android_process=":deploy" />
āĻ¯āĻāĻ¨ āĻāĻ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻāĻŋ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧ, āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ° āĻāĻāĻāĻŋ POST āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ°ā§
āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻ¯āĻāĻ¨ āĻāĻāĻāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻĒāĻŋāĻĄāĻŋāĻāĻĢ āĻā§āĻ˛āĻ¤ā§ āĻāĻžāĻ¯āĻŧ, āĻ¤āĻāĻ¨ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻ āĻ¨ā§āĻ°ā§āĻ§āĻā§āĻ˛āĻŋ āĻā§āĻ°ā§āĻ¯āĻžāĻĢāĻŋāĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĻā§āĻāĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§:
āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻāĻāĻŋ POST āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻāĻā§
āĻĒāĻŋāĻĄāĻŋāĻāĻĢ āĻāĻŦāĻ āĻ
āĻĢāĻŋāĻ¸ āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ āĻĻā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻ¸āĻš āĻāĻāĻāĻŋ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ° āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻāĻž āĻ
āĻ¨ā§āĻŽāĻžāĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻā§āĻ¤āĻŋāĻ āĻ¯ā§ āĻĒā§āĻ°āĻĨāĻŽ āĻ
āĻ¨ā§āĻ°ā§āĻ§āĻāĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ°ā§āĻ°āĻŖ āĻāĻ°ā§ (āĻ
āĻ¨ā§āĻ¤āĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻĒā§āĻ°āĻĻāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ°), āĻāĻŦāĻ āĻāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ° āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻŋāĻā§ āĻ¤āĻĨā§āĻ¯ āĻĒāĻžāĻ¯āĻŧ āĻ¯āĻž āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨: āĻ āĻŋāĻāĻžāĻ¨āĻž āĻāĻŦāĻ, āĻ¸āĻŽā§āĻāĻŦāĻ¤ , āĻ
āĻ¨ā§āĻ¯āĻāĻŋāĻā§. āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻšāĻ˛ āĻāĻ āĻ
āĻ¨ā§āĻ°ā§āĻ§āĻāĻŋ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻŖā§āĻĄā§āĻ° āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ°ā§āĻ¨
āĻāĻ¤ā§āĻ¤āĻ° āĻāĻŖā§āĻĄ
āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻ¨āĻŋāĻā§āĻ āĻāĻŋāĻĒ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤
āĻā§āĻ°āĻžāĻĢāĻŋāĻ āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒāĻļāĻ¨ āĻā§āĻĄ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°ā§āĻ¨
āĻāĻ¸ā§āĻ¨ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦā§āĻāĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋāĨ¤ āĻāĻ˛ā§āĻ¨ āĻā§āĻ˛āĻžāĻ¸ āĻā§āĻĄ āĻ¤āĻžāĻāĻžāĻ¨ com.uc.deployment.UpgradeDeployService: āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻĨā§āĻā§ onStartCommand āĻ¯āĻžāĻ com.uc.deployment.bx, āĻāĻŦāĻ āĻāĻāĻŋ āĻĨā§āĻā§ com.uc.browser.core.dcfe:
public final void e(l arg9) {
int v4_5;
String v3_1;
byte[] v3;
byte[] v1 = null;
if(arg9 == null) {
v3 = v1;
}
else {
v3_1 = arg9.iGX.ipR;
StringBuilder v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]product:");
v4.append(arg9.iGX.ipR);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]version:");
v4.append(arg9.iGX.iEn);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]upgrade_type:");
v4.append(arg9.iGX.mMode);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]force_flag:");
v4.append(arg9.iGX.iEo);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]silent_mode:");
v4.append(arg9.iGX.iDQ);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]silent_type:");
v4.append(arg9.iGX.iEr);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]silent_state:");
v4.append(arg9.iGX.iEp);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]silent_file:");
v4.append(arg9.iGX.iEq);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]apk_md5:");
v4.append(arg9.iGX.iEl);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]download_type:");
v4.append(arg9.mDownloadType);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]download_group:");
v4.append(arg9.mDownloadGroup);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]download_path:");
v4.append(arg9.iGH);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]apollo_child_version:");
v4.append(arg9.iGX.iEx);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]apollo_series:");
v4.append(arg9.iGX.iEw);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]apollo_cpu_arch:");
v4.append(arg9.iGX.iEt);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]apollo_cpu_vfp3:");
v4.append(arg9.iGX.iEv);
v4 = new StringBuilder("[");
v4.append(v3_1);
v4.append("]apollo_cpu_vfp:");
v4.append(arg9.iGX.iEu);
ArrayList v3_2 = arg9.iGX.iEz;
if(v3_2 != null && v3_2.size() != 0) {
Iterator v3_3 = v3_2.iterator();
while(v3_3.hasNext()) {
Object v4_1 = v3_3.next();
StringBuilder v5 = new StringBuilder("[");
v5.append(((au)v4_1).getName());
v5.append("]component_name:");
v5.append(((au)v4_1).getName());
v5 = new StringBuilder("[");
v5.append(((au)v4_1).getName());
v5.append("]component_ver_name:");
v5.append(((au)v4_1).aDA());
v5 = new StringBuilder("[");
v5.append(((au)v4_1).getName());
v5.append("]component_ver_code:");
v5.append(((au)v4_1).gBl);
v5 = new StringBuilder("[");
v5.append(((au)v4_1).getName());
v5.append("]component_req_type:");
v5.append(((au)v4_1).gBq);
}
}
j v3_4 = new j();
m.b(v3_4);
h v4_2 = new h();
m.b(v4_2);
ay v5_1 = new ay();
v3_4.hS("");
v3_4.setImsi("");
v3_4.hV("");
v5_1.bPQ = v3_4;
v5_1.bPP = v4_2;
v5_1.yr(arg9.iGX.ipR);
v5_1.gBF = arg9.iGX.mMode;
v5_1.gBI = arg9.iGX.iEz;
v3_2 = v5_1.gAr;
c.aBh();
v3_2.add(g.fs("os_ver", c.getRomInfo()));
v3_2.add(g.fs("processor_arch", com.uc.b.a.a.c.getCpuArch()));
v3_2.add(g.fs("cpu_arch", com.uc.b.a.a.c.Pb()));
String v4_3 = com.uc.b.a.a.c.Pd();
v3_2.add(g.fs("cpu_vfp", v4_3));
v3_2.add(g.fs("net_type", String.valueOf(com.uc.base.system.a.Jo())));
v3_2.add(g.fs("fromhost", arg9.iGX.iEm));
v3_2.add(g.fs("plugin_ver", arg9.iGX.iEn));
v3_2.add(g.fs("target_lang", arg9.iGX.iEs));
v3_2.add(g.fs("vitamio_cpu_arch", arg9.iGX.iEt));
v3_2.add(g.fs("vitamio_vfp", arg9.iGX.iEu));
v3_2.add(g.fs("vitamio_vfp3", arg9.iGX.iEv));
v3_2.add(g.fs("plugin_child_ver", arg9.iGX.iEx));
v3_2.add(g.fs("ver_series", arg9.iGX.iEw));
v3_2.add(g.fs("child_ver", r.aVw()));
v3_2.add(g.fs("cur_ver_md5", arg9.iGX.iEl));
v3_2.add(g.fs("cur_ver_signature", SystemHelper.getUCMSignature()));
v3_2.add(g.fs("upgrade_log", i.bjt()));
v3_2.add(g.fs("silent_install", String.valueOf(arg9.iGX.iDQ)));
v3_2.add(g.fs("silent_state", String.valueOf(arg9.iGX.iEp)));
v3_2.add(g.fs("silent_file", arg9.iGX.iEq));
v3_2.add(g.fs("silent_type", String.valueOf(arg9.iGX.iEr)));
v3_2.add(g.fs("cpu_archit", com.uc.b.a.a.c.Pc()));
v3_2.add(g.fs("cpu_set", SystemHelper.getCpuInstruction()));
boolean v4_4 = v4_3 == null || !v4_3.contains("neon") ? false : true;
v3_2.add(g.fs("neon", String.valueOf(v4_4)));
v3_2.add(g.fs("cpu_cores", String.valueOf(com.uc.b.a.a.c.Jl())));
v3_2.add(g.fs("ram_1", String.valueOf(com.uc.b.a.a.h.Po())));
v3_2.add(g.fs("totalram", String.valueOf(com.uc.b.a.a.h.OL())));
c.aBh();
v3_2.add(g.fs("rom_1", c.getRomInfo()));
v4_5 = e.getScreenWidth();
int v6 = e.getScreenHeight();
StringBuilder v7 = new StringBuilder();
v7.append(v4_5);
v7.append("*");
v7.append(v6);
v3_2.add(g.fs("ss", v7.toString()));
v3_2.add(g.fs("api_level", String.valueOf(Build$VERSION.SDK_INT)));
v3_2.add(g.fs("uc_apk_list", SystemHelper.getUCMobileApks()));
Iterator v4_6 = arg9.iGX.iEA.entrySet().iterator();
while(v4_6.hasNext()) {
Object v6_1 = v4_6.next();
v3_2.add(g.fs(((Map$Entry)v6_1).getKey(), ((Map$Entry)v6_1).getValue()));
}
v3 = v5_1.toByteArray();
}
if(v3 == null) {
this.iGY.iGI.a(arg9, "up_encode", "yes", "fail");
return;
}
v4_5 = this.iGY.iGw ? 0x1F : 0;
if(v3 == null) {
}
else {
v3 = g.i(v4_5, v3);
if(v3 == null) {
}
else {
v1 = new byte[v3.length + 16];
byte[] v6_2 = new byte[16];
Arrays.fill(v6_2, 0);
v6_2[0] = 0x5F;
v6_2[1] = 0;
v6_2[2] = ((byte)v4_5);
v6_2[3] = -50;
System.arraycopy(v6_2, 0, v1, 0, 16);
System.arraycopy(v3, 0, v1, 16, v3.length);
}
}
if(v1 == null) {
this.iGY.iGI.a(arg9, "up_encrypt", "yes", "fail");
return;
}
if(TextUtils.isEmpty(this.iGY.mUpgradeUrl)) {
this.iGY.iGI.a(arg9, "up_url", "yes", "fail");
return;
}
StringBuilder v0 = new StringBuilder("[");
v0.append(arg9.iGX.ipR);
v0.append("]url:");
v0.append(this.iGY.mUpgradeUrl);
com.uc.browser.core.d.c.i v0_1 = this.iGY.iGI;
v3_1 = this.iGY.mUpgradeUrl;
com.uc.base.net.e v0_2 = new com.uc.base.net.e(new com.uc.browser.core.d.c.i$a(v0_1, arg9));
v3_1 = v3_1.contains("?") ? v3_1 + "&dataver=pb" : v3_1 + "?dataver=pb";
n v3_5 = v0_2.uc(v3_1);
m.b(v3_5, false);
v3_5.setMethod("POST");
v3_5.setBodyProvider(v1);
v0_2.b(v3_5);
this.iGY.iGI.a(arg9, "up_null", "yes", "success");
this.iGY.iGI.b(arg9);
}
āĻāĻŽāĻ°āĻž āĻāĻāĻžāĻ¨ā§ āĻāĻāĻāĻŋ POST āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ āĻ¨ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻāĻŋāĨ¤ āĻāĻŽāĻ°āĻž 16 āĻŦāĻžāĻāĻā§āĻ° āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻ°ā§ āĻ¤ā§āĻ°āĻŋāĻ° āĻĻāĻŋāĻā§ āĻŽāĻ¨ā§āĻ¯ā§āĻ āĻĻāĻŋāĻ āĻāĻŦāĻ āĻāĻāĻŋ āĻĒā§āĻ°āĻŖ āĻāĻ°ā§āĻ¨: 0x5F, 0, 0x1F, -50 (=0xCE)āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻĒāĻ°ā§āĻ° āĻ āĻ¨ā§āĻ°ā§āĻ§ā§ āĻ¯āĻž āĻĻā§āĻā§āĻāĻŋ āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻŽāĻŋāĻ˛ā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤
āĻāĻāĻ āĻā§āĻ˛āĻžāĻ¸ā§ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻ¨ā§āĻ¸ā§āĻā§āĻĄ āĻā§āĻ˛āĻžāĻ¸ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ¯āĻžāĻ° āĻāĻ°ā§āĻāĻāĻŋ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ°āĻ¯āĻŧā§āĻā§:
public final void a(l arg10, byte[] arg11) {
f v0 = this.iGQ;
StringBuilder v1 = new StringBuilder("[");
v1.append(arg10.iGX.ipR);
v1.append("]:UpgradeSuccess");
byte[] v1_1 = null;
if(arg11 == null) {
}
else if(arg11.length < 16) {
}
else {
if(arg11[0] != 0x60 && arg11[3] != 0xFFFFFFD0) {
goto label_57;
}
int v3 = 1;
int v5 = arg11[1] == 1 ? 1 : 0;
if(arg11[2] != 1 && arg11[2] != 11) {
if(arg11[2] == 0x1F) {
}
else {
v3 = 0;
}
}
byte[] v7 = new byte[arg11.length - 16];
System.arraycopy(arg11, 16, v7, 0, v7.length);
if(v3 != 0) {
v7 = g.j(arg11[2], v7);
}
if(v7 == null) {
goto label_57;
}
if(v5 != 0) {
v1_1 = g.P(v7);
goto label_57;
}
v1_1 = v7;
}
label_57:
if(v1_1 == null) {
v0.iGY.iGI.a(arg10, "up_decrypt", "yes", "fail");
return;
}
q v11 = g.b(arg10, v1_1);
if(v11 == null) {
v0.iGY.iGI.a(arg10, "up_decode", "yes", "fail");
return;
}
if(v0.iGY.iGt) {
v0.d(arg10);
}
if(v0.iGY.iGo != null) {
v0.iGY.iGo.a(0, ((o)v11));
}
if(v0.iGY.iGs) {
v0.iGY.a(((o)v11));
v0.iGY.iGI.a(v11, "up_silent", "yes", "success");
v0.iGY.iGI.a(v11);
return;
}
v0.iGY.iGI.a(v11, "up_silent", "no", "success");
}
}
āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻāĻ¨āĻĒā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦāĻžāĻāĻāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ
ā§āĻ¯āĻžāĻ°ā§ āĻ¨ā§āĻ¯āĻŧ āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°ā§ āĻ¯ā§ āĻļā§āĻ¨ā§āĻ¯ āĻŦāĻžāĻāĻāĻāĻŋ 0x60 āĻŦāĻž āĻ¤ā§āĻ¤ā§āĻ¯āĻŧ āĻŦāĻžāĻāĻāĻāĻŋ 0xD0 āĻāĻŦāĻ āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻŦāĻžāĻāĻāĻāĻŋ 1, 11 āĻŦāĻž 0x1FāĨ¤ āĻāĻŽāĻ°āĻž āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋ āĻĻā§āĻāĻŋ: āĻļā§āĻ¨ā§āĻ¯ āĻŦāĻžāĻāĻāĻāĻŋ 0x60, āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧāĻāĻŋ 0x1F, āĻ¤ā§āĻ¤ā§āĻ¯āĻŧāĻāĻŋ 0x60āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻŽāĻ¤ āĻļā§āĻ¨āĻžāĻā§āĻā§. āĻ˛āĻžāĻāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻŋāĻāĻžāĻ° āĻāĻ°ā§ ("up_decrypt", āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ), āĻāĻāĻāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻāĻžāĻ¨ā§ āĻŦāĻ˛āĻž āĻāĻāĻŋāĻ¤ āĻ¯āĻž āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻŦā§āĨ¤
āĻāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§ āĻāĻāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ gj. āĻāĻ˛ā§āĻ˛ā§āĻā§āĻ¯ āĻ¯ā§ āĻĒā§āĻ°āĻĨāĻŽ āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻ āĻšāĻ˛ āĻ
āĻĢāĻ¸ā§āĻ 2 āĻ āĻŦāĻžāĻāĻ (āĻ¯ā§āĻŽāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ 0x1F), āĻāĻŦāĻ āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧāĻāĻŋ āĻšāĻ˛ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻžāĻĄāĻŧāĻž
āĻĒā§āĻ°āĻĨāĻŽ 16 āĻŦāĻžāĻāĻāĨ¤
public static byte[] j(int arg1, byte[] arg2) {
if(arg1 == 1) {
arg2 = c.c(arg2, c.adu);
}
else if(arg1 == 11) {
arg2 = m.aF(arg2);
}
else if(arg1 != 0x1F) {
}
else {
arg2 = EncryptHelper.decrypt(arg2);
}
return arg2;
}
āĻ¸ā§āĻĒāĻˇā§āĻāĻ¤āĻ, āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒāĻļāĻ¨ āĻ
ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻāĻāĻ āĻŦāĻžāĻāĻ āĻ¯āĻž āĻāĻŽāĻžāĻĻā§āĻ°
āĻā§āĻ¸ 0x1F āĻāĻ° āĻ¸āĻŽāĻžāĻ¨, āĻ¤āĻŋāĻ¨āĻāĻŋ āĻ¸āĻŽā§āĻāĻžāĻŦā§āĻ¯ āĻŦāĻŋāĻāĻ˛ā§āĻĒā§āĻ° āĻāĻāĻāĻŋāĻā§ āĻŦā§āĻāĻžāĻ¯āĻŧāĨ¤
āĻāĻŽāĻ°āĻž āĻā§āĻĄ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻ āĻŦāĻŋāĻ°āĻ¤. āĻāĻ¯āĻŧā§āĻāĻāĻž āĻ˛āĻžāĻĢ āĻĻā§āĻāĻ¯āĻŧāĻžāĻ° āĻĒāĻ°ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¸ā§āĻŦ-āĻŦā§āĻ¯āĻžāĻā§āĻ¯āĻžāĻŽā§āĻ˛āĻ āĻ¨āĻžāĻŽ āĻ¸āĻš āĻāĻāĻāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§ āĻ¨āĻŋāĻā§āĻĻā§āĻ° āĻā§āĻāĻā§ āĻĒāĻžāĻ decryptBytesByKey.
āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĨā§āĻā§ āĻāĻ°āĻ āĻĻā§āĻāĻŋ āĻŦāĻžāĻāĻ āĻāĻ˛āĻžāĻĻāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ°āĻŋāĻ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻā§āĻā§āĨ¤ āĻāĻāĻž āĻ¸ā§āĻĒāĻˇā§āĻ āĻ¯ā§ āĻāĻ āĻāĻžāĻŦā§ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻā§ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
private static byte[] decryptBytesByKey(byte[] bytes) {
byte[] v0 = null;
if(bytes != null) {
try {
if(bytes.length < EncryptHelper.PREFIX_BYTES_SIZE) {
}
else if(bytes.length == EncryptHelper.PREFIX_BYTES_SIZE) {
return v0;
}
else {
byte[] prefix = new byte[EncryptHelper.PREFIX_BYTES_SIZE]; // 2 йаКŅĐ°
System.arraycopy(bytes, 0, prefix, 0, prefix.length);
String keyId = c.ayR().d(ByteBuffer.wrap(prefix).getShort()); // ĐŅйОŅ ĐēĐģŅŅĐ°
if(keyId == null) {
return v0;
}
else {
a v2 = EncryptHelper.ayL();
if(v2 == null) {
return v0;
}
else {
byte[] enrypted = new byte[bytes.length - EncryptHelper.PREFIX_BYTES_SIZE];
System.arraycopy(bytes, EncryptHelper.PREFIX_BYTES_SIZE, enrypted, 0, enrypted.length);
return v2.l(keyId, enrypted);
}
}
}
}
catch(SecException v7_1) {
EncryptHelper.handleDecryptException(((Throwable)v7_1), v7_1.getErrorCode());
return v0;
}
catch(Throwable v7) {
EncryptHelper.handleDecryptException(v7, 2);
return v0;
}
}
return v0;
}
āĻ¸āĻžāĻŽāĻ¨ā§āĻ° āĻĻāĻŋāĻā§ āĻ¤āĻžāĻāĻŋāĻ¯āĻŧā§, āĻāĻŽāĻ°āĻž āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°āĻŋ āĻ¯ā§ āĻāĻ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻāĻŽāĻ°āĻž āĻāĻāĻ¨āĻ āĻāĻāĻāĻŋ āĻā§ āĻĒāĻžāĻāĻ¨āĻŋ, āĻ¤āĻŦā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻŋāĻ° "āĻļāĻ¨āĻžāĻā§āĻ¤āĻāĻžāĻ°ā§"āĨ¤ āĻāĻžāĻŦāĻŋ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻāĻāĻā§ āĻŦā§āĻļāĻŋ āĻāĻāĻŋāĻ˛āĨ¤
āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§, āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻ°āĻ āĻĻā§āĻāĻŋ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻžāĻ°āĻāĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§: āĻŽā§āĻ¯āĻžāĻāĻŋāĻ āĻ¨āĻŽā§āĻŦāĻ° 16, āĻā§ āĻļāĻ¨āĻžāĻā§āĻ¤āĻāĻžāĻ°ā§, āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻĄā§āĻāĻž āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻŦā§āĻ§āĻāĻŽā§āĻ¯ āĻ¸ā§āĻā§āĻ°āĻŋāĻ (āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻžāĻ˛āĻŋ)āĨ¤
public final byte[] l(String keyId, byte[] encrypted) throws SecException {
return this.ayJ().staticBinarySafeDecryptNoB64(16, keyId, encrypted, "");
}
āĻ§āĻžāĻ°āĻžāĻŦāĻžāĻšāĻŋāĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻĒāĻ° āĻāĻŽāĻ°āĻž āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§ āĻĒā§āĻāĻāĻžāĻ staticBinarySafeDecryptNoB64 āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ā§āĻ° com.alibaba.wireless.security.open.staticdataencrypt.IStaticDataEncryptComponent. āĻāĻ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸āĻāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨āĻāĻžāĻ°ā§ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻā§āĻĄā§ āĻā§āĻ¨ āĻā§āĻ˛āĻžāĻ¸ āĻ¨ā§āĻāĨ¤ āĻĢāĻžāĻāĻ˛ā§ āĻāĻ°āĻāĻŽ āĻāĻāĻāĻž āĻā§āĻ˛āĻžāĻ¸ āĻāĻā§ lib/armeabi-v7a/libsgmain.so, āĻ¯āĻž āĻāĻ¸āĻ˛ā§ āĻāĻāĻāĻŋ .so āĻ¨āĻ¯āĻŧ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻāĻŋ .jar. āĻāĻŽāĻ°āĻž āĻ¯ā§ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§ āĻāĻā§āĻ°āĻšā§ āĻ¤āĻž āĻ¨āĻŋāĻŽā§āĻ¨āĻ°ā§āĻĒ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ:
package com.alibaba.wireless.security.a.i;
// ...
public class a implements IStaticDataEncryptComponent {
private ISecurityGuardPlugin a;
// ...
private byte[] a(int mode, int magicInt, int xzInt, String keyId, byte[] encrypted, String magicString) {
return this.a.getRouter().doCommand(10601, new Object[]{Integer.valueOf(mode), Integer.valueOf(magicInt), Integer.valueOf(xzInt), keyId, encrypted, magicString});
}
// ...
private byte[] b(int magicInt, String keyId, byte[] encrypted, String magicString) {
return this.a(2, magicInt, 0, keyId, encrypted, magicString);
}
// ...
public byte[] staticBinarySafeDecryptNoB64(int magicInt, String keyId, byte[] encrypted, String magicString) throws SecException {
if(keyId != null && keyId.length() > 0 && magicInt >= 0 && magicInt < 19 && encrypted != null && encrypted.length > 0) {
return this.b(magicInt, keyId, encrypted, magicString);
}
throw new SecException("", 301);
}
//...
}
āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻā§āĻ˛āĻŋāĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻāĻ°āĻ āĻĻā§āĻāĻŋ āĻĒā§āĻ°ā§āĻŖāĻ¸āĻāĻā§āĻ¯āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻĒāĻ°āĻŋāĻĒā§āĻ°āĻ: 2 āĻāĻŦāĻ 0āĨ¤ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻŋāĻāĻžāĻ° āĻāĻ°āĻž
āĻ¸āĻŦāĻāĻŋāĻā§, 2 āĻŽāĻžāĻ¨ā§ āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒāĻļāĻ¨, āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻŽāĻ¤ā§ āĻā§āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻā§āĻ˛āĻžāĻ¸ javax.crypto.Cipher. āĻāĻŦāĻ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻŋāĻā§ 10601 āĻ¨āĻŽā§āĻŦāĻ° āĻ¸āĻš āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧ - āĻāĻāĻŋ āĻĻā§āĻļā§āĻ¯āĻ¤ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ¨āĻŽā§āĻŦāĻ°āĨ¤
āĻā§āĻ°āĻžāĻ¨āĻāĻŋāĻļāĻ¨ā§āĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻā§āĻāĻ¨ā§āĻ° āĻĒāĻ°ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸ āĻā§āĻāĻā§ āĻĒāĻžāĻ āĻ¯āĻž āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°ā§ āĻāĻāĻāĻ°āĻāĻāĻžāĻ° āĻāĻŽā§āĻĒā§āĻ¨ā§āĻ¨ā§āĻ āĻāĻŦāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ doCommand:
package com.alibaba.wireless.security.mainplugin;
import com.alibaba.wireless.security.framework.IRouterComponent;
import com.taobao.wireless.security.adapter.JNICLibrary;
public class a implements IRouterComponent {
public a() {
super();
}
public Object doCommand(int arg2, Object[] arg3) {
return JNICLibrary.doCommandNative(arg2, arg3);
}
}
āĻāĻŦāĻ āĻā§āĻ˛āĻžāĻ¸āĻ JNICL āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ, āĻ¯āĻžāĻ¤ā§ āĻĻā§āĻļā§āĻ¯āĻŧ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻā§āĻˇāĻŖāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧ doCommandNative:
package com.taobao.wireless.security.adapter;
public class JNICLibrary {
public static native Object doCommandNative(int arg0, Object[] arg1);
}
āĻāĻ° āĻŽāĻžāĻ¨ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨ā§āĻāĻŋāĻ āĻā§āĻĄā§ āĻāĻāĻāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻā§āĻāĻā§ āĻŦā§āĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ doCommandNative. āĻāĻ° āĻāĻāĻžāĻ¨ āĻĨā§āĻā§āĻ āĻŽāĻāĻž āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧāĨ¤
āĻŽā§āĻļāĻŋāĻ¨ āĻā§āĻĄā§āĻ° āĻ āĻ¸ā§āĻĒāĻˇā§āĻāĻ¤āĻž
āĻĢāĻžāĻāĻ˛ā§ libsgmain.so (āĻ¯āĻž āĻāĻ¸āĻ˛ā§ āĻāĻāĻāĻŋ .jar āĻāĻŦāĻ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻ āĻŋāĻ āĻāĻĒāĻ°ā§ āĻāĻŋāĻā§ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒāĻļāĻ¨-āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ā§āĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻā§āĻāĻā§ āĻĒā§āĻ¯āĻŧā§āĻāĻŋ) āĻāĻāĻāĻŋ āĻ¨ā§āĻāĻŋāĻ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻāĻā§: libsgmainso-6.4.36.so. āĻāĻŽāĻ°āĻž āĻāĻāĻŋ IDA-āĻ¤ā§ āĻā§āĻ˛āĻŋ āĻāĻŦāĻ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻ¸āĻš āĻāĻāĻā§āĻā§āĻ āĻĄāĻžāĻ¯āĻŧāĻžāĻ˛āĻ āĻŦāĻā§āĻ¸ āĻĒāĻžāĻāĨ¤ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻšāĻ˛ āĻŦāĻŋāĻāĻžāĻ āĻļāĻŋāĻ°ā§āĻ¨āĻžāĻŽ āĻā§āĻŦāĻŋāĻ˛āĻāĻŋ āĻ āĻŦā§āĻ§āĨ¤ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖāĻā§ āĻāĻāĻŋāĻ˛ āĻāĻ°āĻžāĻ° āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ā§ āĻāĻāĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻ¤āĻŦā§ āĻāĻāĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻ: āĻāĻāĻāĻŋ ELF āĻĢāĻžāĻāĻ˛ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻ˛ā§āĻĄ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§, āĻāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻšā§āĻĄāĻžāĻ° āĻā§āĻŦāĻŋāĻ˛ āĻ¯āĻĨā§āĻˇā§āĻāĨ¤ āĻ
āĻ¤āĻāĻŦ, āĻšā§āĻĄāĻžāĻ°ā§ āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻā§āĻˇā§āĻ¤ā§āĻ°āĻā§āĻ˛āĻŋāĻā§ āĻļā§āĻ¨ā§āĻ¯ āĻāĻ°ā§ āĻāĻŽāĻ°āĻž āĻā§āĻŦāĻ˛ āĻŦāĻŋāĻāĻžāĻ āĻā§āĻŦāĻŋāĻ˛āĻāĻŋ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻŋāĨ¤
āĻāĻāĻĄāĻŋāĻ āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻāĻŦāĻžāĻ° āĻā§āĻ˛ā§āĻ¨āĨ¤
āĻāĻžāĻāĻž āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§āĻļāĻŋāĻ¨āĻā§ āĻŦāĻ˛āĻžāĻ° āĻĻā§āĻāĻŋ āĻāĻĒāĻžāĻ¯āĻŧ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯ā§āĻāĻŋ āĻ¨ā§āĻāĻŋāĻ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ¤ā§ āĻāĻžāĻāĻž āĻā§āĻĄā§ āĻ¨ā§āĻāĻŋāĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻā§āĻˇāĻŋāĻ¤ āĻāĻāĻāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ āĻŋāĻ āĻā§āĻĨāĻžāĻ¯āĻŧ āĻ āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤āĨ¤ āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻāĻžāĻ¤āĻŋāĻ° āĻ¨āĻžāĻŽ āĻĻāĻŋāĻ¤ā§ āĻšāĻ¯āĻŧ Java_package_name_ClassName_MethodName.
āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧāĻāĻŋ āĻšāĻ˛ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻ˛ā§āĻĄ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻāĻ°āĻž (āĻĢāĻžāĻāĻļāĻ¨ā§ JNI_āĻ
āĻ¨āĻ˛ā§āĻĄ)
āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ°ā§āĻāĻŋāĻ¸ā§āĻāĻžāĻ° āĻ¨ā§āĻāĻŋāĻāĻ¸.
āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻĨāĻŽ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ, āĻ¨āĻžāĻŽāĻāĻŋ āĻāĻāĻ°āĻāĻŽ āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤: Java_com_taobao_wireless_security_adapter_JNICLibrary_doCommandNative.
āĻ°āĻĒā§āĻ¤āĻžāĻ¨āĻŋāĻā§āĻ¤ āĻĢāĻžāĻāĻļāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻŽāĻ¨ āĻā§āĻ¨āĻ āĻĢāĻžāĻāĻļāĻ¨ āĻ¨ā§āĻ, āĻ¯āĻžāĻ° āĻŽāĻžāĻ¨ā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ°ā§āĻāĻŋāĻ¸ā§āĻāĻžāĻ° āĻ¨ā§āĻāĻŋāĻāĻ¸.
āĻāĻ˛ā§āĻ¨ āĻĢāĻžāĻāĻļāĻ¨ā§ āĻ¯āĻžāĻ JNI_āĻ
āĻ¨āĻ˛ā§āĻĄ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻāĻ āĻāĻŦāĻŋāĻāĻŋ āĻĻā§āĻāĻŋ:
āĻāĻāĻžāĻ¨ā§ āĻāĻŋ āĻšāĻā§āĻā§? āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻāĻ°ā§, āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻļā§āĻ°ā§ āĻāĻŦāĻ āĻļā§āĻˇ āĻāĻāĻ°āĻāĻŽ āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĨ¤ āĻ¸ā§āĻā§āĻ¯āĻžāĻā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻ¨āĻž āĻ°ā§āĻāĻŋāĻ¸ā§āĻāĻžāĻ°ā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ¸āĻā§āĻāĻ¯āĻŧ āĻāĻ°ā§ āĻ¯āĻž āĻĢāĻžāĻāĻļāĻ¨ āĻ¤āĻžāĻ° āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ˛āĻžāĻĒā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦā§ (āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, R0, R1 āĻāĻŦāĻ R2), āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ LR āĻ°ā§āĻāĻŋāĻ¸ā§āĻāĻžāĻ°ā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§, āĻ¯āĻžāĻ¤ā§ āĻĢāĻžāĻāĻļāĻ¨ āĻĨā§āĻā§ āĻĢā§āĻ°āĻ¤ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻ°āĻ¯āĻŧā§āĻā§ . āĻļā§āĻˇ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻ¨āĻž āĻ¸āĻāĻ°āĻā§āĻˇāĻŋāĻ¤ āĻ°ā§āĻāĻŋāĻ¸ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻā§ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°ā§, āĻāĻŦāĻ āĻĢā§āĻ°āĻ¤ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻ
āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻĒāĻŋāĻ¸āĻŋ āĻ°ā§āĻāĻŋāĻ¸ā§āĻāĻžāĻ°ā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ - āĻāĻāĻāĻžāĻŦā§ āĻĢāĻžāĻāĻļāĻ¨ āĻĨā§āĻā§ āĻĢāĻŋāĻ°ā§ āĻāĻ¸ā§āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻ¨āĻŋāĻˇā§āĻ āĻāĻžāĻŦā§ āĻ¤āĻžāĻāĻžāĻ¨, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻĒāĻ¨āĻŋ āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°āĻŦā§āĻ¨ āĻ¯ā§ āĻļā§āĻˇā§āĻ° āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻāĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŋāĻ¤ āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§āĨ¤ āĻāĻ° āĻĒāĻ° āĻā§āĻŽāĻ¨ āĻšāĻŦā§ āĻ¤āĻž āĻšāĻŋāĻ¸āĻžāĻŦ āĻāĻ°āĻž āĻ¯āĻžāĻ
āĻā§āĻĄ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻļāĻ¨āĨ¤ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ āĻŋāĻāĻžāĻ¨āĻž 1xB0 R130 āĻ āĻ˛ā§āĻĄ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻāĻāĻŋ āĻĨā§āĻā§ 5 āĻŦāĻŋāĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻāĻŋ R0 āĻ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻ¤ā§ 0x10 āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻāĻž 0xB13B āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻāĻ. āĻāĻāĻāĻžāĻŦā§, IDA āĻŽāĻ¨ā§ āĻāĻ°ā§ āĻ¯ā§ āĻļā§āĻˇ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻāĻŋ āĻāĻāĻāĻŋ āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻĢāĻžāĻāĻļāĻ¨ āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻĒā§āĻ°āĻā§āĻ¤āĻĒāĻā§āĻˇā§ āĻāĻāĻŋ āĻāĻŖāĻ¨āĻž āĻāĻ°āĻž āĻ āĻŋāĻāĻžāĻ¨āĻž 0xB13B āĻ āĻ¯āĻžāĻā§āĻā§āĨ¤
āĻāĻāĻžāĻ¨ā§ āĻ¸ā§āĻŽāĻ°āĻŖ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻ¯ā§ ARM āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻ°ā§āĻ° āĻĻā§āĻāĻŋ āĻŽā§āĻĄ āĻāĻŦāĻ āĻĻā§āĻāĻŋ āĻ¸ā§āĻ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻžāĻŦāĻ˛ā§ āĻ°āĻ¯āĻŧā§āĻā§: ARM āĻāĻŦāĻ āĻĨāĻžāĻŽā§āĻŦāĨ¤ āĻ āĻŋāĻāĻžāĻ¨āĻžāĻ° āĻ¸āĻ°ā§āĻŦāĻ¨āĻŋāĻŽā§āĻ¨ āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯ āĻŦāĻŋāĻ āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻ°āĻā§ āĻŦāĻ˛ā§ āĻ¯ā§ āĻā§āĻ¨ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻ¸ā§āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻā§āĻā§āĨ¤ āĻ āĻ°ā§āĻĨāĻžā§, āĻ āĻŋāĻāĻžāĻ¨āĻžāĻāĻŋ āĻāĻ¸āĻ˛ā§ 0xB13A, āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¤āĻ¤ āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯ āĻŦāĻŋāĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻĨāĻžāĻŽā§āĻŦ āĻŽā§āĻĄ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§āĨ¤
āĻāĻ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ¤ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻļā§āĻ°ā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻ
āĻ¨ā§āĻ°ā§āĻĒ "āĻ
ā§āĻ¯āĻžāĻĄāĻžāĻĒā§āĻāĻžāĻ°" āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ
āĻāĻŦāĻ°ā§āĻāĻ¨āĻž āĻā§āĻĄāĨ¤ āĻāĻŽāĻ°āĻž āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤āĻāĻžāĻŦā§ āĻ¤āĻžāĻĻā§āĻ° āĻāĻĒāĻ° āĻŦāĻžāĻ¸ āĻāĻ°āĻŦ āĻ¨āĻž - āĻāĻŽāĻ°āĻž āĻļā§āĻ§ā§ āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŋ
āĻ¯ā§ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻŦ āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻāĻ¸āĻ˛ āĻļā§āĻ°ā§āĻāĻž āĻāĻāĻā§ āĻĻā§āĻ°ā§āĨ¤
āĻ¯ā§āĻšā§āĻ¤ā§ āĻā§āĻĄāĻāĻŋ āĻ¸ā§āĻĒāĻˇā§āĻāĻāĻžāĻŦā§ 0xB13A-āĻ āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻž, āĻ¤āĻžāĻ IDA āĻ¨āĻŋāĻā§āĻ āĻāĻŋāĻ¨āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĻŋ āĻ¯ā§ āĻā§āĻĄāĻāĻŋ āĻāĻ āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ¨ā§ āĻ āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤āĨ¤ āĻāĻāĻ āĻāĻžāĻ°āĻŖā§, āĻāĻāĻŋ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ° āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻā§āĻĄāĻā§ āĻā§āĻĄ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸ā§āĻŦā§āĻā§āĻ¤āĻŋ āĻĻā§āĻ¯āĻŧ āĻ¨āĻž, āĻ¯āĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖāĻā§ āĻāĻŋāĻā§āĻāĻž āĻāĻ āĻŋāĻ¨ āĻāĻ°ā§ āĻ¤ā§āĻ˛ā§āĨ¤ āĻāĻŽāĻ°āĻž IDA āĻā§ āĻŦāĻ˛āĻŋ āĻ¯ā§ āĻāĻāĻŋ āĻā§āĻĄ, āĻāĻŦāĻ āĻāĻāĻŋāĻ āĻāĻā§:
āĻā§āĻŦāĻŋāĻ˛āĻāĻŋ āĻ¸ā§āĻĒāĻˇā§āĻāĻāĻžāĻŦā§ 0xB144 āĻ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧāĨ¤ sub_494C-āĻ¤ā§ āĻā§ āĻāĻā§?
āĻāĻ˛āĻāĻ° āĻ°ā§āĻāĻŋāĻ¸ā§āĻāĻžāĻ°ā§ āĻāĻ āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻŽāĻ°āĻž āĻĒā§āĻ°ā§āĻŦā§ āĻāĻ˛ā§āĻ˛ā§āĻāĻŋāĻ¤ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻ āĻŋāĻāĻžāĻ¨āĻž (0xB144) āĻĒāĻžāĻāĨ¤ R0 āĻ - āĻāĻ āĻā§āĻŦāĻŋāĻ˛ā§ āĻ¸ā§āĻāĻāĨ¤ āĻ
āĻ°ā§āĻĨāĻžā§, āĻŽāĻžāĻ¨āĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻĨā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ, āĻāĻ˛āĻāĻ°-āĻ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻšāĻ¯āĻŧ
āĻ¯ā§ āĻ āĻŋāĻāĻžāĻ¨āĻžāĻ¯āĻŧ āĻ¯ā§āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻ¸ā§āĻ¨ āĻāĻāĻŋ āĻāĻŖāĻ¨āĻž āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋ: 0xB144 + [0xB144 + 8* 4] = 0xB144 + 0x120 = 0xB264āĨ¤ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ āĻŋāĻāĻžāĻ¨āĻžāĻ¯āĻŧ āĻ¯āĻžāĻ āĻāĻŦāĻ āĻāĻā§āĻˇāĻ°āĻŋāĻ āĻ
āĻ°ā§āĻĨā§ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĻāĻ°āĻāĻžāĻ°ā§ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻ¨āĻž āĻĻā§āĻāĻŋ āĻāĻŦāĻ āĻāĻŦāĻžāĻ° 0xB140 āĻ āĻ¯āĻžāĻ:
āĻāĻāĻ¨ āĻā§āĻŦāĻŋāĻ˛ āĻĨā§āĻā§ āĻ¸ā§āĻāĻ 0x20 āĻ¸āĻš āĻ
āĻĢāĻ¸ā§āĻā§ āĻāĻāĻāĻŋ āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻšāĻŦā§āĨ¤
āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻāĻāĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻŋāĻāĻžāĻ°, āĻā§āĻĄā§ āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻ āĻ¨ā§āĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻŦā§āĨ¤ āĻĒā§āĻ°āĻļā§āĻ¨ āĻāĻ āĻā§ āĻ¯ā§ āĻā§āĻ¨āĻāĻāĻžāĻŦā§ āĻ āĻŋāĻāĻžāĻ¨āĻžāĻā§āĻ˛āĻŋ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻāĻŖāĻ¨āĻž āĻ¨āĻž āĻāĻ°ā§ āĻāĻāĻŋāĻā§ āĻāĻ°āĻ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻŽā§āĻāĻžāĻŦā§āĻ˛āĻž āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻāĻŋāĻ¨āĻžāĨ¤ āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻŦāĻ IDA-āĻ¤ā§ āĻā§āĻĄ āĻĒā§āĻ¯āĻžāĻ āĻāĻ°āĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§ āĻāĻ¸ā§:
def put_unconditional_branch(source, destination):
offset = (destination - source - 4) >> 1
if offset > 2097151 or offset < -2097152:
raise RuntimeError("Invalid offset")
if offset > 1023 or offset < -1024:
instruction1 = 0xf000 | ((offset >> 11) & 0x7ff)
instruction2 = 0xb800 | (offset & 0x7ff)
patch_word(source, instruction1)
patch_word(source + 2, instruction2)
else:
instruction = 0xe000 | (offset & 0x7ff)
patch_word(source, instruction)
ea = here()
if get_wide_word(ea) == 0xb503: #PUSH {R0,R1,LR}
ea1 = ea + 2
if get_wide_word(ea1) == 0xbf00: #NOP
ea1 += 2
if get_operand_type(ea1, 0) == 1 and get_operand_value(ea1, 0) == 0 and get_operand_type(ea1, 1) == 2:
index = get_wide_dword(get_operand_value(ea1, 1))
print "index =", hex(index)
ea1 += 2
if get_operand_type(ea1, 0) == 7:
table = get_operand_value(ea1, 0) + 4
elif get_operand_type(ea1, 1) == 2:
table = get_operand_value(ea1, 1) + 4
else:
print "Wrong operand type on", hex(ea1), "-", get_operand_type(ea1, 0), get_operand_type(ea1, 1)
table = None
if table is None:
print "Unable to find table"
else:
print "table =", hex(table)
offset = get_wide_dword(table + (index << 2))
put_unconditional_branch(ea, table + offset)
else:
print "Unknown code", get_operand_type(ea1, 0), get_operand_value(ea1, 0), get_operand_type(ea1, 1) == 2
else:
print "Unable to detect first instruction"
āĻāĻžāĻ°ā§āĻ¸āĻžāĻ°āĻāĻŋāĻā§ 0xB26A āĻ˛āĻžāĻāĻ¨ā§ āĻ°āĻžāĻā§āĻ¨, āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻāĻŋ āĻāĻžāĻ˛āĻžāĻ¨ āĻāĻŦāĻ 0xB4B0 āĻ¤ā§ āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻĻā§āĻā§āĻ¨:
āĻāĻāĻĄāĻŋāĻ āĻāĻŦāĻžāĻ° āĻāĻ āĻāĻ˛āĻžāĻāĻžāĻāĻŋāĻā§ āĻā§āĻĄ āĻšāĻŋāĻ¸ā§āĻŦā§ āĻ¸ā§āĻŦā§āĻā§āĻ¤āĻŋ āĻĻā§āĻ¯āĻŧāĻ¨āĻŋāĨ¤ āĻāĻŽāĻ°āĻž āĻ¤āĻžāĻā§ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻāĻ°ā§āĻāĻāĻŋ āĻ¨āĻāĻļāĻž āĻĻā§āĻāĻŋ:
BLX āĻāĻ° āĻĒāĻ°ā§āĻ° āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻžāĻŦāĻ˛ā§ āĻā§āĻŦ āĻāĻāĻāĻž āĻ
āĻ°ā§āĻĨāĻŦāĻš āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻšāĻ¯āĻŧ āĻ¨āĻž, āĻāĻāĻž āĻ
āĻ¨ā§āĻāĻāĻž āĻ¸ā§āĻĨāĻžāĻ¨āĻā§āĻ¯ā§āĻ¤āĻŋāĻ° āĻŽāĻ¤ā§āĨ¤ āĻāĻ¸ā§āĻ¨ sub_4964 āĻĻā§āĻāĻŋ:
āĻāĻŦāĻ āĻĒā§āĻ°āĻā§āĻ¤āĻĒāĻā§āĻˇā§, āĻāĻāĻžāĻ¨ā§ LR-āĻ āĻĨāĻžāĻāĻž āĻ āĻŋāĻāĻžāĻ¨āĻžāĻ¯āĻŧ āĻāĻāĻāĻŋ dword āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§āĻā§, āĻāĻ āĻ āĻŋāĻāĻžāĻ¨āĻžāĻ¯āĻŧ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¯āĻžāĻ° āĻĒāĻ°ā§ āĻĢāĻ˛āĻžāĻĢāĻ˛ā§āĻ° āĻ āĻŋāĻāĻžāĻ¨āĻžāĻ¯āĻŧ āĻŽāĻžāĻ¨ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ¯āĻžāĻā§āĻ° āĻāĻĒāĻ° āĻ°āĻžāĻāĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ, LR-āĻ 4 āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻ¯āĻžāĻ¤ā§ āĻĢāĻžāĻāĻļāĻ¨ āĻĨā§āĻā§ āĻĢāĻŋāĻ°ā§ āĻāĻ¸āĻžāĻ° āĻĒāĻ°ā§, āĻāĻ āĻāĻāĻ āĻ
āĻĢāĻ¸ā§āĻāĻāĻŋ āĻŦāĻžāĻĻ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻ° āĻĒāĻ°ā§ POP {R1} āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ¸ā§āĻā§āĻ¯āĻžāĻ āĻĨā§āĻā§ āĻĢāĻ˛āĻŋāĻ¤ āĻŽāĻžāĻ¨ āĻ¨ā§āĻ¯āĻŧāĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ 0xB4BA + 0xEA = 0xB5A4 āĻ āĻŋāĻāĻžāĻ¨āĻžāĻ¯āĻŧ āĻ
āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤ āĻ¤āĻž āĻĻā§āĻā§āĻ¨, āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻŽāĻ¤ā§ āĻāĻŋāĻā§ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻŦā§āĻ¨:
āĻāĻ āĻ¨āĻāĻļāĻžāĻāĻŋ āĻĒā§āĻ¯āĻžāĻ āĻāĻ°āĻ¤ā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻā§āĻĄ āĻĨā§āĻā§ āĻĻā§āĻāĻŋ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻĒā§āĻ¤ā§ āĻšāĻŦā§: āĻ
āĻĢāĻ¸ā§āĻ āĻāĻŦāĻ āĻ°ā§āĻāĻŋāĻ¸ā§āĻāĻžāĻ° āĻ¨āĻŽā§āĻŦāĻ° āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻĒāĻ¨āĻŋ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ°āĻžāĻāĻ¤ā§ āĻāĻžāĻ¨āĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¸āĻŽā§āĻāĻžāĻŦā§āĻ¯ āĻ°ā§āĻāĻŋāĻ¸ā§āĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻā§ āĻĨā§āĻā§āĻ āĻā§āĻĄā§āĻ° āĻāĻāĻāĻŋ āĻ
āĻāĻļ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
patches = {}
patches[0] = (0x00, 0xbf, 0x01, 0x48, 0x00, 0x68, 0x02, 0xe0)
patches[1] = (0x00, 0xbf, 0x01, 0x49, 0x09, 0x68, 0x02, 0xe0)
patches[2] = (0x00, 0xbf, 0x01, 0x4a, 0x12, 0x68, 0x02, 0xe0)
patches[3] = (0x00, 0xbf, 0x01, 0x4b, 0x1b, 0x68, 0x02, 0xe0)
patches[4] = (0x00, 0xbf, 0x01, 0x4c, 0x24, 0x68, 0x02, 0xe0)
patches[5] = (0x00, 0xbf, 0x01, 0x4d, 0x2d, 0x68, 0x02, 0xe0)
patches[8] = (0x00, 0xbf, 0xdf, 0xf8, 0x06, 0x80, 0xd8, 0xf8, 0x00, 0x80, 0x01, 0xe0)
patches[9] = (0x00, 0xbf, 0xdf, 0xf8, 0x06, 0x90, 0xd9, 0xf8, 0x00, 0x90, 0x01, 0xe0)
patches[10] = (0x00, 0xbf, 0xdf, 0xf8, 0x06, 0xa0, 0xda, 0xf8, 0x00, 0xa0, 0x01, 0xe0)
patches[11] = (0x00, 0xbf, 0xdf, 0xf8, 0x06, 0xb0, 0xdb, 0xf8, 0x00, 0xb0, 0x01, 0xe0)
ea = here()
if (get_wide_word(ea) == 0xb082 #SUB SP, SP, #8
and get_wide_word(ea + 2) == 0xb503): #PUSH {R0,R1,LR}
if get_operand_type(ea + 4, 0) == 7:
pop = get_bytes(ea + 12, 4, 0)
if pop[1] == 'xbc':
register = -1
r = get_wide_byte(ea + 12)
for i in range(8):
if r == (1 << i):
register = i
break
if register == -1:
print "Unable to detect register"
else:
address = get_wide_dword(ea + 8) + ea + 8
for b in patches[register]:
patch_byte(ea, b)
ea += 1
if ea % 4 != 0:
ea += 2
patch_dword(ea, address)
elif pop[:3] == 'x5dxf8x04':
register = ord(pop[3]) >> 4
if register in patches:
address = get_wide_dword(ea + 8) + ea + 8
for b in patches[register]:
patch_byte(ea, b)
ea += 1
patch_dword(ea, address)
else:
print "POP instruction not found"
else:
print "Wrong operand type on +4:", get_operand_type(ea + 4, 0)
else:
print "Unable to detect first instructions"
āĻāĻŽāĻ°āĻž āĻ¯ā§ āĻāĻžāĻ āĻžāĻŽā§āĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ āĻ¤āĻžāĻ° āĻļā§āĻ°ā§āĻ¤ā§ āĻāĻžāĻ°ā§āĻ¸āĻžāĻ° āĻ°āĻžāĻāĻŋ - 0xB4B2 - āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻāĻŋ āĻāĻžāĻ˛āĻžāĻ¨:
āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻāĻ˛ā§āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻžāĻ āĻžāĻŽā§āĻ° āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ, āĻā§āĻĄāĻāĻŋāĻ¤ā§ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤āĻā§āĻ˛āĻŋāĻ āĻ°āĻ¯āĻŧā§āĻā§:
āĻāĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻ¯ā§āĻŽāĻ¨, BLX āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļā§āĻ° āĻĒāĻ°ā§ āĻāĻāĻāĻŋ āĻ
āĻĢāĻ¸ā§āĻ āĻāĻā§:
āĻāĻŽāĻ°āĻž āĻ
āĻĢāĻ¸ā§āĻāĻāĻŋ āĻāĻ˛āĻāĻ° āĻĨā§āĻā§ āĻ āĻŋāĻāĻžāĻ¨āĻžāĻ¯āĻŧ āĻ¨āĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻ, āĻāĻāĻŋ āĻāĻ˛āĻāĻ°-āĻ āĻ¯ā§āĻ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻ¯āĻžāĻāĨ¤ 0x72044 + 0xC = 0x72050āĨ¤ āĻāĻ āĻ¨āĻāĻļāĻž āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻŦā§āĻļ āĻ¸āĻšāĻ:
def put_unconditional_branch(source, destination):
offset = (destination - source - 4) >> 1
if offset > 2097151 or offset < -2097152:
raise RuntimeError("Invalid offset")
if offset > 1023 or offset < -1024:
instruction1 = 0xf000 | ((offset >> 11) & 0x7ff)
instruction2 = 0xb800 | (offset & 0x7ff)
patch_word(source, instruction1)
patch_word(source + 2, instruction2)
else:
instruction = 0xe000 | (offset & 0x7ff)
patch_word(source, instruction)
ea = here()
if get_wide_word(ea) == 0xb503: #PUSH {R0,R1,LR}
ea1 = ea + 6
if get_wide_word(ea + 2) == 0xbf00: #NOP
ea1 += 2
offset = get_wide_dword(ea1)
put_unconditional_branch(ea, (ea1 + offset) & 0xffffffff)
else:
print "Unable to detect first instruction"
āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ā§āĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛:
āĻāĻāĻŦāĻžāĻ° āĻĢāĻžāĻāĻļāĻ¨ā§ āĻ¸āĻŦāĻāĻŋāĻā§ āĻĒā§āĻ¯āĻžāĻ āĻšāĻ¯āĻŧā§ āĻā§āĻ˛ā§, āĻāĻĒāĻ¨āĻŋ IDA āĻā§ āĻāĻ° āĻāĻ¸āĻ˛ āĻļā§āĻ°ā§āĻ¤ā§ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĢāĻžāĻāĻļāĻ¨ āĻā§āĻĄāĻā§ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻŦā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻšā§āĻā§āĻ¸āĻ°ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĄāĻŋāĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻĄāĻŋāĻā§āĻĄāĻŋāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻ
āĻāĻŽāĻ°āĻž āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ¤ā§ āĻŽā§āĻļāĻŋāĻ¨ āĻā§āĻĄā§āĻ° āĻ āĻ¸ā§āĻĒāĻˇā§āĻāĻ¤āĻž āĻŽā§āĻāĻžāĻŦā§āĻ˛āĻž āĻāĻ°āĻ¤ā§ āĻļāĻŋāĻā§āĻāĻŋ libsgmainso-6.4.36.so UC āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ° āĻĨā§āĻā§ āĻāĻŦāĻ āĻĢāĻžāĻāĻļāĻ¨ āĻā§āĻĄ āĻĒā§āĻ¯āĻŧā§āĻāĻŋ JNI_āĻ āĻ¨āĻ˛ā§āĻĄ.
int __fastcall real_JNI_OnLoad(JavaVM *vm)
{
int result; // r0
jclass clazz; // r0 MAPDST
int v4; // r0
JNIEnv *env; // r4
int v6; // [sp-40h] [bp-5Ch]
int v7; // [sp+Ch] [bp-10h]
v7 = *(_DWORD *)off_8AC00;
if ( !vm )
goto LABEL_39;
sub_7C4F4();
env = (JNIEnv *)sub_7C5B0(0);
if ( !env )
goto LABEL_39;
v4 = sub_72CCC();
sub_73634(v4);
sub_73E24(&unk_83EA6, &v6, 49);
clazz = (jclass)((int (__fastcall *)(JNIEnv *, int *))(*env)->FindClass)(env, &v6);
if ( clazz
&& (sub_9EE4(),
sub_71D68(env),
sub_E7DC(env) >= 0
&& sub_69D68(env) >= 0
&& sub_197B4(env, clazz) >= 0
&& sub_E240(env, clazz) >= 0
&& sub_B8B0(env, clazz) >= 0
&& sub_5F0F4(env, clazz) >= 0
&& sub_70640(env, clazz) >= 0
&& sub_11F3C(env) >= 0
&& sub_21C3C(env, clazz) >= 0
&& sub_2148C(env, clazz) >= 0
&& sub_210E0(env, clazz) >= 0
&& sub_41B58(env, clazz) >= 0
&& sub_27920(env, clazz) >= 0
&& sub_293E8(env, clazz) >= 0
&& sub_208F4(env, clazz) >= 0) )
{
result = (sub_B7B0(env, clazz) >> 31) | 0x10004;
}
else
{
LABEL_39:
result = -1;
}
return result;
}
āĻāĻ¸ā§āĻ¨ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻ˛āĻžāĻāĻ¨āĻā§āĻ˛āĻŋ āĻāĻ¨āĻŋāĻˇā§āĻ āĻāĻžāĻŦā§ āĻĻā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ:
sub_73E24(&unk_83EA6, &v6, 49);
clazz = (jclass)((int (__fastcall *)(JNIEnv *, int *))(*env)->FindClass)(env, &v6);
āĻāĻžāĻ°ā§āĻ¯āĻ°āĻ¤ sub_73E24 āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻ¨āĻžāĻŽ āĻ¸ā§āĻĒāĻˇā§āĻāĻāĻžāĻŦā§ āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻšāĻā§āĻā§āĨ¤ āĻāĻ āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§, āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻĄā§āĻāĻžāĻ° āĻŽāĻ¤ā§ āĻĄā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ°, āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻŦāĻžāĻĢāĻžāĻ° āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ¸āĻāĻā§āĻ¯āĻž āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ¸ā§āĻĒāĻˇā§āĻāĻ¤āĻ, āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻŦāĻžāĻĢāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻ˛āĻžāĻāĻ¨ āĻĨāĻžāĻāĻŦā§, āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ā§ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻĢāĻžāĻāĻ¨ā§āĻĄāĻā§āĻ˛āĻžāĻ¸, āĻ¯āĻž āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻ¨āĻžāĻŽ āĻ¨ā§āĻ¯āĻŧāĨ¤ āĻ āĻ¤āĻāĻŦ, āĻ¸āĻāĻā§āĻ¯āĻžāĻāĻŋ āĻŦāĻžāĻĢāĻžāĻ°ā§āĻ° āĻāĻāĻžāĻ° āĻŦāĻž āĻ˛āĻžāĻāĻ¨ā§āĻ° āĻĻā§āĻ°ā§āĻā§āĻ¯āĨ¤ āĻāĻ¸ā§āĻ¨ āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻ¨āĻžāĻŽāĻāĻŋ āĻŦā§āĻāĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋ, āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ°āĻā§ āĻŦāĻ˛āĻž āĻāĻāĻŋāĻ¤ āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻ¸āĻ āĻŋāĻ āĻĒāĻĨā§ āĻ¯āĻžāĻā§āĻāĻŋ āĻāĻŋāĻ¨āĻžāĨ¤ āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻŋ āĻāĻāĻā§ āĻ¤āĻž āĻāĻ¨āĻŋāĻˇā§āĻ āĻāĻžāĻŦā§ āĻĻā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ sub_73E24.
int __fastcall sub_73E56(unsigned __int8 *in, unsigned __int8 *out, size_t size)
{
int v4; // r6
int v7; // r11
int v8; // r9
int v9; // r4
size_t v10; // r5
int v11; // r0
struc_1 v13; // [sp+0h] [bp-30h]
int v14; // [sp+1Ch] [bp-14h]
int v15; // [sp+20h] [bp-10h]
v4 = 0;
v15 = *(_DWORD *)off_8AC00;
v14 = 0;
v7 = sub_7AF78(17);
v8 = sub_7AF78(size);
if ( !v7 )
{
v9 = 0;
goto LABEL_12;
}
(*(void (__fastcall **)(int, const char *, int))(v7 + 12))(v7, "DcO/lcK+h?m3c*q@", 16);
if ( !v8 )
{
LABEL_9:
v4 = 0;
goto LABEL_10;
}
v4 = 0;
if ( !in )
{
LABEL_10:
v9 = 0;
goto LABEL_11;
}
v9 = 0;
if ( out )
{
memset(out, 0, size);
v10 = size - 1;
(*(void (__fastcall **)(int, unsigned __int8 *, size_t))(v8 + 12))(v8, in, v10);
memset(&v13, 0, 0x14u);
v13.field_4 = 3;
v13.field_10 = v7;
v13.field_14 = v8;
v11 = sub_6115C(&v13, &v14);
v9 = v11;
if ( v11 )
{
if ( *(_DWORD *)(v11 + 4) == v10 )
{
qmemcpy(out, *(const void **)v11, v10);
v4 = *(_DWORD *)(v9 + 4);
}
else
{
v4 = 0;
}
goto LABEL_11;
}
goto LABEL_9;
}
LABEL_11:
sub_7B148(v7);
LABEL_12:
if ( v8 )
sub_7B148(v8);
if ( v9 )
sub_7B148(v9);
return v4;
}
āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž sub_7AF78 āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻāĻžāĻ°ā§āĻ° āĻŦāĻžāĻāĻ āĻ ā§āĻ¯āĻžāĻ°ā§āĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻ¨ā§āĻā§āĻāĻ¨āĻžāĻ°ā§āĻ° āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ (āĻāĻŽāĻ°āĻž āĻāĻ āĻĒāĻžāĻ¤ā§āĻ°ā§ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤āĻāĻžāĻŦā§ āĻĨāĻžāĻāĻŦ āĻ¨āĻž)āĨ¤ āĻāĻāĻžāĻ¨ā§ āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻĻā§āĻāĻŋ āĻĒāĻžāĻ¤ā§āĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§: āĻāĻāĻāĻŋ āĻ˛āĻžāĻāĻ¨ āĻ§āĻžāĻ°āĻŖ āĻāĻ°ā§ "DcO/lcK+h?m3c*q@" (āĻāĻāĻŋ āĻ āĻ¨ā§āĻŽāĻžāĻ¨ āĻāĻ°āĻž āĻ¸āĻšāĻ āĻ¯ā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§), āĻ āĻ¨ā§āĻ¯āĻāĻŋāĻ¤ā§ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻĄā§āĻāĻž āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻ° āĻĒāĻ°ā§, āĻāĻāĻ¯āĻŧ āĻŦāĻ¸ā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻžāĻ āĻžāĻŽā§āĻ¤ā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž āĻĢāĻžāĻāĻļāĻ¨ā§ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻšāĻ¯āĻŧ sub_6115C. āĻāĻ˛ā§āĻ¨ āĻāĻ āĻāĻžāĻ āĻžāĻŽā§āĻ° āĻŽāĻžāĻ¨ 3 āĻ¸āĻš āĻāĻāĻāĻŋ āĻā§āĻˇā§āĻ¤ā§āĻ° āĻāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻāĻ°āĻž āĻ¯āĻžāĻāĨ¤ āĻĻā§āĻāĻž āĻ¯āĻžāĻ āĻāĻ āĻāĻžāĻ āĻžāĻŽā§āĻ° āĻĒāĻ°ā§ āĻā§ āĻšāĻ¯āĻŧāĨ¤
int __fastcall sub_611B4(struc_1 *a1, _DWORD *a2)
{
int v3; // lr
unsigned int v4; // r1
int v5; // r0
int v6; // r1
int result; // r0
int v8; // r0
*a2 = 820000;
if ( a1 )
{
v3 = a1->field_14;
if ( v3 )
{
v4 = a1->field_4;
if ( v4 < 0x19 )
{
switch ( v4 )
{
case 0u:
v8 = sub_6419C(a1->field_0, a1->field_10, v3);
goto LABEL_17;
case 3u:
v8 = sub_6364C(a1->field_0, a1->field_10, v3);
goto LABEL_17;
case 0x10u:
case 0x11u:
case 0x12u:
v8 = sub_612F4(
a1->field_0,
v4,
*(_QWORD *)&a1->field_8,
*(_QWORD *)&a1->field_8 >> 32,
a1->field_10,
v3,
a2);
goto LABEL_17;
case 0x14u:
v8 = sub_63A28(a1->field_0, v3);
goto LABEL_17;
case 0x15u:
sub_61A60(a1->field_0, v3, a2);
return result;
case 0x16u:
v8 = sub_62440(a1->field_14);
goto LABEL_17;
case 0x17u:
v8 = sub_6226C(a1->field_10, v3);
goto LABEL_17;
case 0x18u:
v8 = sub_63530(a1->field_14);
LABEL_17:
v6 = 0;
if ( v8 )
{
*a2 = 0;
v6 = v8;
}
return v6;
default:
LOWORD(v5) = 28032;
goto LABEL_5;
}
}
}
}
LOWORD(v5) = -27504;
LABEL_5:
HIWORD(v5) = 13;
v6 = 0;
*a2 = v5;
return v6;
}
āĻ¸ā§āĻāĻ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻšāĻ˛ āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ°āĻžāĻāĻāĻžāĻ° āĻĢāĻŋāĻ˛ā§āĻĄ āĻ¯āĻž āĻāĻā§ 3 āĻŽāĻžāĻ¨ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻā§āĻ¸ 3 āĻĻā§āĻā§āĻ¨: āĻĢāĻžāĻāĻļāĻ¨ā§ sub_6364C āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§ āĻĢāĻžāĻāĻļāĻ¨ā§ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻāĻžāĻ āĻžāĻŽā§ āĻĨā§āĻā§ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯ā§āĻŽāĻ¨ āĻā§ āĻāĻŦāĻ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻĄā§āĻāĻžāĨ¤ āĻā§āĻŦ āĻāĻžāĻ āĻĨā§āĻā§ āĻĻā§āĻāĻ˛ā§ sub_6364C, āĻāĻĒāĻ¨āĻŋ āĻāĻāĻŋāĻ¤ā§ RC4 āĻ ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽ āĻāĻŋāĻ¨āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻā§ āĻāĻā§. āĻāĻ¸ā§āĻ¨ āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻ¨āĻžāĻŽ āĻŦā§āĻāĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋāĨ¤ āĻāĻāĻžāĻ¨ā§ āĻ¯āĻž āĻāĻā§āĻā§: com/taobao/wireless/security/adapter/JNICLlibrary. āĻĻāĻžāĻ°ā§āĻŖ! āĻāĻŽāĻ°āĻž āĻ¸āĻ āĻŋāĻ āĻĒāĻĨā§ āĻāĻāĻŋāĨ¤
āĻāĻĻā§āĻļ āĻāĻžāĻ
āĻāĻāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻā§āĻ¯āĻžāĻ˛ā§āĻā§āĻ āĻā§āĻāĻā§ āĻŦā§āĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ°ā§āĻāĻŋāĻ¸ā§āĻāĻžāĻ° āĻ¨ā§āĻāĻŋāĻāĻ¸, āĻ¯āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻĢāĻžāĻāĻļāĻ¨ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°āĻŦā§ doCommandNative. āĻāĻ° āĻĨā§āĻā§ āĻŦāĻ˛āĻž āĻĢāĻžāĻāĻļāĻ¨ āĻ¤āĻžāĻāĻžāĻ¨ JNI_āĻ āĻ¨āĻ˛ā§āĻĄ, āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻāĻāĻŋ āĻā§āĻāĻā§ āĻĒāĻžāĻ sub_B7B0:
int __fastcall sub_B7F6(JNIEnv *env, jclass clazz)
{
char signature[41]; // [sp+7h] [bp-55h]
char name[16]; // [sp+30h] [bp-2Ch]
JNINativeMethod method; // [sp+40h] [bp-1Ch]
int v8; // [sp+4Ch] [bp-10h]
v8 = *(_DWORD *)off_8AC00;
decryptString((unsigned __int8 *)&unk_83ED9, (unsigned __int8 *)name, 0x10u);// doCommandNative
decryptString((unsigned __int8 *)&unk_83EEA, (unsigned __int8 *)signature, 0x29u);// (I[Ljava/lang/Object;)Ljava/lang/Object;
method.name = name;
method.signature = signature;
method.fnPtr = sub_B69C;
return ((int (__fastcall *)(JNIEnv *, jclass, JNINativeMethod *, int))(*env)->RegisterNatives)(env, clazz, &method, 1) >> 31;
}
āĻāĻŦāĻ āĻĒā§āĻ°āĻā§āĻ¤āĻĒāĻā§āĻˇā§, āĻ¨āĻžāĻŽ āĻ¸āĻš āĻāĻāĻāĻŋ āĻĻā§āĻļā§āĻ¯āĻŧ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻāĻžāĻ¨ā§ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŋāĻ¤ āĻšāĻ¯āĻŧ doCommandNative. āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž āĻ¤āĻžāĻ° āĻ āĻŋāĻāĻžāĻ¨āĻž āĻāĻžāĻ¨āĻŋāĨ¤ āĻĻā§āĻāĻž āĻ¯āĻžāĻ āĻ¸ā§ āĻāĻŋ āĻāĻ°ā§āĨ¤
int __fastcall doCommandNative(JNIEnv *env, jobject obj, int command, jarray args)
{
int v5; // r5
struc_2 *a5; // r6
int v9; // r1
int v11; // [sp+Ch] [bp-14h]
int v12; // [sp+10h] [bp-10h]
v5 = 0;
v12 = *(_DWORD *)off_8AC00;
v11 = 0;
a5 = (struc_2 *)malloc(0x14u);
if ( a5 )
{
a5->field_0 = 0;
a5->field_4 = 0;
a5->field_8 = 0;
a5->field_C = 0;
v9 = command % 10000 / 100;
a5->field_0 = command / 10000;
a5->field_4 = v9;
a5->field_8 = command % 100;
a5->field_C = env;
a5->field_10 = args;
v5 = sub_9D60(command / 10000, v9, command % 100, 1, (int)a5, &v11);
}
free(a5);
if ( !v5 && v11 )
sub_7CF34(env, v11, &byte_83ED7);
return v5;
}
āĻ¨āĻžāĻŽ āĻĻā§āĻā§ āĻāĻĒāĻ¨āĻŋ āĻ āĻ¨ā§āĻŽāĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ¯ā§ āĻāĻāĻžāĻ¨ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻā§āĻ°āĻŋ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻ°āĻž āĻ¨ā§āĻāĻŋāĻ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ¤ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻŽāĻ°āĻž āĻĢāĻžāĻāĻļāĻ¨ āĻ¨āĻŽā§āĻŦāĻ° 10601 āĻāĻā§āĻ°āĻšā§.
āĻāĻĒāĻ¨āĻŋ āĻā§āĻĄ āĻĨā§āĻā§ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ¯ā§ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ¨āĻŽā§āĻŦāĻ° āĻ¤āĻŋāĻ¨āĻāĻŋ āĻ¸āĻāĻā§āĻ¯āĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§: āĻāĻŽāĻžāĻ¨ā§āĻĄ/10000, āĻāĻŽāĻžāĻ¨ā§āĻĄ % 10000 / 100 и āĻāĻŽāĻžāĻ¨ā§āĻĄ % 10, āĻ āĻ°ā§āĻĨāĻžā§, āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, 1, 6 āĻāĻŦāĻ 1. āĻāĻ āĻ¤āĻŋāĻ¨āĻāĻŋ āĻ¸āĻāĻā§āĻ¯āĻž, āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻ JNIEnv āĻāĻŦāĻ āĻĢāĻžāĻāĻļāĻ¨ā§ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻāĻāĻāĻŋ āĻāĻžāĻ āĻžāĻŽā§āĻ¤ā§ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ¤āĻŋāĻ¨āĻāĻŋ āĻ¸āĻāĻā§āĻ¯āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ (āĻāĻā§āĻ˛āĻŋāĻā§ N1, N2 āĻāĻŦāĻ N3 āĻŦā§āĻāĻžāĻ), āĻāĻāĻāĻŋ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻā§āĻ°āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻāĻžāĻ° āĻŽāĻ¤ā§ āĻāĻŋāĻā§:
āĻāĻžāĻāĻāĻŋ āĻāĻ¤āĻŋāĻļā§āĻ˛āĻāĻžāĻŦā§ āĻĒā§āĻ°ā§āĻŖ āĻšāĻ¯āĻŧ JNI_āĻ
āĻ¨āĻ˛ā§āĻĄ.
āĻ¤āĻŋāĻ¨āĻāĻŋ āĻ¸āĻāĻā§āĻ¯āĻž āĻāĻžāĻā§āĻ° āĻĒāĻĨāĻāĻŋāĻā§ āĻāĻ¨āĻā§āĻĄ āĻāĻ°ā§āĨ¤ āĻāĻžāĻā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒāĻžāĻ¤āĻžāĻ¯āĻŧ āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻĒāĻāĻĄ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻā§āĻāĻŋ āĻĒā§āĻ¯āĻžāĻ°ā§āĻ¨ā§āĻ āĻ¨ā§āĻĄā§ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻāĻžāĻā§ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻā§āĻĄā§ āĻāĻžāĻ¯āĻŧāĻāĻžāĻāĻŋ āĻā§āĻāĻā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻāĻ āĻŋāĻ¨ āĻ¨āĻ¯āĻŧ āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻŋ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻžāĻ āĻžāĻŽā§ āĻŦā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ (āĻāĻŽāĻ°āĻž āĻ¸ā§āĻā§āĻ˛āĻŋ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻŋ āĻ¨āĻž āĻ¯āĻžāĻ¤ā§ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻŦāĻĄāĻŧ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻĢā§āĻ˛ā§ āĻ¨āĻž āĻ¯āĻžāĻ¯āĻŧ)āĨ¤
āĻāĻ°āĻ āĻŦāĻŋāĻā§āĻ°āĻžāĻ¨ā§āĻ¤āĻŋ
āĻāĻŽāĻ°āĻž āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻ āĻŋāĻāĻžāĻ¨āĻž āĻĒā§āĻ¯āĻŧā§āĻāĻŋ āĻ¯āĻž āĻā§āĻ°ā§āĻ¯āĻžāĻĢāĻŋāĻ āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻŦā§: 0x5F1ACāĨ¤ āĻ¤āĻŦā§ āĻāĻ¨āĻ¨ā§āĻĻ āĻāĻ°āĻž āĻā§āĻŦ āĻ¤āĻžāĻĄāĻŧāĻžāĻ¤āĻžāĻĄāĻŧāĻŋ: UC āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§āĻ° āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ°ā§āĻāĻāĻŋ āĻāĻŽāĻ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°ā§āĻā§āĨ¤
āĻāĻžāĻāĻž āĻā§āĻĄā§ āĻāĻ āĻŋāĻ¤ āĻ
ā§āĻ¯āĻžāĻ°ā§ āĻĨā§āĻā§ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻĒāĻžāĻāĻ¯āĻŧāĻžāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻ°āĻž āĻĒāĻžāĻ
0x4D070 āĻ āĻŋāĻāĻžāĻ¨āĻžāĻ¯āĻŧ āĻĢāĻžāĻāĻļāĻ¨ā§āĨ¤ āĻāĻŦāĻ āĻāĻāĻžāĻ¨ā§ āĻ
āĻ¨ā§āĻ¯ āĻ§āĻ°āĻ¨ā§āĻ° āĻā§āĻĄ āĻ
āĻ¸ā§āĻĒāĻˇā§āĻāĻ¤āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻā§āĨ¤
āĻāĻŽāĻ°āĻž R7 āĻāĻŦāĻ R4 āĻ āĻĻā§āĻāĻŋ āĻ¸ā§āĻāĻ āĻ°āĻžāĻāĻŋ:
āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻĨāĻŽ āĻ¸ā§āĻāĻāĻāĻŋ R11 āĻ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻŋ:
āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻĒā§āĻ¤ā§, āĻāĻāĻāĻŋ āĻ¸ā§āĻāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨:
āĻĒā§āĻ°āĻĨāĻŽ āĻ āĻŋāĻāĻžāĻ¨āĻžāĻ¯āĻŧ āĻ¯āĻžāĻāĻ¯āĻŧāĻžāĻ° āĻĒāĻ°ā§, āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻ¸ā§āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž R4 āĻ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻā§āĻŦāĻŋāĻ˛ā§ 230āĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻāĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§? āĻāĻĒāĻ¨āĻŋ IDA āĻā§ āĻŦāĻ˛āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ¯ā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ¸ā§āĻāĻ: āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž -> āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ -> āĻ¸ā§āĻāĻ āĻŦāĻžāĻāĻ§āĻžāĻ°āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°ā§āĻ¨ā§ˇ
āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻā§āĻĄ āĻā§āĻ¤āĻŋāĻāĻ°. āĻāĻŋāĻ¨ā§āĻ¤ā§, āĻāĻ° āĻāĻā§āĻāĻ˛ā§āĻ° āĻŽāĻ§ā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻĒāĻ¨āĻžāĻ° āĻĒāĻĨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§, āĻāĻĒāĻ¨āĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ā§ āĻāĻāĻāĻŋ āĻāĻ˛ āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ sub_6115C:
āĻāĻāĻāĻŋ āĻ¸ā§āĻāĻ āĻāĻŋāĻ˛ āĻ¯ā§āĻāĻžāĻ¨ā§ 3 āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ RC4 āĻ
ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒāĻļāĻ¨ āĻāĻŋāĻ˛āĨ¤ āĻāĻŦāĻ āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻĢāĻžāĻāĻļāĻ¨ā§ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻāĻžāĻ āĻžāĻŽā§āĻāĻŋ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻĨā§āĻā§ āĻĒā§āĻ°ā§āĻŖ āĻšāĻ¯āĻŧ doCommandNative. āĻāĻ¸ā§āĻ¨ āĻāĻŽāĻ°āĻž āĻ¸ā§āĻāĻžāĻ¨ā§ āĻāĻŋ āĻāĻŋāĻ˛ āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻž āĻ¯āĻžāĻ magicInt āĻŽāĻžāĻ¨ āĻĻāĻŋāĻ¯āĻŧā§ 16. āĻāĻŽāĻ°āĻž āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻĻā§āĻāĻŋ - āĻāĻŦāĻ āĻŦā§āĻļ āĻāĻŋāĻā§ āĻā§āĻ°āĻžāĻ¨āĻāĻŋāĻļāĻ¨ā§āĻ° āĻĒāĻ°ā§ āĻāĻŽāĻ°āĻž āĻāĻŽāĻ¨ āĻā§āĻĄ āĻā§āĻāĻā§ āĻĒāĻžāĻ āĻ¯āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ
ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽ āĻ¸āĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤
āĻāĻ AES!
āĻ ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨, āĻ¯āĻž āĻ āĻŦāĻļāĻŋāĻˇā§āĻ āĻĨāĻžāĻā§ āĻ¤āĻž āĻšāĻ˛ āĻāĻ° āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻāĻ°āĻž: āĻŽā§āĻĄ, āĻā§ āĻāĻŦāĻ āĻ¸āĻŽā§āĻāĻŦāĻ¤, āĻĒā§āĻ°āĻžāĻ°āĻŽā§āĻāĻŋāĻ āĻā§āĻā§āĻāĻ° (āĻāĻ° āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ AES āĻ ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽā§āĻ° āĻ āĻĒāĻžāĻ°ā§āĻāĻŋāĻ āĻŽā§āĻĄā§āĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§)āĨ¤ āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻžāĻŽā§ āĻĢāĻžāĻāĻļāĻ¨ āĻāĻ˛ āĻāĻā§ āĻā§āĻĨāĻžāĻ āĻāĻ āĻŋāĻ¤ āĻšāĻ¤ā§ āĻšāĻŦā§ sub_6115C, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻā§āĻĄā§āĻ° āĻāĻ āĻ āĻāĻļāĻāĻŋ āĻŦāĻŋāĻļā§āĻˇāĻāĻžāĻŦā§ āĻ āĻ¸ā§āĻĒāĻˇā§āĻ, āĻ¤āĻžāĻ āĻ§āĻžāĻ°āĻŖāĻžāĻāĻŋ āĻā§āĻĄ āĻĒā§āĻ¯āĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĻā§āĻā§āĻ¤ āĻšāĻ¯āĻŧ āĻ¯āĻžāĻ¤ā§ āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒāĻļāĻ¨ āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻ˛ā§ āĻĄāĻžāĻŽā§āĻĒ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻ¤āĻžāĻ˛āĻŋ
āĻ ā§āĻ¯āĻžāĻ¸ā§āĻŽā§āĻŦāĻ˛āĻŋ āĻ˛ā§āĻ¯āĻžāĻā§āĻā§āĻ¯āĻŧā§āĻā§ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ¯āĻžāĻ āĻā§āĻĄ āĻ¨āĻž āĻ˛ā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻŋ āĻ ā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ°āĻ¯āĻŧā§āĻĄ āĻ¸ā§āĻā§āĻĄāĻŋāĻ āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻ¸ā§āĻāĻžāĻ¨ā§ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻ˛āĻŋāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ¯āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒāĻļāĻ¨ āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻŽāĻ¤ā§ āĻāĻāĻ āĻāĻ¨āĻĒā§āĻ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻā§āĻ°āĻšāĻŖ āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻ˛ā§ āĻ˛āĻŋāĻā§, āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻŽā§āĻĒāĻžāĻāĻ˛āĻžāĻ° āĻ¯ā§ āĻā§āĻĄāĻāĻŋ āĻāĻĒāĻŋ-āĻĒā§āĻ¸ā§āĻ āĻāĻ°āĻŦā§ āĻā§āĻĒāĻ¨ā§āĻ¨
āĻāĻāĻ¸āĻŋ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ° āĻāĻŋāĻŽā§āĻ° āĻāĻŽāĻžāĻĻā§āĻ° āĻŦāĻ¨ā§āĻ§ā§āĻ°āĻžāĻ āĻā§āĻĄ āĻ¯ā§āĻ āĻāĻ°āĻžāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻ° āĻ¯āĻ¤ā§āĻ¨ āĻ¨āĻŋāĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻ¸ā§āĻ¨ āĻāĻŽāĻ°āĻž āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŋ āĻ¯ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻļā§āĻ°ā§āĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻŦāĻ°ā§āĻāĻ¨āĻž āĻā§āĻĄ āĻĨāĻžāĻā§ āĻ¯āĻž āĻ¸āĻšāĻā§āĻ āĻ āĻ¨ā§āĻ¯ āĻ¯ā§āĻā§āĻ¨ āĻĻāĻŋāĻ¯āĻŧā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻā§āĻŦ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ đ āĻ¯āĻžāĻāĻšā§āĻ, āĻāĻžāĻ°ā§āĻā§āĻ āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻļā§āĻ°ā§āĻ¤ā§ āĻā§āĻĄā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻāĻžāĻ¯āĻŧāĻāĻž āĻ¨ā§āĻ āĻ¯āĻž āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻ˛ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§āĨ¤ āĻāĻŽāĻžāĻā§ āĻāĻāĻŋāĻā§ āĻ āĻāĻļā§ āĻŦāĻŋāĻāĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻŦā§āĻļā§ āĻĢāĻžāĻāĻļāĻ¨āĻā§āĻ˛āĻŋ āĻĨā§āĻā§ āĻāĻŦāĻ°ā§āĻāĻ¨āĻž āĻŦā§āĻ˛āĻāĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻŽā§āĻ āĻāĻžāĻ°āĻāĻŋ āĻ āĻāĻļ āĻāĻŋāĻ˛āĨ¤
āĻĒā§āĻ°āĻĨāĻŽ āĻ āĻāĻļ:
āĻāĻāĻ°āĻāĻŽ āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ°ā§, āĻĒā§āĻ°āĻĨāĻŽ āĻāĻžāĻ°āĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻ°ā§āĻāĻŋāĻ¸ā§āĻāĻžāĻ° R0-R3 āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻŦāĻžāĻāĻŋāĻā§āĻ˛āĻŋ, āĻ¯āĻĻāĻŋ āĻĨāĻžāĻā§, āĻ¸ā§āĻā§āĻ¯āĻžāĻā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻ˛āĻāĻ° āĻ°ā§āĻāĻŋāĻ¸ā§āĻāĻžāĻ°ā§ āĻĢāĻŋāĻ°āĻ¤āĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻĨāĻžāĻā§āĨ¤ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤āĻā§āĻ˛āĻŋ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻž āĻĻāĻ°āĻāĻžāĻ° āĻ¯āĻžāĻ¤ā§ āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯āĻāĻ¨ āĻāĻŽāĻ°āĻž āĻāĻ° āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻĄāĻžāĻŽā§āĻĒ āĻāĻ°āĻŋāĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸ā§āĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ°ā§āĻāĻŋāĻ¸ā§āĻāĻžāĻ° āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋāĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ, āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž PUSH.W {R0-R10,LR} āĻāĻ°āĻŋāĨ¤ R7 āĻ āĻāĻŽāĻ°āĻž āĻ¸ā§āĻā§āĻ¯āĻžāĻā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĢāĻžāĻāĻļāĻ¨ā§ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°ā§āĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ° āĻ āĻŋāĻāĻžāĻ¨āĻž āĻĒāĻžāĻāĨ¤
āĻĢāĻžāĻāĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ fopen āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻāĻĒā§āĻ¨ āĻāĻ°āĻž āĻ¯āĻžāĻ /data/local/tmp/aes "ab" āĻŽā§āĻĄā§
āĻ
āĻ°ā§āĻĨāĻžā§ āĻ¯ā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯āĨ¤ R0 āĻ āĻāĻŽāĻ°āĻž āĻĢāĻžāĻāĻ˛ā§āĻ° āĻ¨āĻžāĻŽā§āĻ° āĻ āĻŋāĻāĻžāĻ¨āĻžāĻāĻŋ āĻ˛ā§āĻĄ āĻāĻ°āĻŋ, R1-āĻ - āĻŽā§āĻĄ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§ āĻ˛āĻžāĻāĻ¨ā§āĻ° āĻ āĻŋāĻāĻžāĻ¨āĻžāĨ¤ āĻāĻŦāĻ āĻāĻāĻžāĻ¨ā§ āĻāĻžāĻ°āĻŦā§āĻ āĻā§āĻĄ āĻļā§āĻˇ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻĢāĻžāĻāĻļāĻ¨ā§ āĻāĻ˛ā§ āĻ¯āĻžāĻāĨ¤ āĻāĻāĻŋ āĻāĻžāĻ āĻāĻžāĻ˛āĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻļā§āĻ°ā§āĻ¤ā§ āĻāĻŦāĻ°ā§āĻāĻ¨āĻžāĻā§ āĻŦāĻžāĻāĻĒāĻžāĻ¸ āĻāĻ°ā§ āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻāĻ¸āĻ˛ āĻā§āĻĄā§ āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻŋ āĻāĻŦāĻ āĻāĻŦāĻ°ā§āĻāĻ¨āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻĒā§āĻ¯āĻžāĻā§āĻ° āĻ§āĻžāĻ°āĻžāĻŦāĻžāĻšāĻŋāĻāĻ¤āĻž āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻŋāĨ¤
āĻāĻ˛āĻŋāĻ fopen.
āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¤āĻŋāĻ¨āĻāĻŋ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° AES āĻāĻžāĻāĻĒ āĻāĻā§ āĻā§āĻ¨ int. āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻļā§āĻ°ā§āĻ¤ā§ āĻ°ā§āĻāĻŋāĻ¸ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻā§ āĻ¸ā§āĻā§āĻ¯āĻžāĻā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§āĻāĻŋ, āĻāĻŽāĻ°āĻž āĻ¸āĻšāĻāĻāĻžāĻŦā§ āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻĒāĻžāĻ¸ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ fwrite āĻ¸ā§āĻā§āĻ¯āĻžāĻā§āĻ° āĻāĻĒāĻ° āĻ¤āĻžāĻĻā§āĻ° āĻ āĻŋāĻāĻžāĻ¨āĻž.
āĻāĻ°āĻĒāĻ°ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻ¤āĻŋāĻ¨āĻāĻŋ āĻ¸ā§āĻā§āĻ°āĻžāĻāĻāĻžāĻ° āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯ā§āĻā§āĻ˛āĻŋāĻ¤ā§ āĻĄā§āĻāĻž āĻ¸āĻžāĻāĻ āĻāĻŦāĻ āĻā§, āĻāĻ¨āĻŋāĻļāĻŋāĻ¯āĻŧāĻžāĻ˛āĻžāĻāĻā§āĻļāĻ¨ āĻā§āĻā§āĻāĻ° āĻāĻŦāĻ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻĄā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĄā§āĻāĻžāĻ° āĻāĻāĻāĻŋ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
āĻļā§āĻˇā§, āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻŦāĻ¨ā§āĻ§ āĻāĻ°ā§āĻ¨, āĻ°ā§āĻāĻŋāĻ¸ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ āĻĢāĻžāĻāĻļāĻ¨ā§ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°ā§āĻ¨ AES.
āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻĒā§āĻ¯āĻžāĻ āĻāĻ°āĻž āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻ¸āĻš āĻāĻāĻāĻŋ APK āĻ¸āĻāĻā§āĻ°āĻš āĻāĻ°āĻŋ, āĻāĻ¤ā§ āĻ¸ā§āĻŦāĻžāĻā§āĻˇāĻ° āĻāĻ°āĻŋ, āĻāĻāĻŋāĻā§ āĻĄāĻŋāĻāĻžāĻāĻ¸/āĻāĻŽā§āĻ˛ā§āĻāĻ°ā§ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻžāĻ˛ā§ āĻāĻ°āĻŋāĨ¤ āĻāĻŽāĻ°āĻž āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻāĻŋ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĄāĻžāĻŽā§āĻĒ āĻ¤ā§āĻ°āĻŋ āĻšāĻā§āĻā§, āĻāĻŦāĻ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻĒā§āĻ°āĻā§āĻ° āĻĄā§āĻāĻž āĻ˛ā§āĻāĻž āĻšāĻā§āĻā§āĨ¤ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ° āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻā§āĻ°ā§āĻ¯āĻžāĻĢāĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯āĻ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒāĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¨āĻž, āĻāĻŦāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒāĻļāĻ¨ āĻĒā§āĻ°āĻļā§āĻ¨ā§ āĻĨāĻžāĻāĻž āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻŽāĻ§ā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŋāĻā§ āĻāĻžāĻ°āĻŖā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¤āĻĨā§āĻ¯ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻ¨ā§āĻ, āĻāĻŦāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻā§āĻ°āĻžāĻĢāĻŋāĻ āĻĻā§āĻļā§āĻ¯āĻŽāĻžāĻ¨ āĻšāĻ¯āĻŧ āĻ¨āĻž. UC āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻ¨āĻž āĻšāĻāĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ āĻĒā§āĻā§āĻˇāĻž āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻā§ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ āĻāĻŦāĻ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻāĻŦāĻžāĻ° āĻĒā§āĻ¯āĻžāĻ āĻāĻ°ā§āĻ¨: āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻāĻžāĻ°ā§āĻ¯āĻāĻ˛āĻžāĻĒā§āĻ° onCreate-āĻ āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒāĻļāĻ¨ āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨āĨ¤
const/16 v1, 0x62
new-array v1, v1, [B
fill-array-data v1, :encrypted_data
const/16 v0, 0x1f
invoke-static {v0, v1}, Lcom/uc/browser/core/d/c/g;->j(I[B)[B
move-result-object v1
array-length v2, v1
invoke-static {v2}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
move-result-object v2
const-string v0, "ololo"
invoke-static {v0, v2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
āĻāĻŽāĻ°āĻž āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻŋ, āĻ¸ā§āĻŦāĻžāĻā§āĻˇāĻ° āĻāĻ°āĻŋ, āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻŋ, āĻ˛āĻā§āĻ āĻāĻ°āĻŋāĨ¤ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ NullPointerException āĻĒā§āĻ¯āĻŧā§āĻāĻŋ āĻāĻžāĻ°āĻŖ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻ¨āĻžāĻ˛ āĻĢāĻŋāĻ°ā§ āĻāĻ¸ā§āĻā§āĨ¤
āĻā§āĻĄāĻāĻŋāĻ° āĻāĻ°āĻ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻāĻŦāĻŋāĻˇā§āĻā§āĻ¤ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻ¯āĻž āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻ˛āĻžāĻāĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻŦā§āĻāĻžāĻ¯āĻŧ: "META-INF/" āĻāĻŦāĻ ".RSA"ā§ˇ āĻĻā§āĻā§ āĻŽāĻ¨ā§ āĻšāĻā§āĻā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻ¤āĻžāĻ° āĻļāĻāĻ¸āĻžāĻĒāĻ¤ā§āĻ° āĻ¯āĻžāĻāĻžāĻ āĻāĻ°āĻā§ā§ˇ āĻ āĻĨāĻŦāĻž āĻāĻŽāĻ¨āĻāĻŋ āĻāĻāĻŋ āĻĨā§āĻā§ āĻā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĨ¤ āĻļāĻāĻ¸āĻžāĻĒāĻ¤ā§āĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¯āĻž āĻāĻāĻā§ āĻ¤āĻž āĻāĻŽāĻŋ āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻŽā§āĻāĻžāĻŦā§āĻ˛āĻž āĻāĻ°āĻ¤ā§ āĻāĻžāĻ āĻ¨āĻž, āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž āĻāĻāĻŋāĻā§ āĻ¸āĻ āĻŋāĻ āĻļāĻāĻ¸āĻžāĻĒāĻ¤ā§āĻ°āĻāĻŋ āĻ¸ā§āĻ˛āĻŋāĻĒ āĻāĻ°āĻŦāĨ¤ āĻāĻ¸ā§āĻ¨ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻ˛āĻžāĻāĻ¨āĻāĻŋ āĻĒā§āĻ¯āĻžāĻ āĻāĻ°āĻŋ āĻ¯āĻžāĻ¤ā§ âMETA-INF/â āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻāĻŽāĻ°āĻž âBLABLINF/â āĻĒāĻžāĻ, APK-āĻ āĻ¸ā§āĻ āĻ¨āĻžāĻŽā§āĻ° āĻāĻāĻāĻŋ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻāĻžāĻ āĻŦāĻŋāĻĄāĻŧāĻžāĻ˛āĻŋ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ° āĻ¸āĻžāĻ°ā§āĻāĻŋāĻĢāĻŋāĻā§āĻ āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨āĨ¤
āĻāĻŽāĻ°āĻž āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻŋ, āĻ¸ā§āĻŦāĻžāĻā§āĻˇāĻ° āĻāĻ°āĻŋ, āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻŋ, āĻ˛āĻā§āĻ āĻāĻ°āĻŋāĨ¤ āĻŦāĻŋāĻā§āĻā§ ! āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻāĻžāĻŦāĻŋ āĻāĻā§!
MitM
āĻāĻŽāĻ°āĻž āĻā§ āĻāĻ° āĻ¸āĻŽāĻžāĻ¨ āĻāĻāĻāĻŋ āĻā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻ¨āĻŋāĻļāĻŋāĻ¯āĻŧāĻžāĻ˛āĻžāĻāĻā§āĻļāĻ¨ āĻā§āĻā§āĻāĻ° āĻĒā§āĻ¯āĻŧā§āĻāĻŋāĨ¤ āĻāĻ¸ā§āĻ¨ CBC āĻŽā§āĻĄā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋāĨ¤
āĻāĻŽāĻ°āĻž āĻāĻ°ā§āĻāĻžāĻāĻ āĻāĻāĻāĻ°āĻāĻ˛ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ, MD5 āĻāĻ° āĻŽāĻ¤ā§ āĻāĻŋāĻā§, "extract_unzipsize" āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ¸āĻāĻā§āĻ¯āĻžāĨ¤ āĻāĻŽāĻ°āĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŋ: āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ°ā§āĻ° MD5 āĻāĻāĻ, āĻāĻ¨āĻĒā§āĻ¯āĻžāĻ āĻāĻ°āĻž āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ° āĻāĻāĻžāĻ° āĻāĻāĻāĨ¤ āĻāĻŽāĻ°āĻž āĻāĻ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻāĻŋ āĻĒā§āĻ¯āĻžāĻ āĻāĻ°ā§ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻĻā§āĻāĻ¯āĻŧāĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻāĻŋāĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ¯āĻžāĻ āĻāĻ°āĻž āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻ˛ā§āĻĄ āĻšāĻ¯āĻŧā§āĻā§ āĻ¤āĻž āĻĻā§āĻāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž "PWNED!" āĻĒāĻžāĻ ā§āĻ¯ āĻ¸āĻš āĻāĻāĻāĻŋ āĻāĻ¸āĻāĻŽāĻāĻ¸ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ
āĻāĻŋāĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻŦāĨ¤ āĻāĻŽāĻ°āĻž āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻĻā§āĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻŦ:
āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°āĻāĻŋ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻŦāĻžāĻ° āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ°āĻāĻŋ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§, āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻĻā§āĻ¯āĻŧāĨ¤ āĻĻā§āĻļā§āĻ¯āĻ¤ āĻāĻŋāĻā§
āĻ¸ā§ āĻĒāĻāĻ¨ā§āĻĻ āĻāĻ°ā§ āĻ¨āĻž. āĻāĻ āĻ
āĻ¸ā§āĻĒāĻˇā§āĻ āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖā§āĻ° āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻŋ āĻĒā§āĻ°āĻŽāĻžāĻŖāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§ āĻ¯ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻāĻŋ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ°ā§āĻ° āĻāĻāĻžāĻ°āĻ āĻĒā§āĻ°ā§āĻ°āĻŖ āĻāĻ°ā§:
āĻāĻāĻŋ LEB128 āĻ āĻāĻ¨āĻā§āĻĄ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻĒā§āĻ¯āĻžāĻā§āĻ° āĻĒāĻ°ā§, āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ°āĻāĻŋāĻ° āĻāĻāĻžāĻ° āĻāĻŋāĻā§āĻāĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§, āĻ¤āĻžāĻ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°āĻāĻŋ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°ā§āĻā§ āĻ¯ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ°āĻāĻŋ āĻŦāĻžāĻāĻāĻžāĻāĻžāĻŦā§ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĒā§āĻ°āĻā§āĻˇā§āĻāĻžāĻ° āĻĒāĻ°ā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻā§āĻĄāĻŧā§ āĻĻāĻŋāĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻŽāĻ°āĻž āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ°ā§āĻ° āĻāĻāĻžāĻ° āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯ āĻāĻ°āĻŋ... āĻāĻŦāĻ - āĻŦāĻŋāĻāĻ¯āĻŧ! đ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻāĻŋāĻĄāĻŋāĻāĻ¤ā§ āĻāĻā§āĨ¤
āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻāĻŦāĻ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž
āĻāĻāĻāĻāĻžāĻŦā§, āĻšā§āĻ¯āĻžāĻāĻžāĻ°āĻ°āĻž āĻā§āĻˇāĻ¤āĻŋāĻāĻžāĻ°āĻ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻā§āĻ˛āĻŋ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻŦāĻ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ UC āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§āĻ° āĻ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻā§āĻ˛āĻŋ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§āĻ° āĻĒā§āĻ°āĻ¸āĻā§āĻā§ āĻāĻžāĻ āĻāĻ°āĻŦā§, āĻ¤āĻžāĻ āĻ¤āĻžāĻ°āĻž āĻāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĒāĻžāĻŦā§ā§ˇ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻĢāĻŋāĻļāĻŋāĻ āĻāĻāĻ¨ā§āĻĄā§ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻāĻ°āĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž, āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ āĻāĻŽāĻ˛āĻž āĻāĻžāĻāĻ¨āĻŋāĻ āĻāĻžāĻ āĻŦāĻŋāĻĄāĻŧāĻžāĻ˛āĻŋāĻ° āĻāĻžāĻā§āĻ° āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻ¤ā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸, āĻ˛āĻāĻāĻ¨, āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻāĻŦāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŋāĻ¤ āĻā§āĻāĻŋ āĻ¸āĻšāĨ¤
āĻāĻŽāĻ°āĻž UC Browser āĻāĻ° āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°āĻĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻāĻžāĻ¯ā§āĻ āĻāĻ°ā§āĻāĻŋāĻ˛āĻžāĻŽ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻ¯ā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋ āĻĒā§āĻ¯āĻŧā§āĻāĻŋ āĻ¸ā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¤āĻžāĻĻā§āĻ° āĻ
āĻŦāĻšāĻŋāĻ¤ āĻāĻ°ā§āĻāĻŋ, āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻž āĻāĻŦāĻ āĻāĻ° āĻŦāĻŋāĻĒāĻĻ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻāĻŋ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¤āĻžāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻŋāĻā§ āĻāĻ˛ā§āĻāĻ¨āĻž āĻāĻ°ā§āĻ¨āĻŋāĨ¤ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§, āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°āĻāĻŋ āĻ¤āĻžāĻ° āĻŦāĻŋāĻĒāĻā§āĻāĻ¨āĻ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻāĻŋ āĻ¸āĻ°āĻ˛ āĻĻā§āĻˇā§āĻāĻŋāĻ¤ā§ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻ¤ā§ āĻĨāĻžāĻā§āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻŦāĻžāĻ° āĻāĻŽāĻ°āĻž āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻžāĻ° āĻŦāĻŋāĻŦāĻ°āĻŖ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻ˛ā§, āĻāĻāĻŋ āĻāĻ° āĻāĻā§āĻ° āĻŽāĻ¤ā§ āĻāĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻāĻŋāĻ˛ āĻ¨āĻžāĨ¤ ā§¨ā§ āĻŽāĻžāĻ°ā§āĻ āĻāĻŋāĻ˛
UC āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ° 12.10.9.1193 āĻāĻ° āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĒā§āĻ°āĻāĻžāĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§, āĻ¯āĻž HTTPS āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°ā§āĻā§:
āĻāĻāĻžāĻĄāĻŧāĻžāĻ, "āĻĢāĻŋāĻā§āĻ¸" āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ āĻāĻŦāĻ āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻ˛ā§āĻāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤, āĻāĻāĻāĻŋ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻĒāĻŋāĻĄāĻŋāĻāĻĢ āĻā§āĻ˛āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻžāĻ° āĻĢāĻ˛ā§ "āĻāĻšā§, āĻāĻŋāĻā§ āĻā§āĻ˛ āĻšāĻ¯āĻŧā§āĻā§!" āĻĒāĻžāĻ ā§āĻ¯ āĻ¸āĻš āĻāĻāĻāĻŋ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻāĻ¸ā§āĻā§āĨ¤ āĻāĻāĻāĻŋ āĻĒāĻŋāĻĄāĻŋāĻāĻĢ āĻā§āĻ˛āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻāĻžāĻā§ āĻāĻāĻāĻŋ āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋ, āĻ¤āĻŦā§ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°āĻāĻŋ āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻāĻŋ āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻ¯āĻž Google Play āĻ¨āĻŋāĻ¯āĻŧāĻŽ āĻ˛āĻā§āĻāĻ¨ āĻāĻ°ā§ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻā§āĻŦāĻ˛ āĻā§āĻĄ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°āĻžāĻ° āĻ
āĻŦā§āĻ¯āĻžāĻšāĻ¤ āĻā§āĻˇāĻŽāĻ¤āĻžāĻ° āĻāĻā§āĻāĻŋāĻ¤ āĻĻā§āĻ¯āĻŧāĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com