เจเจพเจฃ เจชเจเจพเจฃ
เจฎเจพเจฐเจ เจฆเฉ เจ
เฉฐเจค เจตเจฟเฉฑเจ เจ
เจธเฉเจ
เจเฉเจ เจธเจฎเจพเจ เจชเจนเจฟเจฒเจพเจ, เจฏเฉเจธเฉ เจฌเฉเจฐเจพเจเจเจผเจฐ เจฆเฉ เจฎเจธเจผเจนเฉเจฐเฉ เจเฉเจคเฉ เจเจ เจธเฉ เจ
เจคเฉ เจฌเจนเฉเจค เจนเจฎเจฒเจพเจตเจฐ เจขเฉฐเจ เจจเจพเจฒ เจตเฉฐเจกเจฟเจ เจเจฟเจ เจธเฉ: เจเจน เจฎเจพเจฒเจตเฉเจ
เจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจเจชเจญเฉเจเจคเจพเจตเจพเจ เจฆเฉ เจกเจฟเจตเจพเจเจธเจพเจ 'เจคเฉ เจธเจฅเจพเจชเจฟเจค เจเฉเจคเจพ เจเจฟเจ เจธเฉ, เจตเจฟเจกเฉเจ เจซเจพเจเจฒเจพเจ เจฆเฉ เจเฉ เจตเจฟเฉฑเจ เจตเฉฑเจ-เจตเฉฑเจ เจธเจพเจเจเจพเจ เจคเฉเจ เจตเฉฐเจกเจฟเจ เจเจฟเจ เจธเฉ (เจ
เจฐเจฅเจพเจค, เจเจชเจญเฉเจเจคเจพ เจธเฉเจเจฆเฉ เจธเจจ เจเจฟ เจเจน เจกเจพเจเจจเจฒเฉเจก เจเจฐ เจฐเจนเฉ เจนเจจ, เจเจฆเจพเจนเจฐเจฃ เจฒเจ, เจเฉฑเจ เจชเฉเจฐเจจ เจตเฉเจกเฉเจ, เจชเจฐ เจเจธ เจฆเฉ เจฌเจเจพเจ เจเจธ เจฌเฉเจฐเจพเจเจเจผเจฐ เจจเจพเจฒ เจเฉฑเจ เจเจชเฉเจเฉ เจชเฉเจฐเจพเจชเจค เจเฉเจคเจพ), เจธเฉเจจเฉเจนเจฟเจเจ เจฆเฉ เจจเจพเจฒ เจกเจฐเจพเจเจฃเฉ เจฌเฉเจจเจฐ เจตเจฐเจคเฉ เจเจฟ เจฌเฉเจฐเจพเจเจเจผเจฐ เจชเฉเจฐเจพเจฃเจพ, เจเจฎเจเจผเฉเจฐ, เจ
เจคเฉ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเฉเจเจ เจเฉเจเจผเจพเจ เจธเจจเฅค VK 'เจคเฉ เจ
เจงเจฟเจเจพเจฐเจค UC เจฌเฉเจฐเจพเจเจเจผเจฐ เจธเจฎเฉเจน เจตเจฟเฉฑเจ เจนเฉ
เจฒเจฟเจเจฃ เจฆเฉ เจธเจฎเฉเจ, เจฏเฉเจธเฉ เจฌเฉเจฐเจพเจเจเจผเจฐ เจเฉเจฒ เจเฉเจเจฒ เจชเจฒเฉ 'เจคเฉ 500 เจคเฉเจ เจตเฉฑเจง เจธเจฅเจพเจชเจจเจพเจตเจพเจ เจนเจจเฅค เจเจน เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ เจนเฉ - เจธเจฟเจฐเจซเจผ Google Chrome เจตเจฟเฉฑเจ เจนเฉเจฐ เจนเฉเฅค เจธเจฎเฉเจเจฟเจเจตเจพเจ เจตเจฟเฉฑเจ เจคเฉเจธเฉเจ เจเฉเจเจฒ เจชเจฒเฉ 'เจคเฉ เจเฉเจ เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจฒเจ เจตเจฟเจเจฟเจเจชเจจ เจ
เจคเฉ เจฐเฉเจกเจพเจเจฐเฉเจเจเจธ เจฌเจพเจฐเฉ เจฌเจนเฉเจค เจธเจพเจฐเฉเจเจ เจธเจผเจฟเจเจพเจเจคเจพเจ เจฆเฉเจ เจธเจเจฆเฉ เจนเฉเฅค เจเจน เจธเจพเจกเฉ เจเฉเจ เจฆเจพ เจเจพเจฐเจจ เจธเฉ: เจ
เจธเฉเจ เจเจน เจฆเฉเจเจฃ เจฆเจพ เจซเฉเจธเจฒเจพ เจเฉเจคเจพ เจเจฟ เจเฉ 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" />
เจเจฆเฉเจ เจเจน เจธเฉเจตเจพ เจธเจผเฉเจฐเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ, เจคเจพเจ เจฌเฉเจฐเจพเจเจเจผเจฐ เจชเฉเจธเจ เจเจฐเจจ เจฒเจ เจฌเฉเจจเจคเฉ เจเจฐเจฆเจพ เจนเฉ
เจเจธ เจฒเจ, เจเจฆเฉเจ เจเฉเจ เจเจชเจญเฉเจเจคเจพ เจธเจฟเฉฑเจงเฉ เจฌเฉเจฐเจพเจเจเจผเจฐ เจตเจฟเฉฑเจ เจเฉฑเจ PDF เจเฉเจฒเฉเจนเจฃเจพ เจเจพเจนเฉเฉฐเจฆเจพ เจนเฉ, เจคเจพเจ เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉเจเจ เจฌเฉเจจเจคเฉเจเจ เจจเฉเฉฐ เจเฉเจฐเฉเจซเจฟเจ เจตเจฟเฉฑเจ เจฆเฉเจเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉ:
เจชเจนเจฟเจฒเจพเจ เจเฉฑเจ POST เจฌเฉเจจเจคเฉ เจนเฉ
PDF เจ
เจคเฉ เจฆเจซเจผเจคเจฐ เจซเจพเจฐเจฎเฉเจเจพเจ เจจเฉเฉฐ เจฆเฉเจเจฃ เจฒเจ เจเฉฑเจ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจตเจพเจฒเจพ เจเฉฑเจ เจเจฐเจเจพเจเจต เจกเจพเจเจจเจฒเฉเจก เจเฉเจคเจพ เจเจฟเจ เจนเฉเฅค เจเจน เจฎเฉฐเจจเจฃเจพ เจฒเจพเจเจผเฉเจเจฒ เจนเฉ เจเจฟ เจชเจนเจฟเจฒเฉ เจฌเฉเจจเจคเฉ เจธเจฟเจธเจเจฎ (เจฒเฉเฉเฉเจเจฆเฉ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจจ เจฒเจ เจเฉฑเจเฉ-เจเฉฑเจ เจเจฐเจเฉเจเฉเจเจเจฐ) เจฌเจพเจฐเฉ เจเจพเจฃเจเจพเจฐเฉ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจเจฐเจฆเฉ เจนเฉ, เจ
เจคเฉ เจเจธเจฆเฉ เจเจตเจพเจฌ เจตเจฟเฉฑเจ เจฌเฉเจฐเจพเจเจเจผเจฐ เจจเฉเฉฐ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจฌเจพเจฐเฉ เจเฉเจ เจเจพเจฃเจเจพเจฐเฉ เจชเฉเจฐเจพเจชเจค เจนเฉเฉฐเจฆเฉ เจนเฉ เจเจฟเจธ เจจเฉเฉฐ เจกเจพเจเจจเจฒเฉเจก เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ: เจชเจคเจพ เจ
เจคเฉ, เจธเฉฐเจญเจต เจคเฉเจฐ 'เจคเฉ , เจเฉเจ เจนเฉเจฐ. เจธเจฎเฉฑเจธเจฟเจ เจเจน เจนเฉ เจเจฟ เจเจน เจฌเฉเจจเจคเฉ เจเจจเจเฉเจฐเจฟเจชเจ เจเฉเจคเฉ เจเจ เจนเฉเฅค
เจเฉเจเฉเฉ เจฆเฉ เจฌเฉเจจเจคเฉ เจเจฐเฉ
เจเจตเจพเจฌ เจเฉเจเฉเจพ
เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจเฉเจฆ เจเจผเจฟเจช เจตเจฟเฉฑเจ เจชเฉเจ เจเฉเจคเฉ เจเจ เจนเฉ เจ เจคเฉ เจเจจเจเฉเจฐเจฟเจชเจเจก เจจเจนเฉเจ เจนเฉเฅค
เจเฉเจฐเฉเจซเจฟเจ เจกเฉเจเฉเจฐเจฟเจชเจธเจผเจจ เจเฉเจก เจฆเฉ เจเฉเจ เจเจฐเฉ
เจเจ เจธเจฐเจตเจฐ เจเจตเจพเจฌ เจจเฉเฉฐ เจธเจฎเจเจฃ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเฉเจเฅค เจเจ เจเจฒเจพเจธ เจเฉเจก เจจเฉเฉฐ เจตเฉเจเฉเจ 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โ, เจเจฆเจพเจนเจฐเจจ เจฒเจ), เจเฉฑเจฅเฉ เจเฉฑเจ เจตเจฟเจงเฉ เจจเฉเฉฐ เจฌเฉเจฒเจพเจเจ เจเจพเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ เจเฉ เจธเจฐเจตเจฐ เจฆเฉ เจเจตเจพเจฌ เจจเฉเฉฐ เจกเฉเจเฉเจฐเจฟเจชเจ เจเจฐเฉเจเจพเฅค
เจเจ เจตเจฟเจงเฉ เจตเฉฑเจฒ เจตเจงเฉเจ เจเฉเจเฉ. เจจเฉเจ เจเจฐเฉ เจเจฟ เจชเจนเจฟเจฒเจพ เจเจฐเจเฉเจฎเฉเจเจ เจเจซเจธเฉเฉฑเจ 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 เจจเฉฐเจฌเจฐ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจเจพเจธ เจฐเจพเจเจเจฐ เจตเจฟเฉฑเจ เจเฉเจฐเจพเจเจธเจซเจฐ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ - เจเจน เจธเจชเฉฑเจธเจผเจ เจคเฉเจฐ 'เจคเฉ เจเจฎเจพเจเจก เจจเฉฐเจฌเจฐ เจนเฉ.
เจชเจฐเจฟเจตเจฐเจคเจจ เจฆเฉ เจ เจเจฒเฉ เจฒเฉเฉ เจคเฉเจ เจฌเจพเจ เจฆ เจธเจพเจจเฉเฉฐ เจเฉฑเจ เจเจฒเจพเจธ เจฎเจฟเจฒเจฆเฉ เจนเฉ เจเฉ เจเฉฐเจเจฐเจซเฉเจธ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจฆเฉ เจนเฉ IRouter เจเฉฐเจชเฉเจจเฉเจเจ เจ เจคเฉ เจขเฉฐเจ 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 เจซเจพเจเจฒ เจจเฉเฉฐ เจธเจนเฉ เจขเฉฐเจ เจจเจพเจฒ เจฒเฉเจก เจเจฐเจจ เจ
เจคเฉ เจเจธเจฆเจพ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจเจฐเจจ เจฒเจ, เจเฉฑเจ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจนเฉเจกเจฐ เจเฉเจฌเจฒ เจเจพเจซเจผเฉ เจนเฉ. เจเจธ เจฒเจ, เจ
เจธเฉเจ เจธเจฟเจฐเจซเจผ เจธเฉเจเจธเจผเจจ เจเฉเจฌเจฒ เจจเฉเฉฐ เจฎเจฟเจเจพเจเจเจฆเฉ เจนเจพเจ, เจนเฉเจกเจฐ เจตเจฟเฉฑเจ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจเฉเจคเจฐเจพเจ เจจเฉเฉฐ เจเจผเฉเจฐเฉ เจเจฐเจฆเฉ เจนเฉเจเฅค
IDA เจตเจฟเฉฑเจ เจซเจพเจเจฒ เจจเฉเฉฐ เจฆเฉเจฌเจพเจฐเจพ เจเฉเจฒเฉเจนเฉเฅค
เจเจพเจตเจพ เจตเจฐเจเฉเจ เจฒ เจฎเจธเจผเฉเจจ เจจเฉเฉฐ เจเจน เจฆเฉฑเจธเจฃ เจฆเฉ เจฆเฉ เจคเจฐเฉเจเฉ เจนเจจ เจเจฟ เจฎเฉเจฒ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจตเจฟเฉฑเจ เจเจพเจตเจพ เจเฉเจก เจตเจฟเฉฑเจ เจเฉเจธเจผเจฟเจค เจเฉฑเจ เจตเจฟเจงเฉ เจจเฉเฉฐ เจฎเฉเจฒ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจเจฟเฉฑเจฅเฉ เจฒเจพเจเฉ เจเฉเจคเจพ เจเจฟเจ เจนเฉเฅค เจธเจญ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจเจธเจจเฉเฉฐ เจเฉฑเจ เจชเฉเจฐเจเจพเจคเฉ เจฆเจพ เจจเจพเจฎ เจฆเฉเจฃเจพ เจนเฉ Java_package_name_ClassName_MethodName.
เจฆเฉเจเจพ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจจเฉเฉฐ เจฒเฉเจก เจเจฐเจจ เจตเฉเจฒเฉ เจเจธเจจเฉเฉฐ เจฐเจเจฟเจธเจเจฐ เจเจฐเจจเจพ เจนเฉ (เจซเฉฐเจเจธเจผเจจ เจตเจฟเฉฑเจ JNI_เจเจจเจฒเฉเจก)
เจเฉฑเจ เจซเฉฐเจเจธเจผเจจ เจเจพเจฒ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจฐเจเจฟเจธเจเจฐ เจจเฉเจเจฟเจต.
เจธเจพเจกเฉ เจเฉเจธ เจตเจฟเฉฑเจ, เจเฉ เจ เจธเฉเจ เจชเจนเจฟเจฒเฉ เจตเจฟเจงเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเจพเจ, เจคเจพเจ เจจเจพเจฎ เจเจธ เจคเจฐเฉเจนเจพเจ เจนเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ: Java_com_taobao_wireless_security_adapter_JNICLlibrary_doCommandNative.
เจจเจฟเจฐเจฏเจพเจค เจเฉเจคเฉ เจซเฉฐเจเจธเจผเจจเจพเจ เจตเจฟเฉฑเจ เจ
เจเจฟเจนเจพ เจเฉเจ เจซเฉฐเจเจธเจผเจจ เจจเจนเฉเจ เจนเฉ, เจเจฟเจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉ เจเจฟ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจ เจเจพเจฒ เจฒเฉฑเจญเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ เจฐเจเจฟเจธเจเจฐ เจจเฉเจเจฟเจต.
เจเจฒเฉ เจซเฉฐเจเจธเจผเจจ เจคเฉ เจเฉฑเจฒเฉเจ JNI_เจเจจเจฒเฉเจก เจ
เจคเฉ เจ
เจธเฉเจ เจเจน เจคเจธเจตเฉเจฐ เจฆเฉเจเจฆเฉ เจนเจพเจ:
เจเฉฑเจฅเฉ เจเฉ เจนเฉ เจฐเจฟเจนเจพ เจนเฉ? เจชเจนเจฟเจฒเฉ เจจเจเจผเจฐ 'เจคเฉ, เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจธเจผเฉเจฐเฉเจเจค เจ
เจคเฉ เจ
เฉฐเจค ARM เจเจฐเจเฉเจเฉเจเจเจฐ เจฒเจ เจเจพเจธ เจนเจจเฅค เจธเจเฉเจ 'เจคเฉ เจชเจนเจฟเจฒเฉ เจนเจฆเจพเจเจค เจฐเจเจฟเจธเจเจฐเจพเจ เจฆเฉ เจธเจฎเฉฑเจเจฐเฉ เจจเฉเฉฐ เจธเจเฉเจฐ เจเจฐเจฆเฉ เจนเฉ เจเฉ เจซเฉฐเจเจธเจผเจจ เจเจชเจฃเฉ เจเฉฐเจฎ (เจเจธ เจเฉเจธ เจตเจฟเฉฑเจ, R0, R1 เจ
เจคเฉ R2) เจตเจฟเฉฑเจ เจตเจฐเจคเฉเจเจพ, เจ
เจคเฉ เจจเจพเจฒ เจนเฉ LR เจฐเจเจฟเจธเจเจฐ เจฆเฉ เจธเจฎเฉฑเจเจฐเฉ, เจเจฟเจธ เจตเจฟเฉฑเจ เจซเฉฐเจเจธเจผเจจ เจคเฉเจ เจตเจพเจชเจธเฉ เจฆเจพ เจชเจคเจพ เจนเฉเฉฐเจฆเจพ เจนเฉเฅค . เจเจเจฐเฉ เจนเจฆเจพเจเจค เจธเฉเจฐเฉฑเจเจฟเจ
เจค เจเฉเจคเฉ เจฐเจเจฟเจธเจเจฐเจพเจ เจจเฉเฉฐ เจฌเจนเจพเจฒ เจเจฐเจฆเฉ เจนเฉ, เจ
เจคเฉ เจตเจพเจชเจธเฉ เจฆเจพ เจชเจคเจพ เจคเฉเจฐเฉฐเจค เจชเฉเจธเฉ เจฐเจเจฟเจธเจเจฐ เจตเจฟเฉฑเจ เจฐเฉฑเจเจฟเจ เจเจพเจเจฆเจพ เจนเฉ - เจเจธ เจคเจฐเฉเจนเจพเจ เจซเฉฐเจเจธเจผเจจ เจคเฉเจ เจตเจพเจชเจธ เจ เจฐเจฟเจนเจพ เจนเฉเฅค เจชเจฐ เจเฉ เจคเฉเจธเฉเจ เจงเจฟเจเจจ เจจเจพเจฒ เจตเฉเจเจฆเฉ เจนเฉ, เจคเจพเจ เจคเฉเจธเฉเจ เจตเฉเจเฉเจเฉ เจเจฟ เจ
เฉฐเจคเจฎ เจจเจฟเจฐเจฆเฉเจธเจผ เจธเจเฉเจ 'เจคเฉ เจธเจเฉเจฐ เจเฉเจคเฉ เจตเจพเจชเจธเฉ เจฆเฉ เจชเจคเฉ เจจเฉเฉฐ เจฌเจฆเจฒเจฆเจพ เจนเฉ. เจเจ เจนเจฟเจธเจพเจฌ เจเจฐเฉเจ เจเจฟ เจเจธ เจคเฉเจ เจฌเจพเจ
เจฆ เจเจฟเจนเฉ เจเจฟเจนเจพ เจนเฉเจตเฉเจเจพ
เจเฉเจก เจเจเจเจผเฉเจเจฟเจเจธเจผเจจ. เจเฉฑเจ เจเจพเจธ เจชเจคเจพ 1xB0 เจจเฉเฉฐ R130 เจตเจฟเฉฑเจ เจฒเฉเจก เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ, เจเจธ เจตเจฟเฉฑเจเฉเจ 5 เจจเฉเฉฐ เจเจเจพเจเจ เจเจพเจเจฆเจพ เจนเฉ, เจซเจฟเจฐ เจเจธเจจเฉเฉฐ R0 เจตเจฟเฉฑเจ เจเฉเจฐเจพเจเจธเจซเจฐ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ เจ
เจคเฉ เจเจธ เจตเจฟเฉฑเจ 0x10 เจเฉเฉเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค เจเจน 0xB13B เจฌเจพเจนเจฐ เจเจพเจฎเฉเจ. เจเจธ เจคเจฐเฉเจนเจพเจ, IDA เจธเฉเจเจฆเจพ เจนเฉ เจเจฟ เจเจเจฐเฉ เจนเจฆเจพเจเจค เจเฉฑเจ เจเจฎ เจซเฉฐเจเจธเจผเจจ เจฐเจฟเจเจฐเจจ เจนเฉ, เจชเจฐ เจ
เจธเจฒ เจตเจฟเฉฑเจ เจเจน เจเจฃเจจเจพ เจเฉเจคเฉ เจชเจคเฉ 0xB13B 'เจคเฉ เจเจพ เจฐเจฟเจนเจพ เจนเฉเฅค
เจเฉฑเจฅเฉ เจเจน เจฏเจพเจฆ เจฐเฉฑเจเจฃ เจฏเฉเจ เจนเฉ เจเจฟ ARM เจชเฉเจฐเฉเจธเฉเจธเจฐเจพเจ เจฆเฉ เจฆเฉ เจฎเฉเจก เจ เจคเฉ เจจเจฟเจฐเจฆเฉเจธเจผเจพเจ เจฆเฉ เจฆเฉ เจธเฉเฉฑเจ เจนเจจ: ARM เจ เจคเฉ เจฅเฉฐเจฌเฅค เจชเจคเฉ เจฆเจพ เจธเจญ เจคเฉเจ เจเฉฑเจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจฌเจฟเฉฑเจ เจชเฉเจฐเฉเจธเฉเจธเจฐ เจจเฉเฉฐ เจฆเฉฑเจธเจฆเจพ เจนเฉ เจเจฟ เจเจฟเจนเฉเจพ เจจเจฟเจฐเจฆเฉเจธเจผ เจธเฉเฉฑเจ เจตเจฐเจคเจฟเจ เจเจพ เจฐเจฟเจนเจพ เจนเฉเฅค เจญเจพเจต, เจชเจคเจพ เจ เจธเจฒ เจตเจฟเฉฑเจ 0xB13A เจนเฉ, เจ เจคเฉ เจเฉฑเจเฉ-เจเฉฑเจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจฌเจฟเฉฑเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจฅเฉฐเจฌ เจฎเฉเจก เจจเฉเฉฐ เจฆเจฐเจธเจพเจเจเจฆเจพ เจนเฉเฅค
เจเจธ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจตเจฟเฉฑเจ เจนเจฐเฉเจ เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจธเจผเฉเจฐเฉเจเจค เจตเจฟเฉฑเจ เจเฉฑเจ เจธเจฎเจพเจจ โเจ
เจกเจพเจชเจเจฐโ เจเฉเฉเจฟเจ เจเจฟเจ เจนเฉ เจ
เจคเฉ
เจเฉเฉเจพ เจเฉเจก. เจ
เจธเฉเจ เจเจนเจจเจพเจ 'เจคเฉ เจนเฉเจฐ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจ เจจเจนเฉเจ เจตเจฟเจเจพเจฐเจพเจเจเฉ - เจธเจพเจจเฉเฉฐ เจธเจฟเจฐเจซ เจฏเจพเจฆ เจนเฉ
เจเจฟ เจฒเจเจญเจ เจธเจพเจฐเฉ เจซเฉฐเจเจธเจผเจจเจพเจ เจฆเฉ เจ
เจธเจฒ เจธเจผเฉเจฐเฉเจเจค เจฅเฉเฉเฉ เจฆเฉเจฐ เจนเฉเฅค
เจเจฟเจเจเจเจฟ เจเฉเจก เจธเจชเฉฑเจธเจผเจ เจคเฉเจฐ 'เจคเฉ 0xB13A 'เจคเฉ เจจเจนเฉเจ เจเจพเจเจฆเจพ เจนเฉ, IDA เจจเฉ เจเฉเจฆ เจเจน เจจเจนเฉเจ เจชเจเจพเจฃเจฟเจ เจเจฟ เจเฉเจก เจเจธ เจธเจฅเจพเจจ 'เจคเฉ เจธเจฅเจฟเจค เจธเฉเฅค เจเจธเฉ เจเจพเจฐเจจ เจเจฐเจเฉ, เจเจน เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจฆเฉ เจเจผเจฟเจเจฆเจพเจคเจฐ เจเฉเจกเจพเจ เจจเฉเฉฐ เจเฉเจก เจตเจเฉเจ เจจเจนเฉเจ เจชเจเจพเจฃเจฆเจพ, เจเฉ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจจเฉเฉฐ เจเฉเจ เจฎเฉเจธเจผเจเจฒ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉเฅค เจ เจธเฉเจ IDA เจจเฉเฉฐ เจฆเฉฑเจธเจฆเฉ เจนเจพเจ เจเจฟ เจเจน เจเฉเจก เจนเฉ, เจ เจคเฉ เจ เจเจฟเจนเจพ เจนเฉเฉฐเจฆเจพ เจนเฉ:
เจธเจพเจฐเจฃเฉ เจธเจชเฉฑเจธเจผเจ เจคเฉเจฐ 'เจคเฉ 0xB144 เจคเฉเจ เจธเจผเฉเจฐเฉ เจนเฉเฉฐเจฆเฉ เจนเฉเฅค sub_494C เจตเจฟเฉฑเจ เจเฉ เจนเฉ?
LR เจฐเจเจฟเจธเจเจฐ เจตเจฟเฉฑเจ เจเจธ เจซเฉฐเจเจธเจผเจจ เจจเฉเฉฐ เจเจพเจฒ เจเจฐเจฆเฉ เจธเจฎเฉเจ, เจธเจพเจจเฉเฉฐ เจชเจนเจฟเจฒเจพเจ เจฆเฉฑเจธเฉ เจเจ เจเฉเจฌเจฒ (0xB144) เจฆเจพ เจชเจคเจพ เจฎเจฟเจฒเจฆเจพ เจนเฉเฅค R0 เจตเจฟเฉฑเจ - เจเจธ เจธเจพเจฐเจฃเฉ เจตเจฟเฉฑเจ เจธเฉเจเจเจพเจเจเฅค เจญเจพเจต, เจฎเฉเฉฑเจฒ เจจเฉเฉฐ เจธเจพเจฐเจฃเฉ เจคเฉเจ เจฒเจฟเจ เจเจพเจเจฆเจพ เจนเฉ, LR เจตเจฟเฉฑเจ เจเฉเฉเจฟเจ เจเจพเจเจฆเจพ เจนเฉ เจ
เจคเฉ เจจเจคเฉเจเจพ เจนเฉเฉฐเจฆเจพ เจนเฉ
เจเจพเจฃ เจฒเจ เจชเจคเจพ. เจเจ เจเจธเจฆเฉ เจเจฃเจจเจพ เจเจฐเจจ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเฉเจ: 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 เจตเจฟเฉฑเจ เจคเจฌเจฆเฉเจฒเฉ เจตเฉเจเฉ:
IDA เจจเฉ เจฆเฉเจฌเจพเจฐเจพ เจเจธ เจเฉเจคเจฐ เจจเฉเฉฐ เจเฉเจก เจตเจเฉเจ เจฎเจพเจจเจคเจพ เจจเจนเฉเจ เจฆเจฟเฉฑเจคเฉเฅค เจ
เจธเฉเจ เจเจธเจฆเฉ เจฎเจฆเจฆ เจเจฐเจฆเฉ เจนเจพเจ เจ
เจคเฉ เจเฉฑเจฅเฉ เจเฉฑเจ เจนเฉเจฐ เจกเจฟเจเจผเจพเจเจจ เจฆเฉเจเจฆเฉ เจนเจพเจ:
BLX เจคเฉเจ เจฌเจพเจ
เจฆ เจฆเฉเจเจ เจนเจฆเจพเจเจคเจพเจ เจเจผเจฟเจเจฆเจพ เจ
เจฐเจฅ เจจเจนเฉเจ เจฐเฉฑเจเจฆเฉเจเจ, เจเจน เจเจฟเจธเฉ เจเจฟเจธเจฎ เจฆเฉ เจตเจฟเจธเจฅเจพเจชเจจ เจตเจฐเจเจพ เจนเฉเฅค เจเจ เจธเจฌ_4964 เจจเฉเฉฐ เจตเฉเจเฉเจ:
เจ
เจคเฉ เจ
เจธเจฒ เจตเจฟเฉฑเจ, เจเฉฑเจฅเฉ LR เจตเจฟเฉฑเจ เจชเจ เจชเจคเฉ 'เจคเฉ เจเฉฑเจ เจกเจตเจฐเจก เจฒเจฟเจ เจเจพเจเจฆเจพ เจนเฉ, เจเจธ เจชเจคเฉ เจตเจฟเฉฑเจ เจเฉเฉเจฟเจ เจเจพเจเจฆเจพ เจนเฉ, เจเจฟเจธ เจคเฉเจ เจฌเจพเจ
เจฆ เจจเจคเฉเจเฉ เจตเจพเจฒเฉ เจชเจคเฉ 'เจคเฉ เจฎเฉเฉฑเจฒ เจฒเจฟเจ เจเจพเจเจฆเจพ เจนเฉ เจ
เจคเฉ เจธเจเฉเจ 'เจคเฉ เจชเจพ เจฆเจฟเฉฑเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค เจจเจพเจฒ เจนเฉ, 4 เจจเฉเฉฐ LR เจตเจฟเฉฑเจ เจเฉเฉเจฟเจ เจเจพเจเจฆเจพ เจนเฉ เจคเจพเจ เจเฉ เจซเฉฐเจเจธเจผเจจ เจคเฉเจ เจตเจพเจชเจธ เจเจเจฃ เจคเฉเจ เจฌเจพเจ
เจฆ, เจเจนเฉ เจเจซเจธเฉเฉฑเจ เจเฉฑเจก เจฆเจฟเฉฑเจคเจพ เจเจพเจตเฉเฅค เจเจฟเจธ เจคเฉเจ เจฌเจพเจ
เจฆ POP {R1} เจเจฎเจพเจเจก เจธเจเฉเจ เจคเฉเจ เจจเจคเฉเจเจพ เจฎเฉเฉฑเจฒ เจฒเฉเจเจฆเฉ เจนเฉเฅค เจเฉ เจคเฉเจธเฉเจ เจฆเฉเจเจฆเฉ เจนเฉ เจเจฟ เจชเจคเฉ 0xB4BA + 0xEA = 0xB5A4 'เจคเฉ เจเฉ เจธเจฅเจฟเจค เจนเฉ, เจคเจพเจ เจคเฉเจธเฉเจ เจเจกเจฐเฉเฉฑเจธ เจเฉเจฌเจฒ เจฆเฉ เจธเจฎเจพเจจ เจเฉเจ เจฆเฉเจเฉเจเฉ:
เจเจธ เจกเจฟเจเจผเจพเจเจจ เจจเฉเฉฐ เจชเฉเจ เจเจฐเจจ เจฒเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจเฉเจก เจคเฉเจ เจฆเฉ เจฎเจพเจชเจฆเฉฐเจก เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเจตเฉเจเฉ: เจเจซเจธเฉเฉฑเจ เจ
เจคเฉ เจฐเจเจฟเจธเจเจฐ เจจเฉฐเจฌเจฐ เจเจฟเจธ เจตเจฟเฉฑเจ เจคเฉเจธเฉเจ เจจเจคเฉเจเจพ เจฆเฉเจฃเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเฉเฅค เจนเจฐเฉเจ เจธเฉฐเจญเจพเจตเจฟเจค เจฐเจเจฟเจธเจเจฐ เจฒเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจชเจนเจฟเจฒเจพเจ เจคเฉเจ เจเฉเจก เจฆเจพ เจเฉฑเจ เจเฉเจเฉเจพ เจคเจฟเจเจฐ เจเจฐเจจเจพ เจนเฉเจตเฉเจเจพเฅค
patches = {}
patches[0] = (0x00, 0xbf, 0x01, 0x48, 0x00, 0x68, 0x02, 0xe0)
patches[1] = (0x00, 0xbf, 0x01, 0x49, 0x09, 0x68, 0x02, 0xe0)
patches[2] = (0x00, 0xbf, 0x01, 0x4a, 0x12, 0x68, 0x02, 0xe0)
patches[3] = (0x00, 0xbf, 0x01, 0x4b, 0x1b, 0x68, 0x02, 0xe0)
patches[4] = (0x00, 0xbf, 0x01, 0x4c, 0x24, 0x68, 0x02, 0xe0)
patches[5] = (0x00, 0xbf, 0x01, 0x4d, 0x2d, 0x68, 0x02, 0xe0)
patches[8] = (0x00, 0xbf, 0xdf, 0xf8, 0x06, 0x80, 0xd8, 0xf8, 0x00, 0x80, 0x01, 0xe0)
patches[9] = (0x00, 0xbf, 0xdf, 0xf8, 0x06, 0x90, 0xd9, 0xf8, 0x00, 0x90, 0x01, 0xe0)
patches[10] = (0x00, 0xbf, 0xdf, 0xf8, 0x06, 0xa0, 0xda, 0xf8, 0x00, 0xa0, 0x01, 0xe0)
patches[11] = (0x00, 0xbf, 0xdf, 0xf8, 0x06, 0xb0, 0xdb, 0xf8, 0x00, 0xb0, 0x01, 0xe0)
ea = here()
if (get_wide_word(ea) == 0xb082 #SUB SP, SP, #8
and get_wide_word(ea + 2) == 0xb503): #PUSH {R0,R1,LR}
if get_operand_type(ea + 4, 0) == 7:
pop = get_bytes(ea + 12, 4, 0)
if pop[1] == 'xbc':
register = -1
r = get_wide_byte(ea + 12)
for i in range(8):
if r == (1 << i):
register = i
break
if register == -1:
print "Unable to detect register"
else:
address = get_wide_dword(ea + 8) + ea + 8
for b in patches[register]:
patch_byte(ea, b)
ea += 1
if ea % 4 != 0:
ea += 2
patch_dword(ea, address)
elif pop[:3] == 'x5dxf8x04':
register = ord(pop[3]) >> 4
if register in patches:
address = get_wide_dword(ea + 8) + ea + 8
for b in patches[register]:
patch_byte(ea, b)
ea += 1
patch_dword(ea, address)
else:
print "POP instruction not found"
else:
print "Wrong operand type on +4:", get_operand_type(ea + 4, 0)
else:
print "Unable to detect first instructions"
เจ เจธเฉเจ เจเจฐเจธเจฐ เจจเฉเฉฐ เจเจธ เจขเจพเจเจเฉ เจฆเฉ เจธเจผเฉเจฐเฉ เจตเจฟเฉฑเจ เจฐเฉฑเจเจฆเฉ เจนเจพเจ เจเจฟเจธ เจจเฉเฉฐ เจ เจธเฉเจ เจฌเจฆเจฒเจฃเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเจพเจ - 0xB4B2 - เจ เจคเฉ เจธเจเฉเจฐเจฟเจชเจ เจจเฉเฉฐ เจเจฒเจพเจ:
เจชเจนเจฟเจฒเจพเจ เจนเฉ เจฆเฉฑเจธเฉ เจเจ เจขเจพเจเจเจฟเจเจ เจคเฉเจ เจเจฒเจพเจตเจพ, เจเฉเจก เจตเจฟเฉฑเจ เจเจน เจตเฉ เจธเจผเจพเจฎเจฒ เจนเจจ:
เจเจฟเจตเฉเจ เจเจฟ เจชเจฟเจเจฒเฉ เจเฉเจธ เจตเจฟเฉฑเจ, BLX เจจเจฟเจฐเจฆเฉเจธเจผ เจฆเฉ เจฌเจพเจ
เจฆ เจเฉฑเจ เจเจซเจธเฉเฉฑเจ เจนเฉ:
เจ
เจธเฉเจ เจเจซเจธเฉเฉฑเจ เจจเฉเฉฐ LR เจคเฉเจ เจชเจคเฉ 'เจคเฉ เจฒเฉเจเจฆเฉ เจนเจพเจ, เจเจธเจจเฉเฉฐ LR เจตเจฟเฉฑเจ เจเฉเฉเจฆเฉ เจนเจพเจ เจ
เจคเฉ เจเฉฑเจฅเฉ เจเจพเจเจฆเฉ เจนเจพเจเฅค 0x72044 + 0xC = 0x72050เฅค เจเจธ เจกเจฟเจเจผเจพเจเจจ เจฒเจ เจธเจเฉเจฐเจฟเจชเจ เจเจพเจซเจผเฉ เจธเจงเจพเจฐเจจ เจนเฉ:
def put_unconditional_branch(source, destination):
offset = (destination - source - 4) >> 1
if offset > 2097151 or offset < -2097152:
raise RuntimeError("Invalid offset")
if offset > 1023 or offset < -1024:
instruction1 = 0xf000 | ((offset >> 11) & 0x7ff)
instruction2 = 0xb800 | (offset & 0x7ff)
patch_word(source, instruction1)
patch_word(source + 2, instruction2)
else:
instruction = 0xe000 | (offset & 0x7ff)
patch_word(source, instruction)
ea = here()
if get_wide_word(ea) == 0xb503: #PUSH {R0,R1,LR}
ea1 = ea + 6
if get_wide_word(ea + 2) == 0xbf00: #NOP
ea1 += 2
offset = get_wide_dword(ea1)
put_unconditional_branch(ea, (ea1 + offset) & 0xffffffff)
else:
print "Unable to detect first instruction"
เจธเจเฉเจฐเจฟเจชเจ เจเจเจเจผเฉเจเจฟเจเจธเจผเจจ เจฆเจพ เจจเจคเฉเจเจพ:
เจเฉฑเจ เจตเจพเจฐ เจซเฉฐเจเจธเจผเจจ เจตเจฟเฉฑเจ เจธเจญ เจเฉเจ เจชเฉเจ เจนเฉ เจเจพเจฃ เจคเฉเจ เจฌเจพเจ
เจฆ, เจคเฉเจธเฉเจ IDA เจจเฉเฉฐ เจเจธเจฆเฉ เจ
เจธเจฒ เจธเจผเฉเจฐเฉเจเจค เจตเฉฑเจฒ เจเจธเจผเจพเจฐเจพ เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค เจเจน เจธเจพเจฐเฉ เจซเฉฐเจเจธเจผเจจ เจเฉเจก เจจเฉเฉฐ เจเจเฉฑเจ เจพ เจเจฐเฉเจเจพ, เจ
เจคเฉ เจเจธ เจจเฉเฉฐ HexRays เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจกเฉเจเฉฐเจชเจพเจเจฒ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค
เจกเฉเจเฉเจกเจฟเฉฐเจ เจธเจคเจฐ
เจ เจธเฉเจ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจตเจฟเฉฑเจ เจฎเจธเจผเฉเจจ เจเฉเจก เจฆเฉ เจเฉเจฌเฉ เจจเจพเจฒ เจจเจเจฟเฉฑเจ เจฃเจพ เจธเจฟเฉฑเจเจฟเจ เจนเฉ libsgmainso-6.4.36.so 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, เจชเจฐ เจเฉเจก เจฆเจพ เจเจน เจนเจฟเฉฑเจธเจพ เจเจพเจธ เจคเฉเจฐ 'เจคเฉ เจเฉฐเจเฉ เจคเจฐเฉเจนเจพเจ เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจนเฉ, เจเจธ เจฒเจ เจเฉเจก เจจเฉเฉฐ เจชเฉเจ เจเจฐเจจ เจฆเจพ เจตเจฟเจเจพเจฐ เจชเฉเจฆเจพ เจนเฉเฉฐเจฆเจพ เจนเฉ เจคเจพเจ เจเฉ เจกเฉเจเฉเจฐเจฟเจชเจธเจผเจจ เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจธเจพเจฐเฉ เจชเฉเจฐเจพเจฎเฉเจเจฐเจพเจ เจจเฉเฉฐ เจเฉฑเจ เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจกเฉฐเจช เจเฉเจคเจพ เจเจพ เจธเจเฉเฅค
เจชเฉเจ
เจ เจธเฉเจเจฌเจฒเฉ เจญเจพเจธเจผเจพ เจตเจฟเฉฑเจ เจธเจพเจฐเฉ เจชเฉเจ เจเฉเจก เจจเฉเฉฐ เจนเฉฑเจฅเฉเจ เจจเจพ เจฒเจฟเจเจฃ เจฒเจ, เจคเฉเจธเฉเจ เจเจเจกเจฐเฉเจเจก เจธเจเฉเจกเฉเจ เจฒเจพเจเจ เจเจฐ เจธเจเจฆเฉ เจนเฉ, เจเฉฑเจฅเฉ เจเฉฑเจ เจซเฉฐเจเจธเจผเจจ เจฒเจฟเจ เจธเจเจฆเฉ เจนเฉ เจเฉ เจธเจพเจกเฉ เจกเฉเจเฉเจฐเจฟเจชเจธเจผเจจ เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจธเจฎเจพเจจ เจเจจเจชเฉเจ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจชเฉเจฐเจพเจชเจค เจเจฐเจฆเจพ เจนเฉ เจ เจคเฉ เจเฉฑเจ เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจฒเจฟเจเจฆเจพ เจนเฉ, เจซเจฟเจฐ เจเฉเจก เจจเฉเฉฐ เจเจพเจชเฉ-เจชเฉเจธเจ เจเจฐเจฆเจพ เจนเฉ เจเฉ เจเฉฐเจชเจพเจเจฒเจฐ เจเจฐเฉเจเจพเฅค เจชเฉเจฆเจพ เจเจฐเฉ.
UC เจฌเฉเจฐเจพเจเจเจผเจฐ เจเฉเจฎ เจฆเฉ เจธเจพเจกเฉ เจฆเฉเจธเจคเจพเจ เจจเฉ เจตเฉ เจเฉเจก เจเฉเฉเจจ เจฆเฉ เจธเจนเฉเจฒเจค เจฆเจพ เจงเจฟเจเจจ เจฐเฉฑเจเจฟเจเฅค เจธเจพเจจเฉเฉฐ เจฏเจพเจฆ เจฐเฉฑเจเฉ เจเจฟ เจนเจฐเฉเจ เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจธเจผเฉเจฐเฉเจเจค เจตเจฟเฉฑเจ เจธเจพเจกเฉ เจเฉเจฒ เจเจพเจฐเจฌเฉเจ เจเฉเจก เจนเฉเฉฐเจฆเจพ เจนเฉ เจเจฟเจธเจจเฉเฉฐ เจเจธเจพเจจเฉ เจจเจพเจฒ เจเจฟเจธเฉ เจนเฉเจฐ เจจเจพเจฒ เจฌเจฆเจฒเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค เจฌเจนเฉเจค เจธเฉเจตเจฟเจงเจพเจเจจเจ ๐ เจนเจพเจฒเจพเจเจเจฟ, เจเฉเจเจพ เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจธเจผเฉเจฐเฉเจเจค เจตเจฟเฉฑเจ เจเฉเจก เจฒเจ เจฒเฉเฉเฉเจเจฆเฉ เจเจเฉเจนเจพ เจจเจนเฉเจ เจนเฉ เจเฉ เจเฉฑเจ เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจธเจพเจฐเฉ เจชเฉเจฐเจพเจฎเฉเจเจฐเจพเจ เจจเฉเฉฐ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจเจฐเจฆเจพ เจนเฉเฅค เจฎเฉเจจเฉเฉฐ เจเจธเจจเฉเฉฐ เจนเจฟเฉฑเจธเจฟเจเจ เจตเจฟเฉฑเจ เจตเฉฐเจกเจฃเจพ เจชเจฟเจ เจ เจคเฉ เจเฉเจเจเจขเฉ เจซเฉฐเจเจธเจผเจจเจพเจ เจคเฉเจ เจเจพเจฐเจฌเฉเจ เจฌเจฒเจพเจเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเฉ เจชเจเฅค เจเฉเฉฑเจฒ เจเจพเจฐ เจญเจพเจ เจธเจจเฅค
เจชเจนเจฟเจฒเจพ เจญเจพเจ:
ARM เจเจฐเจเฉเจเฉเจเจเจฐ เจตเจฟเฉฑเจ, เจชเจนเจฟเจฒเฉ เจเจพเจฐ เจซเฉฐเจเจธเจผเจจ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจฐเจเจฟเจธเจเจฐ R0-R3 เจฆเฉเจเจฐเจพ เจชเจพเจธ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเจจ, เจฌเจพเจเฉ, เจเฉเจเจฐ เจเฉเจ เจนเฉ, เจธเจเฉเจ เจฆเฉเจเจฐเจพ เจชเจพเจธ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเจจเฅค LR เจฐเจเจฟเจธเจเจฐ เจตเจฟเฉฑเจ เจตเจพเจชเจธเฉ เจฆเจพ เจชเจคเจพ เจนเฉเฉฐเจฆเจพ เจนเฉเฅค เจเจธ เจธเจญ เจจเฉเฉฐ เจธเฉฐเจญเจพเจฒเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ เจคเจพเจ เจเฉ เจซเฉฐเจเจธเจผเจจ เจเจธ เจฆเฉ เจชเฉเจฐเจพเจฎเฉเจเจฐเจพเจ เจจเฉเฉฐ เจกเฉฐเจช เจเจฐเจจ เจคเฉเจ เจฌเจพเจ
เจฆ เจเฉฐเจฎ เจเจฐ เจธเจเฉเฅค เจธเจพเจจเฉเฉฐ เจเจนเจจเจพเจ เจธเจพเจฐเฉ เจฐเจเจฟเจธเจเจฐเจพเจ เจจเฉเฉฐ เจธเฉเจฐเฉฑเจเจฟเจ
เจค เจเจฐเจจ เจฆเฉ เจตเฉ เจฒเฉเฉ เจนเฉ เจเฉ เจ
เจธเฉเจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจตเจฟเฉฑเจ เจตเจฐเจคเจพเจเจเฉ, เจเจธ เจฒเจ เจ
เจธเฉเจ PUSH.W {R0-R10,LR} เจเจฐเจฆเฉ เจนเจพเจเฅค R7 เจตเจฟเฉฑเจ เจธเจพเจจเฉเฉฐ เจธเจเฉเจ เจฐเจพเจนเฉเจ เจซเฉฐเจเจธเจผเจจ เจจเฉเฉฐ เจชเจพเจธ เจเฉเจคเฉ เจชเฉเจฐเจพเจฎเฉเจเจฐเจพเจ เจฆเฉ เจธเฉเจเฉ เจฆเจพ เจชเจคเจพ เจฎเจฟเจฒเจฆเจพ เจนเฉเฅค
เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจซเฉเจชเฉเจจ เจเจฒเฉ เจซเจพเจเจฒ เจเฉเจฒเฉเจนเฉเจ /data/local/tmp/aes "ab" เจฎเฉเจก เจตเจฟเฉฑเจ
เจญเจพเจต เจเฉเฉเจจ เจฒเจเฅค R0 เจตเจฟเฉฑเจ เจ
เจธเฉเจ เจซเจพเจเจฒ เจจเจพเจฎ เจฆเจพ เจชเจคเจพ เจฒเฉเจก เจเจฐเจฆเฉ เจนเจพเจ, R1 เจตเจฟเฉฑเจ - เจฎเฉเจก เจจเฉเฉฐ เจฆเจฐเจธเจพเจเจฃ เจตเจพเจฒเฉ เจฒเจพเจเจจ เจฆเจพ เจชเจคเจพเฅค เจ
เจคเฉ เจเฉฑเจฅเฉ เจเจพเจฐเจฌเฉเจ เจเฉเจก เจเจคเจฎ เจนเฉเฉฐเจฆเจพ เจนเฉ, เจเจธเจฒเจ เจ
เจธเฉเจ เจ
เจเจฒเฉ เจซเฉฐเจเจธเจผเจจ 'เจคเฉ เจเจพเจเจฆเฉ เจนเจพเจเฅค เจเจธ เจจเฉเฉฐ เจเฉฐเจฎ เจเจฐเจจเจพ เจเจพเจฐเฉ เจฐเฉฑเจเจฃ เจฒเจ, เจ
เจธเฉเจ เจธเจผเฉเจฐเฉ เจตเจฟเฉฑเจ เจเฉเฉเฉ เจจเฉเฉฐ เจฌเจพเจเจชเจพเจธ เจเจฐเจฆเฉ เจนเฉเจ, เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจ
เจธเจฒ เจเฉเจก เจตเจฟเฉฑเจ เจคเจฌเจฆเฉเจฒเฉ เจชเจพเจเจเจฆเฉ เจนเจพเจ, เจ
เจคเฉ เจเฉเฉเฉ เจฆเฉ เจฌเจเจพเจ เจ
เจธเฉเจ เจชเฉเจ เจฆเฉ เจจเจฟเจฐเฉฐเจคเจฐเจคเจพ เจเฉเฉเจฆเฉ เจนเจพเจเฅค
เจเจพเจฒ เจเจฐ เจฐเจฟเจนเจพ เจนเฉ เจซเฉเจชเฉเจจ.
เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจชเจนเจฟเจฒเฉ เจคเจฟเฉฐเจจ เจชเฉเจฐเจพเจฎเฉเจเจฐ AES เจเจฟเจธเจฎ เจนเฉ เจเฉฐเจ. เจเจฟเจเจเจเจฟ เจ เจธเฉเจ เจธเจผเฉเจฐเฉ เจตเจฟเฉฑเจ เจฐเจเจฟเจธเจเจฐเจพเจ เจจเฉเฉฐ เจธเจเฉเจ เจตเจฟเฉฑเจ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจเฉเจคเจพ เจนเฉ, เจ เจธเฉเจ เจซเฉฐเจเจธเจผเจจ เจจเฉเฉฐ เจธเจฟเจฐเจซเจผ เจชเจพเจธ เจเจฐ เจธเจเจฆเฉ เจนเจพเจ เจฒเจฟเจเฉ เจธเจเฉเจ 'เจคเฉ เจเจจเฉเจนเจพเจ เจฆเฉ เจชเจคเฉเฅค
เจ
เฉฑเจเฉ เจธเจพเจกเฉ เจเฉเจฒ เจคเจฟเฉฐเจจ เจขเจพเจเจเฉ เจนเจจ เจเจฟเจนเจจเจพเจ เจตเจฟเฉฑเจ เจกเฉเจเจพ เจฆเจพ เจเจเจพเจฐ เจ
เจคเฉ เจเฉเฉฐเจเฉ, เจธเจผเฉเจฐเฉเจเจคเฉ เจตเฉเจเจเจฐ เจ
เจคเฉ เจเจจเจเฉเจฐเจฟเจชเจเจก เจกเฉเจเจพ เจฒเจ เจกเฉเจเจพ เจฒเจ เจเฉฑเจ เจชเฉเจเจเฉฐเจเจฐ เจธเจผเจพเจฎเจฒ เจนเจจเฅค
เจ
เฉฐเจค เจตเจฟเฉฑเจ, เจซเจพเจเจฒ เจจเฉเฉฐ เจฌเฉฐเจฆ เจเจฐเฉ, เจฐเจเจฟเจธเจเจฐเจพเจ เจจเฉเฉฐ เจฐเฉเจธเจเฉเจฐ เจเจฐเฉ เจ
เจคเฉ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจจเฉเฉฐ เจ
เจธเจฒ เจซเฉฐเจเจธเจผเจจ เจตเจฟเฉฑเจ เจเฉเจฐเจพเจเจธเจซเจฐ เจเจฐเฉ 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/" เจชเฉเจฐเจพเจชเจค เจนเฉเจตเฉ, เจเจชเฉเจเฉ เจตเจฟเฉฑเจ เจเจธ เจจเจพเจฎ เจจเจพเจฒ เจเฉฑเจ เจซเฉเจฒเจกเจฐ เจฌเจฃเจพเจ เจ เจคเฉ เจเฉฑเจฅเฉ เจธเจเจตเจพเจเจฐเจฒ เจฌเฉเจฐเจพเจเจเจผเจฐ เจธเจฐเจเฉเจซเจฟเจเฉเจ เจธเจผเจพเจฎเจฒ เจเจฐเฉเฅค
เจ เจธเฉเจ เจ เจธเฉเจเจฌเจฒ เจเจฐเจฆเฉ เจนเจพเจ, เจธเจพเจเจจ เจเจฐเจฆเฉ เจนเจพเจ, เจธเจฅเจพเจชเจฟเจค เจเจฐเจฆเฉ เจนเจพเจ, เจฒเจพเจเจ เจเจฐเจฆเฉ เจนเจพเจเฅค เจฌเจฟเฉฐเจเฉ! เจธเจพเจกเฉ เจเฉเจฒ เจเฉเฉฐเจเฉ เจนเฉ!
เจเฉฑเจฎ.เจเจ.เจเฉ.เจเฉฑเจฎ
เจธเจพเจจเฉเฉฐ เจเฉเฉฐเจเฉ เจฆเฉ เจฌเจฐเจพเจฌเจฐ เจเฉฑเจ เจเฉเฉฐเจเฉ เจ เจคเฉ เจเฉฑเจ เจธเจผเฉเจฐเฉเจเจคเฉ เจตเฉเจเจเจฐ เจชเฉเจฐเจพเจชเจค เจนเฉเจเจ เจนเฉเฅค เจเจ CBC เจฎเฉเจก เจตเจฟเฉฑเจ เจธเจฐเจตเจฐ เจเจตเจพเจฌ เจจเฉเฉฐ เจกเฉเจเฉเจฐเจฟเจชเจ เจเจฐเจจ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเฉเจเฅค
เจ
เจธเฉเจ เจเจฐเจเจพเจเจต URL เจฆเฉเจเจฆเฉ เจนเจพเจ, เจเฉ เจเจฟ MD5 เจตเจฐเจเจพ เจนเฉ, "เจเจเจธเจเฉเจฐเฉเจเจ_เจ
เจจเจเจผเจฟเจชเจธเจพเจเจเจผ" เจ
เจคเฉ เจเฉฑเจ เจจเฉฐเจฌเจฐเฅค เจ
เจธเฉเจ เจเจพเจเจ เจเจฐเจฆเฉ เจนเจพเจ: เจเจฐเจเจพเจเจต เจฆเจพ MD5 เจเฉฑเจเฉ เจเจฟเจนเจพ เจนเฉ, เจ
เจจเจชเฉเจ เจเฉเจคเฉ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจฆเจพ เจเจเจพเจฐ เจเฉฑเจเฉ เจเจฟเจนเจพ เจนเฉเฅค เจ
เจธเฉเจ เจเจธ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจจเฉเฉฐ เจชเฉเจ เจเจฐเจจ เจ
เจคเฉ เจฌเฉเจฐเจพเจเจเจผเจฐ เจจเฉเฉฐ เจฆเฉเจฃ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐ เจฐเจนเฉ เจนเจพเจเฅค เจเจน เจฆเจฟเจเจพเจเจฃ เจฒเจ เจเจฟ เจธเจพเจกเฉ เจชเฉเจ เจเฉเจคเฉ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจฒเฉเจก เจนเฉ เจเจ เจนเฉ, เจ
เจธเฉเจ "PWNED!" เจเฉเจเจธเจ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ SMS เจฌเจฃเจพเจเจฃ เจฒเจ เจเฉฑเจ เจเจฐเจพเจฆเจพ เจฒเจพเจเจ เจเจฐเจพเจเจเฉเฅค เจ
เจธเฉเจ เจธเจฐเจตเจฐ เจคเฉเจ เจฆเฉ เจเจตเจพเจฌเจพเจ เจจเฉเฉฐ เจฌเจฆเจฒเจพเจเจเฉ:
เจฌเฉเจฐเจพเจเจเจผเจฐ เจเจฐเจเจพเจเจต เจจเฉเฉฐ เจเจ เจตเจพเจฐ เจกเจพเจเจจเจฒเฉเจก เจเจฐเจจ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจฆเจพ เจนเฉ, เจเจฟเจธ เจคเฉเจ เจฌเจพเจ
เจฆ เจเจน เจเจฒเจคเฉ เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค เจเจผเจพเจนเจฐ เจนเฉ เจเจฟ เจเฉเจ
เจเจน เจชเจธเฉฐเจฆ เจจเจนเฉเจ เจเจฐเจฆเจพเฅค เจเจธ เจงเฉเฉฐเจฆเจฒเฉ เจซเจพเจฐเจฎเฉเจ เจฆเจพ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจเจฐเจจ เจฆเฉ เจจเจคเฉเจเฉ เจตเจเฉเจ, เจเจน เจชเจคเจพ เจเจฒเจฟเจ เจเจฟ เจธเจฐเจตเจฐ เจชเฉเจฐเจพเจฒเฉเจ เจฆเฉ เจเจเจพเจฐ เจจเฉเฉฐ เจตเฉ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจเจฐเจฆเจพ เจนเฉ:
เจเจน LEB128 เจตเจฟเฉฑเจ เจเจจเจเฉเจก เจเฉเจคเจพ เจเจฟเจ เจนเฉเฅค เจชเฉเจ เจคเฉเจ เจฌเจพเจ
เจฆ, เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจฆเฉ เจจเจพเจฒ เจชเฉเจฐเจพเจฒเฉเจ เจฆเจพ เจเจเจพเจฐ เจฅเฉเฉเจพ เจฌเจฆเจฒ เจเจฟเจ, เจเจธเจฒเจ เจฌเฉเจฐเจพเจเจเจผเจฐ เจจเฉ เจฎเฉฐเจจเจฟเจ เจเจฟ เจชเฉเจฐเจพเจฒเฉเจ เจจเฉเฉฐ เจเฉเจขเฉ เจขเฉฐเจ เจจเจพเจฒ เจกเจพเจเจจเจฒเฉเจก เจเฉเจคเจพ เจเจฟเจ เจธเฉ, เจ
เจคเฉ เจเจ เจเฉเจธเจผเจฟเจธเจผเจพเจ เจคเฉเจ เจฌเจพเจ
เจฆ เจเจธ เจจเฉ เจเฉฑเจ เจเจฒเจคเฉ เจธเฉเฉฑเจ เจฆเจฟเฉฑเจคเฉเฅค
เจ เจธเฉเจ เจเจฐเจเจพเจเจต เจฆเฉ เจเจเจพเจฐ เจจเฉเฉฐ เจตเจฟเจตเจธเจฅเจฟเจค เจเจฐเจฆเฉ เจนเจพเจ... เจ เจคเฉ - เจเจฟเฉฑเจค! ๐ เจจเจคเฉเจเจพ เจตเฉเจกเฉเจ เจตเจฟเฉฑเจ เจนเฉเฅค
เจจเจคเฉเจเฉ เจ เจคเฉ เจตเจฟเจเจพเจธเจเจพเจฐ เจชเฉเจฐเจคเฉเจเจฐเจฎ
เจเจธเฉ เจคเจฐเฉเจนเจพเจ, เจนเฉเจเจฐ เจเจคเจฐเจจเจพเจ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉเจเจ เจจเฉเฉฐ เจตเฉฐเจกเจฃ เจ เจคเฉ เจเจฒเจพเจเจฃ เจฒเจ UC เจฌเฉเจฐเจพเจเจเจผเจฐ เจฆเฉ เจ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐ เจธเจเจฆเฉ เจนเจจเฅค เจเจน เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉเจเจ เจฌเฉเจฐเจพเจเจเจผเจฐ เจฆเฉ เจธเฉฐเจฆเจฐเจญ เจตเจฟเฉฑเจ เจเฉฐเจฎ เจเจฐเจจเจเฉเจเจ, เจเจธเจฒเจ เจเจนเจจเจพเจ เจจเฉเฉฐ เจเจธเจฆเฉ เจธเจพเจฐเฉ เจธเจฟเจธเจเจฎ เจ เจจเฉเจฎเจคเฉเจเจ เจชเฉเจฐเจพเจชเจค เจนเฉเจฃเจเฉเจเจเฅค เจจเจคเฉเจเฉ เจตเจเฉเจ, เจซเจฟเจธเจผเจฟเฉฐเจ เจตเจฟเฉฐเจกเฉเจเจผ เจจเฉเฉฐ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจเจฐเจจ เจฆเฉ เจธเจฎเจฐเฉฑเจฅเจพ, เจ เจคเฉ เจจเจพเจฒ เจนเฉ เจธเฉฐเจคเจฐเฉ เจเฉเจจเฉ เจธเจเฉเจเจฐเจฒ เจฆเฉเจเจ เจเจพเจฐเจเจธเจผเฉเจฒ เจซเจพเจเจฒเจพเจ เจคเฉฑเจ เจชเจนเฉเฉฐเจ, เจกเฉเจเจพเจฌเฉเจธ เจตเจฟเฉฑเจ เจธเจเฉเจฐ เจเฉเจคเฉ เจฒเฉเจเจฟเจจ, เจชเจพเจธเจตเจฐเจก เจ เจคเฉ เจเฉเจเฉเจเจผ เจธเจฎเฉเจคเฅค
เจ
เจธเฉเจ UC เจฌเฉเจฐเจพเจเจเจผเจฐ เจฆเฉ เจกเจฟเจตเฉเจฒเจชเจฐเจพเจ เจจเจพเจฒ เจธเฉฐเจชเจฐเจ เจเฉเจคเจพ เจ
เจคเฉ เจเจนเจจเจพเจ เจจเฉเฉฐ เจธเจพเจกเฉ เจฆเฉเจเจฐเจพ เจชเจพเจ เจเจ เจธเจฎเฉฑเจธเจฟเจ เจฌเจพเจฐเฉ เจเจพเจฃเฉ เจเจฐเจตเจพเจเจ, เจเจฎเจเจผเฉเจฐเฉ เจ
เจคเฉ เจเจธเจฆเฉ เจเจคเจฐเฉ เจจเฉเฉฐ เจฆเจฐเจธเจพเจเจฃ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเฉเจคเฉ, เจชเจฐ เจเจนเจจเจพเจ เจจเฉ เจธเจพเจกเฉ เจจเจพเจฒ เจเฉเจ เจเฉฑเจฒ เจจเจนเฉเจ เจเฉเจคเฉเฅค เจเจธ เจฆเฉเจฐเจพเจจ, เจฌเฉเจฐเจพเจเจเจผเจฐ เจจเฉ เจเจชเจฃเฉ เจเจคเจฐเจจเจพเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจจเฉเฉฐ เจธเจพเจฆเฉ เจจเจเจผเจฐ เจตเจฟเฉฑเจ เจฆเจฟเจเจพเจเจฃเจพ เจเจพเจฐเฉ เจฐเฉฑเจเจฟเจเฅค เจชเจฐ เจเฉฑเจ เจตเจพเจฐ เจเจฆเฉเจ เจ
เจธเฉเจ เจเจฎเจเจผเฉเจฐเฉ เจฆเฉ เจตเฉเจฐเจตเจฟเจเจ เจฆเจพ เจเฉเจฒเจพเจธเจพ เจเจฐ เจฆเจฟเฉฑเจคเจพ, เจคเจพเจ เจเจธ เจจเฉเฉฐ เจชเจนเจฟเจฒเจพเจ เจตเจพเจเจ เจจเจเจผเจฐเจ
เฉฐเจฆเจพเจเจผ เจเจฐเจจเจพ เจธเฉฐเจญเจต เจจเจนเฉเจ เจธเฉเฅค 27 เจฎเจพเจฐเจ เจธเฉ
UC เจฌเจฐเจพเจเจเจผเจฐ 12.10.9.1193 เจฆเจพ เจเฉฑเจ เจจเจตเจพเจ เจธเฉฐเจธเจเจฐเจฃ เจเจพเจฐเฉ เจเฉเจคเจพ เจเจฟเจ เจธเฉ, เจเจฟเจธ เจจเฉ HTTPS เจฆเฉเจเจฐเจพ เจธเจฐเจตเจฐ เจคเฉฑเจ เจชเจนเฉเฉฐเจ เจเฉเจคเฉ เจธเฉ:
เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, "เจซเจฟเจเจธ" เจคเฉเจ เจฌเจพเจ
เจฆ เจ
เจคเฉ เจเจธ เจฒเฉเจ เจจเฉเฉฐ เจฒเจฟเจเจฃ เจฆเฉ เจธเจฎเฉเจ เจคเฉฑเจ, เจเฉฑเจ เจฌเฉเจฐเจพเจเจเจผเจฐ เจตเจฟเฉฑเจ เจเฉฑเจ PDF เจเฉเจฒเฉเจนเจฃ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจฆเฉ เจจเจคเฉเจเฉ เจตเจเฉเจ "เจเจน, เจเฉเจ เจเจฒเจค เจนเฉ เจเจฟเจ!" เจเฉเจเจธเจ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจเจฒเจคเฉ เจธเฉเจจเฉเจนเจพ เจเจเจเฅค เจเฉฑเจ PDF เจจเฉเฉฐ เจเฉเจฒเฉเจนเจฃ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจฆเฉ เจธเจฎเฉเจ เจธเจฐเจตเจฐ เจจเฉเฉฐ เจเฉฑเจ เจฌเฉเจจเจคเฉ เจจเจนเฉเจ เจเฉเจคเฉ เจเจ เจธเฉ, เจชเจฐ เจเฉฑเจ เจฌเฉเจจเจคเฉ เจเฉเจคเฉ เจเจ เจธเฉ เจเจฆเฉเจ เจฌเฉเจฐเจพเจเจเจผเจฐ เจฒเจพเจเจ เจเฉเจคเจพ เจเจฟเจ เจธเฉ, เจเฉ Google Play เจจเจฟเจฏเจฎเจพเจ เจฆเฉ เจเจฒเฉฐเจเจฃเจพ เจตเจฟเฉฑเจ เจเจเจเจผเฉเจเจฟเจเจเฉเจฌเจฒ เจเฉเจก เจจเฉเฉฐ เจกเจพเจเจจเจฒเฉเจก เจเจฐเจจ เจฆเฉ เจจเจฟเจฐเฉฐเจคเจฐ เจธเจฎเจฐเฉฑเจฅเจพ เจตเฉฑเจฒ เจธเฉฐเจเฉเจค เจเจฐเจฆเจพ เจนเฉเฅค
เจธเจฐเฉเจค: www.habr.com