เดเดฎเตเดเด
เดฎเดพเตผเดเตเดเต เด
เดตเดธเดพเดจเด เดเดเตเดเตพ
เดเตเดฑเดเตเดเต เดเดพเดฒเด เดฎเตเดฎเตเดชเต, เดฏเตเดธเดฟ เดฌเตเดฐเตเดธเตผ เดตเดณเดฐเต เดเดเตเดฐเดฎเดฃเดพเดคเตเดฎเดเดฎเดพเดฏเดฟ เดชเดฐเดธเตเดฏเด เดเตเดฏเตเดฏเตเดเดฏเตเด เดตเดฟเดคเดฐเดฃเด เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดคเต: เดเดคเต เดฎเดพเตฝเดตเตเดฏเตผ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเตเดเต เดเดชเดเดฐเดฃเดเตเดเดณเดฟเตฝ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดคเต, เดตเตเดกเดฟเดฏเต เดซเดฏเดฒเตเดเดณเตเดเต เดฎเดฑเดตเดฟเตฝ เดตเดฟเดตเดฟเดง เดธเตเดฑเตเดฑเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดฟเดคเดฐเดฃเด เดเตเดฏเตเดคเต (เด
เดคเดพเดฏเดคเต, เดเดชเดฏเตเดเตเดคเดพเดเตเดเตพ เด
เดตเตผ เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดพเดฏเดฟ เดเดฐเตเดคเดฟ, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดฐเต เด
เดถเตเดฒเตเดฒ เดตเตเดกเดฟเดฏเต, เดชเดเตเดทเต เดชเดเดฐเด เด เดฌเตเดฐเตเดธเดฑเดฟเดจเตเดชเตเดชเด เดเดฐเต APK เดฒเดญเดฟเดเตเดเต), เดฌเตเดฐเตเดธเตผ เดเดพเดฒเดนเดฐเดฃเดชเตเดชเตเดเตเดเดคเดพเดฃเตเดจเตเดจเตเด เด
เดชเดเดเดธเดพเดงเตเดฏเดคเดฏเตเดณเตเดณเดคเดพเดฃเตเดจเตเดจเตเด เด
เดคเตเดชเตเดฒเตเดณเตเดณ เดเดพเดฐเตเดฏเดเตเดเตพ เดเดฃเตเดเตเดจเตเดจเตเดฎเตเดณเตเดณ เดธเดจเตเดฆเตเดถเดเตเดเดณเตเดณเตเดณ เดญเดฏเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจ เดฌเดพเดจเดฑเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต. เดตเดฟเดเตเดฏเดฟเดฒเต เดเดฆเตเดฏเตเดเดฟเด เดฏเตเดธเดฟ เดฌเตเดฐเตเดธเตผ เดเตเดฐเตเดชเตเดชเดฟเตฝ เดเดฃเตเดเต
เดเดดเตเดคเตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต, UC เดฌเตเดฐเตเดธเดฑเดฟเดจเต Google Play-เดฏเดฟเตฝ 500-เดฒเดงเดฟเดเด เดเตปเดธเตเดฑเตเดฑเดพเดณเตเดทเดจเตเดเดณเตเดฃเตเดเต. เดเดคเต เดถเตเดฐเดฆเตเดงเตเดฏเดฎเดพเดฃเต - Google Chrome-เดจเต เดฎเดพเดคเตเดฐเดฎเต เดเตเดเตเดคเตฝ เดเดณเตเดณเต. เด
เดตเดฒเตเดเดจเดเตเดเตพเดเตเดเดฟเดเดฏเดฟเตฝ, Google Play-เดฏเดฟเดฒเต เดเดฟเดฒ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเดณเดฟเดฒเตเดเตเดเตเดณเตเดณ เดชเดฐเดธเตเดฏเดคเตเดคเตเดฏเตเด เดฑเตเดกเดฏเดฑเดเตโเดเดฟเดจเตเดฏเตเด เดเตเดฑเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดงเดพเดฐเดพเดณเด เดชเดฐเดพเดคเดฟเดเตพ เดเดพเดฃเดพเตป เดเดดเดฟเดฏเตเด. เดเดเตเดเดณเตเดเต เดเดตเตเดทเดฃเดคเตเดคเดฟเดจเตเดฑเต เดเดพเดฐเดฃเด เดเดคเดพเดฏเดฟเดฐเตเดจเตเดจเต: UC เดฌเตเดฐเตเดธเตผ เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดฎเตเดถเด เดชเตเดฐเดตเตเดคเตเดคเดฟ เดเตเดฏเตเดฏเตเดจเตเดจเตเดฃเตเดเต เดเดจเตเดจเต เดเดพเดฃเดพเตป เดเดเตเดเตพ เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต. เด
เดตเตป เด
เดเตเดเดจเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดพเดฏเดฟ เดคเตเดณเดฟเดเตเดเต!
เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเตเดกเดฟเตฝ, เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเดฌเดฟเตพ เดเตเดกเต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเดพเดจเตเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเดจเตเดฎเตเดณเตเดณ เดเดดเดฟเดตเต เดเดฃเตเดเตเดคเตเดคเดฟ,
เดชเด เดจเดธเดฎเดฏเดคเตเดคเต Google Play-เดฏเดฟเตฝ เดฒเดญเตเดฏเดฎเดพเดฏเดฟเดฐเตเดจเตเดจ UC เดฌเตเดฐเตเดธเดฑเดฟเดจเตเดฑเต เดชเดคเดฟเดชเตเดชเดฟเดจเต เดเตเดตเดเต เดเดดเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเตเดฒเตเดฒเดพเด เดชเตเดฐเดธเดเตเดคเดฎเดพเดฃเต:
package: com.UCMobile.intl
versionName: 12.10.8.1172
versionCode: 10598
sha1 APK-ัะฐะนะปะฐ: f5edb2243413c777172f6362876041eb0c3a928c
เดเดเตเดฐเดฎเดฃ เดตเตเดเตเดฑเตเดฑเตผ
เดฏเตเดธเดฟ เดฌเตเดฐเตเดธเตผ เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดธเตเดตเดฏเด เดตเดฟเดถเดฆเตเดเดฐเดฟเดเตเดเตเดจเตเดจ เดชเตเดฐเตเดณเตเดณ เดเดฐเต เดธเตเดตเดจเด เดเดฃเตเดเตเดคเตเดคเดพเดจเดพเดเตเด com.uc.deployment.UpgradeDeployService.
<service android_exported="false" android_name="com.uc.deployment.UpgradeDeployService" android_process=":deploy" />
เด เดธเตเดตเดจเด เดเดฐเดเดญเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดฌเตเดฐเตเดธเตผ เดเดฐเต POST เด
เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดเดคเตเดคเตเดจเตเดจเต
เด เดคเดฟเดจเดพเตฝ, เดเดฐเต เดเดชเดฏเตเดเตเดคเดพเดตเต เดจเตเดฐเดฟเดเตเดเต เดฌเตเดฐเตเดธเดฑเดฟเตฝ เดเดฐเต PDF เดคเตเดฑเดเตเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด เดญเตเดฏเตผเดคเตเดฅเดจเดเตพ เดเตเดฐเดพเดซเดฟเดเตเดเดฟเตฝ เดเดพเดฃเดพเตป เดเดดเดฟเดฏเตเด:
เดเดฆเตเดฏเด เดเดฐเต POST เด
เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเดฃเตเดเต
PDF, เดเดซเตเดธเต เดซเตเตผเดฎเดพเดฑเตเดฑเตเดเตพ เดเดพเดฃเตเดจเตเดจเดคเดฟเดจเต เดฒเตเดฌเตเดฐเดฑเดฟ เดเดณเตเดณ เดเดฐเต เดเตผเดเตเดเตเดตเต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดคเต. เดเดฆเตเดฏเดคเตเดคเต เด
เดญเตเดฏเตผเดคเตเดฅเดจ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดตเดฟเดตเดฐเดเตเดเตพ เดเตเดฎเดพเดฑเตเดจเตเดจเต เดเดจเตเดจเต เด
เดจเตเดฎเดพเดจเดฟเดเตเดเตเดจเตเดจเดคเต เดฏเตเดเตเดคเดฟเดธเดนเดฎเดพเดฃเต (เดเตเดฑเดเตเดเดคเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดฒเตเดฌเตเดฐเดฑเดฟ เดจเตฝเดเดพเดจเตเดณเตเดณ เดเตผเดเตเดเดฟเดเตเดเตเดเตผ), เด
เดคเดฟเดจเต เดฎเดฑเตเดชเดเดฟเดฏเดพเดฏเดฟ เดฌเตเดฐเตเดธเดฑเดฟเดจเต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเดฃเตเด เดฒเตเดฌเตเดฐเดฑเดฟเดฏเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเดฟเดฒ เดตเดฟเดตเดฐเดเตเดเตพ เดฒเดญเดฟเดเตเดเตเดจเตเดจเต: เดตเดฟเดฒเดพเดธเดตเตเด, เดเดฐเตเดชเดเตเดทเต , เดตเตเดฑเต เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด. เด เด
เดญเตเดฏเตผเดคเตเดฅเดจ เดเตปเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเดฏเตเดคเดคเดพเดฃเต เดชเตเดฐเดถเตเดจเด.
เด เดญเตเดฏเตผเดคเตเดฅเดจ เดถเดเดฒเด
เดเดคเตเดคเดฐเด เดถเดเดฒเด
เดฒเตเดฌเตเดฐเดฑเดฟ เดคเดจเตเดจเต ZIP-เตฝ เดชเดพเดเตเดเตเดเตเดเตเดฏเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เดเตปเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเดฏเตเดคเดฟเดเตเดเดฟเดฒเตเดฒ.
เดเตเดฐเดพเดซเดฟเดเต เดกเตเดเตเดฐเดฟเดชเตเดทเตป เดเตเดกเดฟเดจเดพเดฏเดฟ เดคเดฟเดฐเดฏเตเด
เดธเตเตผเดตเตผ เดชเตเดฐเดคเดฟเดเดฐเดฃเด เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเดพเด. เดเตเดฒเดพเดธเต เดเตเดกเต เดจเตเดเตเดเดพเด 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 เดเดจเตเดจ เดจเดฎเตเดชเดฑเตเดณเตเดณ เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดฑเตเดเตเดเดฑเดฟเดฒเตเดเตเดเต เดฎเดพเดฑเตเดฑเตเดจเตเดจเต - เดเดคเต เดชเตเดฐเดคเตเดฏเดเตเดทเดคเตเดคเดฟเตฝ เดเดฎเดพเตปเดกเต เดจเดฎเตเดชเดฑเดพเดฃเต.
เดธเดเดเตเดฐเดฎเดฃเดเตเดเดณเตเดเต เด เดเตเดคเตเดค เดถเตเดเดเดฒเดฏเตเดเตเดเต เดถเตเดทเด เดเดเตเดเตพ เดเดจเตเดฑเตผเดซเตเดธเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจ เดเดฐเต เดเตเดฒเดพเดธเต เดเดฃเตเดเตเดคเตเดคเตเดจเตเดจเต IRouterComponent เดฐเตเดคเดฟเดฏเตเด doCommand:
package com.alibaba.wireless.security.mainplugin;
import com.alibaba.wireless.security.framework.IRouterComponent;
import com.taobao.wireless.security.adapter.JNICLibrary;
public class a implements IRouterComponent {
public a() {
super();
}
public Object doCommand(int arg2, Object[] arg3) {
return JNICLibrary.doCommandNative(arg2, arg3);
}
}
เดเดชเตเดชเด เดเตเดฒเดพเดธเตเด JNIC เดฒเตเดฌเตเดฐเดฑเดฟ, เดเดคเดฟเตฝ เดจเตเดฑเตเดฑเตเดตเต เดฐเตเดคเดฟ เดชเตเดฐเดเตเดฏเดพเดชเดฟเดเตเดเต 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_Onload)
เดเดฐเต เดซเดเดเตเดทเตป เดเตเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดธเตเดตเดฆเตเดถเดฟเดเตพ.
เดเดเตเดเดณเตเดเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเดเตเดเตพ เดเดฆเตเดฏ เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เดชเตเดฐเต เดเดเตเดเดจเตเดฏเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด: Java_com_taobao_wireless_security_adapter_JNICLibrary_doCommandNative.
เดเดเตโเดธเตโเดชเตเตผเดเตเดเต เดเตเดฏเตโเดค เดซเดเดเตโเดทเดจเตเดเตพเดเตเดเดฟเดเดฏเดฟเตฝ เด
เดคเตเดคเดฐเดฎเตเดฐเต เดซเดเดเตโเดทเตป เดเดฒเตเดฒ, เด
เดคเดฟเดจเตผเดคเตเดฅเด เดจเดฟเดเตเดเตพ เดเดฐเต เดเตเดณเดฟเดจเดพเดฏเดฟ เดจเตเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต เดเดจเตเดจเดพเดฃเต เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดธเตเดตเดฆเตเดถเดฟเดเตพ.
เดจเดฎเตเดเตเดเต เดเดเดเตเดเดฟเดฒเตเดเตเดเต เดชเตเดเดพเด JNI_Onload เดเดเตเดเตพ เด เดเดฟเดคเตเดฐเด เดเดพเดฃเตเดจเตเดจเต:
เดเดจเตเดคเดพเดฃเต เดเดตเดฟเดเต เดจเดเดเตเดเตเดจเตเดจเดคเต? เดเดฑเตเดฑเดจเตเดเตเดเดคเตเดคเดฟเตฝ, เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเดฑเต เดคเตเดเดเตเดเดตเตเด เด
เดตเดธเดพเดจเดตเตเด ARM เดเตผเดเตเดเดฟเดเตเดเตเดเดฑเดฟเดจเต เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฃเต. เดธเตเดฑเตเดฑเดพเดเตเดเดฟเดฒเต เดเดฆเตเดฏ เดจเดฟเตผเดฆเตเดฆเตเดถเด เดซเดเดเตโเดทเตป เด
เดคเดฟเดจเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเตเดเดณเตเดเต เดเดณเตเดณเดเดเตเดเดเตเดเดณเตเด (เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, R0, R1, R2) เดซเดเดเตโเดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฎเดเดเตเด เดตเดฟเดฒเดพเดธเด เด
เดเดเตเดเตเดจเตเดจ LR เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเดฟเดฒเต เดเดณเตเดณเดเดเตเดเดเตเดเดณเตเด เดธเดเดญเดฐเดฟเดเตเดเตเดจเตเดจเต. . เด
เดตเดธเดพเดจ เดจเดฟเตผเดฆเตเดฆเตเดถเด เดธเดเดฐเดเตเดทเดฟเดเตเด เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเตเดเตพ เดชเตเดจเดเดธเตเดฅเดพเดชเดฟเดเตเดเตเดจเตเดจเต, เดฑเดฟเดเตเดเตเตบ เดตเดฟเดฒเดพเดธเด เดเดเตป เดชเดฟเดธเดฟ เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดธเตเดฅเดพเดชเดฟเดเตเดเตเดจเตเดจเต - เด
เดเตเดเดจเต เดซเดเดเตเดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเดเดเตเดเตเดจเตเดจเต. เดเดจเตเดจเดพเตฝ เดจเดฟเดเตเดเตพ เดธเตเดเตเดทเตเดฎเดฎเดพเดฏเดฟ เดจเตเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เด
เดตเดธเดพเดจ เดจเดฟเตผเดฆเตเดฆเตเดถเด เดธเตเดฑเตเดฑเดพเดเตเดเดฟเตฝ เดธเดเดญเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดฑเดฟเดเตเดเตเตบ เดตเดฟเดฒเดพเดธเด เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเต เดจเดฟเดเตเดเตพ เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด. เด
เดคเดฟเดจเตเดถเตเดทเด เดเดเตเดเดจเตเดฏเดพเดฏเดฟเดฐเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดจเดฎเตเดเตเดเต เดเดฃเดเตเดเดพเดเตเดเดพเด
เดเตเดกเต เดเดเตเดธเดฟเดเตเดฏเตเดทเตป. เดเดฐเต เดจเดฟเดถเตเดเดฟเดค เดตเดฟเดฒเดพเดธเด 1xB0 R130-เดฒเตเดเตเดเต เดฒเตเดกเตเดเตเดฏเตโเดคเต, เด
เดคเดฟเตฝ เดจเดฟเดจเตเดจเต 5 เดเตเดฑเดฏเตเดเตเดเตเดจเตเดจเต, เดคเตเดเตผเดจเตเดจเต เด
เดคเต R0-เดฒเตเดเตเดเต เดฎเดพเดฑเตเดฑเตเดเดฏเตเด 0x10 เดเตเตผเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เดเดคเต 0xB13B เดเดฏเดฟ เดฎเดพเดฑเตเดจเตเดจเต. เด
เดคเดฟเดจเดพเตฝ, เด
เดตเดธเดพเดจ เดจเดฟเตผเดฆเตเดฆเตเดถเด เดเดฐเต เดธเดพเดงเดพเดฐเดฃ เดซเดเดเตเดทเตป เดฑเดฟเดเตเดเตเตบ เดเดฃเตเดจเตเดจเต IDA เดเดฐเตเดคเตเดจเตเดจเต, เดเดจเตเดจเดพเตฝ เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ เด
เดคเต เดเดฃเดเตเดเดพเดเตเดเดฟเดฏ เดตเดฟเดฒเดพเดธเด 0xB13B เดฒเตเดเตเดเต เดชเตเดเตเดจเตเดจเต.
ARM เดชเตเดฐเตเดธเดธเดฑเตเดเตพเดเตเดเต เดฐเดฃเตเดเต เดฎเตเดกเตเดเดณเตเด เดฐเดฃเตเดเต เดธเตเดฑเตเดฑเต เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเตเดฎเตเดฃเตเดเตเดจเตเดจ เดเดพเดฐเตเดฏเด เดเดตเดฟเดเต เดเตผเดเตเดเตเดฃเตเดเดคเดพเดฃเต: ARM, Thumb. เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดจเตเดฑเต เดเดฑเตเดฑเดตเตเด เดชเตเดฐเดงเดพเดจเดชเตเดชเตเดเตเด เดฌเดฟเดฑเตเดฑเต เดเดคเต เดเตปเดธเตเดเตเดฐเดเตเดทเตป เดธเตเดฑเตเดฑเดพเดฃเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเตเดจเตเดจเต เดชเตเดฐเตเดธเดธเตเดธเดฑเดฟเดจเตเดเต เดชเดฑเดฏเตเดจเตเดจเต. เด เดคเดพเดฏเดคเต, เดตเดฟเดฒเดพเดธเด เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ 0xB13A เดเดฃเต, เดเตเดเดพเดคเต เดเดฑเตเดฑเดตเตเด เดเตเดฑเดเตเด เดฌเดฟเดฑเตเดฑเตเดเดณเดฟเตฝ เดเดจเตเดจเต เดคเดฎเตเดชเต เดฎเตเดกเดฟเดจเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต.
เด เดฒเตเดฌเตเดฐเดฑเดฟเดฏเดฟเดฒเต เดเดฐเต เดซเดเดเตโเดทเดจเตเดฑเต เดคเตเดเดเตเดเดคเตเดคเดฟเดฒเตเด เดธเดฎเดพเดจเดฎเดพเดฏ เดเดฐเต "เด
เดกเดพเดชเตเดฑเตเดฑเตผ" เดเตเตผเดคเตเดคเดฟเดเตเดเตเดฃเตเดเต
เดฎเดพเดฒเดฟเดจเตเดฏ เดเตเดกเต. เดเดเตเดเตพ เด
เดตเดฏเดฟเตฝ เดเตเดเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดธเดฟเดเตเดเดฟเดฒเตเดฒ - เดเดเตเดเตพ เดเตผเดเตเดเตเดจเตเดจเต
เดฎเดฟเดเตเดเดตเดพเดฑเตเด เดเดฒเตเดฒเดพ เดซเดเดเตโเดทเดจเตเดเดณเตเดเตเดฏเตเด เดฏเดฅเดพเตผเดคเตเดฅ เดคเตเดเดเตเดเด เด
เตฝเดชเตเดชเด เด
เดเดฒเตเดฏเดพเดฃเตเดจเตเดจเต.
เดเตเดกเต เดตเตเดฏเดเตเดคเดฎเดพเดฏเดฟ 0xB13A เดฒเตเดเตเดเต เดชเตเดเดพเดคเตเดคเดคเดฟเดจเดพเตฝ, เด เดฒเตเดเตเดเตเดทเดจเดฟเดฒเดพเดฃเต เดเตเดกเต เดธเตเดฅเดฟเดคเดฟเดเตเดฏเตเดฏเตเดจเตเดจเดคเตเดจเตเดจเต IDA เดคเดจเตเดจเต เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดเตเดเดฟเดฒเตเดฒ. เด เดคเต เดเดพเดฐเดฃเดคเตเดคเดพเตฝ, เดฒเตเดฌเตเดฐเดฑเดฟเดฏเดฟเดฒเต เดฎเดฟเดเตเด เดเตเดกเตเดเดณเตเด เดเตเดกเดพเดฏเดฟ เดเดคเต เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดฏเตเดจเตเดจเดฟเดฒเตเดฒ, เดเดคเต เดตเดฟเดถเดเดฒเดจเด เดเตเดฑเดเตเดเต เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเดพเดเตเดเตเดจเตเดจเต. เดเดคเดพเดฃเต เดเตเดกเต เดเดจเตเดจเต เดเดเตเดเตพ IDA-เดฏเตเดเต เดชเดฑเดฏเตเดจเตเดจเต, เดเดคเดพเดฃเต เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเดคเต:
เดชเดเตเดเดฟเด เดตเตเดฏเดเตเดคเดฎเดพเดฏเดฟ 0xB144 เตฝ เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเต. sub_494C-เดฏเดฟเตฝ เดเดจเตเดคเดพเดฃเต เดเดณเตเดณเดคเต?
เดเตฝเดเตผ เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเดฟเตฝ เด เดซเดเดเตเดทเตป เดตเดฟเดณเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดฎเตเดฎเตเดชเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเด เดชเดเตเดเดฟเดเดฏเตเดเต (0xB144) เดตเดฟเดฒเดพเดธเด เดจเดฎเตเดเตเดเต เดฒเดญเดฟเดเตเดเตเด. R0-เตฝ - เด เดชเดเตเดเดฟเดเดฏเดฟเดฒเต เดธเตเดเดฟเด. เด
เดคเดพเดฏเดคเต, เดฎเตเดฒเตเดฏเด เดชเดเตเดเดฟเดเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดเตเดคเตเดคเต, LR-เดฒเตเดเตเดเต เดเตเตผเดคเตเดคเต, เดซเดฒเด
เดชเตเดเตเดฃเตเด เดตเดฟเดฒเดพเดธเด. เดจเดฎเตเดเตเดเต เดเดคเต เดเดฃเดเตเดเดพเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเดพเด: 0xB144 + [0xB144 + 8* 4] = 0xB144 + 0x120 = 0xB264. เดเดเตเดเตพ เดธเตเดตเตเดเดฐเดฟเดเตเด เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเตเดเตเดเต เดชเตเดฏเดฟ เด
เดเตเดทเดฐเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดเตเดฑเดเตเดเต เดเดชเดฏเตเดเดชเตเดฐเดฆเดฎเดพเดฏ เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเตพ เดเดพเดฃเตเดเดฏเตเด เดตเตเดฃเตเดเตเด 0xB140 เดฒเตเดเตเดเต เดชเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต:
เดเดชเตเดชเตเตพ เดชเดเตเดเดฟเดเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเตเดเดฟเด 0x20 เดเดชเดฏเตเดเดฟเดเตเดเต เดเดซเตเดธเตเดฑเตเดฑเดฟเตฝ เดเดฐเต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด เดเดฃเตเดเดพเดเตเด.
เดชเดเตเดเดฟเดเดฏเตเดเต เดตเดฒเดฟเดชเตเดชเด เด เดจเตเดธเดฐเดฟเดเตเดเต, เดเตเดกเดฟเตฝ เด เดคเตเดคเดฐเด เดจเดฟเดฐเดตเดงเดฟ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเดเตเดเตพ เดเดฃเตเดเดพเดเตเด. เดตเดฟเดฒเดพเดธเดเตเดเตพ เดธเตเดตเดฎเตเดงเดฏเดพ เดเดฃเดเตเดเดพเดเตเดเดพเดคเต, เดเดคเต เดเดเตเดเดจเตเดฏเตเดเตเดเดฟเดฒเตเด เดธเตเดตเดฏเดฎเตเดต เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเดฎเต เดเดจเตเดจ เดเตเดฆเตเดฏเด เดเดฏเตผเดจเตเดจเตเดตเดฐเตเดจเตเดจเต. เดเตเดเดพเดคเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเดณเตเด เดเดกเดฟเดเดฏเดฟเตฝ เดเตเดกเต เดชเดพเดเตเดเต เดเตเดฏเตเดฏเดพเดจเตเดณเตเดณ เดเดดเดฟเดตเตเด เดเดเตเดเดณเตเดเต เดธเดนเดพเดฏเดคเตเดคเดฟเดจเต เดตเดฐเตเดจเตเดจเต:
def put_unconditional_branch(source, destination):
offset = (destination - source - 4) >> 1
if offset > 2097151 or offset < -2097152:
raise RuntimeError("Invalid offset")
if offset > 1023 or offset < -1024:
instruction1 = 0xf000 | ((offset >> 11) & 0x7ff)
instruction2 = 0xb800 | (offset & 0x7ff)
patch_word(source, instruction1)
patch_word(source + 2, instruction2)
else:
instruction = 0xe000 | (offset & 0x7ff)
patch_word(source, instruction)
ea = here()
if get_wide_word(ea) == 0xb503: #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-เดจเต เดถเตเดทเดฎเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเตพ เดตเดณเดฐเต เด
เตผเดคเตเดฅเดฎเตเดณเตเดณเดคเดพเดฏเดฟ เดคเตเดจเตเดจเตเดจเตเดจเดฟเดฒเตเดฒ, เดเดคเต เดเดฐเตเดคเดฐเด เดธเตเดฅเดพเดจเดเดฒเดจเด เดชเตเดฒเตเดฏเดพเดฃเต. เดจเดฎเตเดเตเดเต 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 เดจเดฟเตผเดฆเตเดฆเตเดถเดคเตเดคเดฟเดจเต เดถเตเดทเด เดเดฐเต เดเดซเตโเดธเตเดฑเตเดฑเต เดเดฃเตเดเต:
เดเดเตเดเตพ 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 เดฏเตเดธเดฟ เดฌเตเดฐเตเดธเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดซเดเดเตโเดทเตป เดเตเดกเต เดฒเดญเดฟเดเตเดเต JNI_Onload.
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 เดเตเดฒเดพเดธเตเดธเดฟเดจเตเดฑเต เดชเตเดฐเต เดตเตเดฏเดเตเดคเดฎเดพเดฏเดฟ เดกเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดจเตเดจเต. เด เดซเดเดเตโเดทเดจเตเดฑเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดเดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ, เดเตปเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเดฏเตโเดค เดกเดพเดฑเตเดฑเดฏเตโเดเตเดเต เดธเดฎเดพเดจเดฎเดพเดฏ เดกเดพเดฑเตเดฑเดฏเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ, เดเดฐเต เดจเดฟเดถเตเดเดฟเดค เดฌเดซเดฑเตเด เดเดฐเต เดจเดฎเตเดชเดฑเตเด เดเตเดฎเดพเดฑเตเดจเตเดจเต. เดตเตเดฏเดเตเดคเดฎเดพเดฏเตเด, เดซเดเดเตโเดทเดจเต เดตเดฟเดณเดฟเดเตเดเดคเดฟเดจเตเดถเตเดทเด, เดฌเดซเดฑเดฟเตฝ เดเดฐเต เดกเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเดฏเตโเดค เดฒเตเตป เดเดฃเตเดเดพเดเตเด, เดเดพเดฐเดฃเด เด เดคเต เดซเดเดเตโเดทเดจเดฟเดฒเตเดเตเดเต เดเตเดฎเดพเดฑเตเดจเตเดจเต. FindClass, เดเตเดฒเดพเดธเดฟเดจเตเดฑเต เดชเตเดฐเต เดฐเดฃเตเดเดพเดฎเดคเตเดคเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเดพเดฏเดฟ เดเดเตเดเตเดเตเดจเตเดจเต. เด เดคเดฟเดจเดพเตฝ, เดฌเดซเดฑเดฟเดจเตเดฑเต เดตเดฒเตเดชเตเดชเดฎเต เดตเดฐเดฟเดฏเตเดเต เดจเตเดณเดฎเต เดเดฃเต เดจเดฎเตเดชเตผ. เดเตเดฒเดพเดธเตเดธเดฟเดจเตเดฑเต เดชเตเดฐเต เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเดพเด, เดจเดฎเตเดฎเตพ เดถเดฐเดฟเดฏเดพเดฏ เดฆเดฟเดถเดฏเดฟเดฒเดพเดฃเต เดชเตเดเตเดจเตเดจเดคเตเดจเตเดจเต เด เดคเต เดจเดฎเตเดฎเตเดเต เดชเดฑเดฏเตเด. เดเดจเตเดคเดพเดฃเต เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเดคเตเดจเตเดจเต เดจเดฎเตเดเตเดเต เดธเตเดเตเดทเตเดฎเดฎเดพเดฏเดฟ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเด 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@" (เดเดคเตเดฐเต เดเตเดฏเดพเดฃเตเดจเตเดจเต เดเดนเดฟเดเตเดเดพเตป เดเดณเตเดชเตเดชเดฎเดพเดฃเต), เดฎเดฑเตเดฑเตเดจเตเดจเดฟเตฝ เดเตปเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเดฏเตเดค เดกเดพเดฑเตเดฑ เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เด เดเตเดคเตเดคเดคเดพเดฏเดฟ, เดฐเดฃเตเดเต เดตเดธเตเดคเตเดเตเดเดณเตเด เดเดฐเต เดจเดฟเดถเตเดเดฟเดค เดเดเดจเดฏเดฟเตฝ เดธเตเดฅเดพเดชเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เด เดคเต เดซเดเดเตเดทเดจเดฟเดฒเตเดเตเดเต เดเตเดฎเดพเดฑเตเดจเตเดจเต เดธเดฌเต_6115 เดธเดฟ. เด เดเดเดจเดฏเดฟเตฝ เดฎเตเดฒเตเดฏเด 3 เดเดณเตเดณ เดเดฐเต เดซเตเตฝเดกเตเด เด เดเดฏเดพเดณเดชเตเดชเตเดเตเดคเตเดคเดพเด. เด เดเดเดจเดฏเตเดเตเดเต เดเดจเตเดคเต เดธเดเดญเดตเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดจเดฎเตเดเตเดเต เดจเตเดเตเดเดพเด.
int __fastcall sub_611B4(struc_1 *a1, _DWORD *a2)
{
int v3; // lr
unsigned int v4; // r1
int v5; // r0
int v6; // r1
int result; // r0
int v8; // r0
*a2 = 820000;
if ( a1 )
{
v3 = a1->field_14;
if ( v3 )
{
v4 = a1->field_4;
if ( v4 < 0x19 )
{
switch ( v4 )
{
case 0u:
v8 = sub_6419C(a1->field_0, a1->field_10, v3);
goto LABEL_17;
case 3u:
v8 = sub_6364C(a1->field_0, a1->field_10, v3);
goto LABEL_17;
case 0x10u:
case 0x11u:
case 0x12u:
v8 = sub_612F4(
a1->field_0,
v4,
*(_QWORD *)&a1->field_8,
*(_QWORD *)&a1->field_8 >> 32,
a1->field_10,
v3,
a2);
goto LABEL_17;
case 0x14u:
v8 = sub_63A28(a1->field_0, v3);
goto LABEL_17;
case 0x15u:
sub_61A60(a1->field_0, v3, a2);
return result;
case 0x16u:
v8 = sub_62440(a1->field_14);
goto LABEL_17;
case 0x17u:
v8 = sub_6226C(a1->field_10, v3);
goto LABEL_17;
case 0x18u:
v8 = sub_63530(a1->field_14);
LABEL_17:
v6 = 0;
if ( v8 )
{
*a2 = 0;
v6 = v8;
}
return v6;
default:
LOWORD(v5) = 28032;
goto LABEL_5;
}
}
}
}
LOWORD(v5) = -27504;
LABEL_5:
HIWORD(v5) = 13;
v6 = 0;
*a2 = v5;
return v6;
}
เดธเตเดตเดฟเดเตเดเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเตผ เดเดฐเต เดเดเดจเดพ เดซเตเตฝเดกเดพเดฃเต, เด เดคเต เดฎเตเดฎเตเดชเต เดฎเตเดฒเตเดฏเด 3 เด เดธเตเตป เดเตเดฏเตโเดคเดฟเดฐเตเดจเตเดจเต. เดเตเดธเต 3 เดจเตเดเตเดเตเด: เดซเดเดเตโเดทเดจเดฟเดฒเตเดเตเดเต เดธเดฌเต_6364 เดธเดฟ เดฎเตเตป เดซเดเดเตเดทเดจเดฟเตฝ เดเตเตผเดคเตเดค เดเดเดจเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดเตเดฎเดพเดฑเตเดจเตเดจเต, เด เดคเดพเดฏเดคเต เดเตเดฏเตเด เดเตปเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเดฏเตเดค เดกเดพเดฑเตเดฑเดฏเตเด. เดจเดฟเดเตเดเตพ เดธเตเดเตเดทเตเดฎเดฎเดพเดฏเดฟ เดจเตเดเตเดเดฟเดฏเดพเตฝ เดธเดฌเต_6364 เดธเดฟ, เดจเดฟเดเตเดเตพเดเตเดเต เด เดคเดฟเตฝ RC4 เด เตฝเดเตเดฐเดฟเดคเด เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดฏเดพเตป เดเดดเดฟเดฏเตเด.
เดเดเตเดเตพเดเตเดเต เดเดฐเต เด เตฝเดเตเดฐเดฟเดคเดตเตเด เดเดฐเต เดเตเดฏเตเด เดเดฃเตเดเต. เดเตเดฒเดพเดธเตเดธเดฟเดจเตเดฑเต เดชเตเดฐเต เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเดพเด. เดธเดเดญเดตเดฟเดเตเดเดคเต เดเดคเดพ: com/taobao/wireless/security/adapter/JNICLibrary. เดเตเดณเตเดณเดพเด! เดเดเตเดเตพ เดถเดฐเดฟเดฏเดพเดฏ เดชเดพเดคเดฏเดฟเดฒเดพเดฃเต.
เดเดฎเดพเตปเดกเต เดเตเดฐเต
เดเดจเดฟ เดจเดฎเตเดฎเตพ เดเดฐเต เดตเตเดฒเตเดฒเตเดตเดฟเดณเดฟ เดเดฃเตเดเตเดคเตเดคเดฃเด เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดธเตเดตเดฆเตเดถเดฟเดเตพ, เด เดคเต เดซเดเดเตเดทเดจเดฟเดฒเตเดเตเดเต เดจเดฎเตเดฎเต เดเตเดฃเตเดเดฟเดเตเดเดพเดฃเดฟเดเตเดเตเด doCommandNative. เดเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจ เดซเดเดเตเดทเดจเตเดเตพ เดจเตเดเตเดเดพเด JNI_Onload, เดเดเตเดเตพ เด เดคเต เดเดฃเตเดเตเดคเตเดคเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต เดเดช_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_Onload.
เดฎเตเดจเตเดจเต เด
เดเตเดเดเตเดเตพ เดฎเดฐเดคเตเดคเดฟเดฒเต เดชเดพเดคเดฏเต เดเตปเดเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเต. เดฎเดฐเดคเตเดคเดฟเดจเตเดฑเต เดเดฐเต เดเดฒเดฏเดฟเดฒเตเด เด
เดจเตเดฌเดจเตเดง เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเดฑเต เดชเตเดเตเดเต เดเตเดฏเตเดค เดตเดฟเดฒเดพเดธเด เด
เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเต เดชเดพเดฐเดจเตเดฑเต เดจเตเดกเดฟเดฒเดพเดฃเต. เดเดชเดฏเตเดเดฟเดเตเด เดเดฒเตเดฒเดพ เดเดเดจเดเดณเตเด เดจเดฟเดเตเดเตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเดฟเดฏเดพเตฝ, เดเดเตเดเตพเดเตเดเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดซเดเดเตเดทเตป เดเตเดฐเตเดฏเดฟเตฝ เดเตเตผเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเตเดกเดฟเดฒเต เดธเตเดฅเดฒเด เดเดฃเตเดเตเดคเตเดคเตเดจเตเดจเดคเต เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเตเดณเตเดณ เดเดพเดฐเตเดฏเดฎเดฒเตเดฒ (เดเดคเดฟเดจเดเด เดตเดฒเดฟเดฏเตเดฐเต เดฒเตเดเดจเด เดตเตเตผเดเตเดเดพเดคเดฟเดฐเดฟเดเตเดเดพเตป เดเดเตเดเตพ เด
เดตเดฏเต เดตเดฟเดตเดฐเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ).
เดเตเดเตเดคเตฝ เด เดตเตเดฏเดเตเดคเดค
เดเตเดฐเดพเดซเดฟเดเต เดกเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดฃเตเด เดซเดเดเตโเดทเดจเตเดฑเต เดตเดฟเดฒเดพเดธเด เดเดเตเดเตพเดเตเดเต เดฒเดญเดฟเดเตเดเต: 0x5F1AC. เดเดจเตเดจเดพเตฝ เดธเดจเตเดคเตเดทเดฟเดเตเดเดพเตป เดตเดณเดฐเต เดจเตเดฐเดคเตเดคเต เดคเดจเตเดจเต: เดฏเตเดธเดฟ เดฌเตเดฐเตเดธเดฑเดฟเดจเตเดฑเต เดกเตเดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดเดเตเดเตพเดเตเดเดพเดฏเดฟ เดฎเดฑเตเดฑเตเดฐเต เดธเตผเดชเตเดฐเตเดธเต เดคเดฏเตเดฏเดพเดฑเดพเดเตเดเดฟเดฏเดฟเดเตเดเตเดฃเตเดเต.
เดเดพเดต เดเตเดกเดฟเตฝ เดฐเตเดชเตเดเดฐเดฟเดเตเด เด
เดฑเตเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดฒเดญเดฟเดเตเด เดถเตเดทเด, เดจเดฎเตเดเตเดเต เดฒเดญเดฟเดเตเดเตเด
0x4D070 เดเดจเตเดจ เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเตเดณเตเดณ เดซเดเดเตโเดทเดจเดฟเดฒเตเดเตเดเต. เดเดตเดฟเดเต เดฎเดฑเตเดฑเตเดฐเต เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดเตเดกเต เด
เดตเตเดฏเดเตเดคเดค เดจเดฎเตเดฎเต เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
เดเดเตเดเตพ R7, R4 เดเดจเตเดจเดฟเดตเดฏเดฟเตฝ เดฐเดฃเตเดเต เดธเตเดเดฟเดเดเตพ เดธเตเดฅเดพเดชเดฟเดเตเดเต:
เดเดเตเดเตพ เดเดฆเตเดฏ เดธเตเดเดฟเด R11 เดฒเตเดเตเดเต เดฎเดพเดฑเตเดฑเตเดจเตเดจเต:
เดเดฐเต เดชเดเตเดเดฟเดเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฐเต เดตเดฟเดฒเดพเดธเด เดฒเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดเดฐเต เดธเตเดเดฟเด เดเดชเดฏเตเดเดฟเดเตเดเตเด:
เดเดฆเตเดฏเดคเตเดคเต เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเตเดเตเดเต เดชเตเดฏเดคเดฟเดจเตเดถเตเดทเด, เดฐเดฃเตเดเดพเดฎเดคเตเดคเต เดธเตเดเดฟเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต, เด
เดคเต R4-เตฝ เดเดฃเต. เดชเดเตเดเดฟเดเดฏเดฟเตฝ 230 เดเดเดเดเตเดเตพ เดเดฃเตเดเต.
เด เดคเดฟเดจเต เดเดจเตเดคเต เดเตเดฏเตเดฏเดฃเด? เดเดคเตเดฐเต เดธเตเดตเดฟเดเตเดเต เดเดฃเตเดจเตเดจเต เดจเดฟเดเตเดเตพเดเตเดเต IDA-เดจเตเดเต เดชเดฑเดฏเดพเด: เดเดกเดฟเดฑเตเดฑเต -> เดฎเดฑเตเดฑเตเดณเตเดณเดต -> เดธเตเดตเดฟเดเตเดเต เดเดกเดฟเดฏเด เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเด.
เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดเดพเดเตเดจเตเดจ เดเตเดกเต เดญเดฏเดเตเดเดฐเดฎเดพเดฃเต. เดชเดเตเดทเต, เด
เดคเดฟเดจเตเดฑเต เดเดพเดเตเดเดฟเดฒเตเดเต เดเดเดจเตเดจเตเดชเตเดเตเดฎเตเดชเตเตพ, เดเดเตเดเตพเดเตเดเต เดเดคเดฟเดจเดเด เดชเดฐเดฟเดเดฟเดคเดฎเดพเดฏ เดเดฐเต เดซเดเดเตโเดทเดจเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดฐเต เดเตเตพ เดจเดฟเดเตเดเตพเดเตเดเต เดเดพเดฃเดพเตป เดเดดเดฟเดฏเตเด เดธเดฌเต_6115 เดธเดฟ:
เดเตเดธเต 3-เตฝ RC4 เด
เตฝเดเตเดฐเดฟเดคเด เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดกเตเดเตเดฐเดฟเดชเตเดทเตป เดเดณเตเดณ เดเดฐเต เดธเตเดตเดฟเดเตเดเต เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเต. เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดซเดเดเตเดทเดจเดฟเดฒเตเดเตเดเต เดเตเดฎเดพเดฑเดฟเดฏ เดเดเดจ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต doCommandNative. เดจเดฎเตเดเตเดเต เด
เดตเดฟเดเต เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเดคเต เดเตผเดเตเดเดพเด magicInt เดฎเตเดฒเตเดฏเด 16. เดเดเตเดเตพ เด
เดจเตเดฌเดจเตเดง เดเตเดธเต เดจเตเดเตเดเตเดจเตเดจเต - เดจเดฟเดฐเดตเดงเดฟ เดธเดเดเตเดฐเดฎเดฃเดเตเดเตพเดเตเดเต เดถเตเดทเด เด
เตฝเดเตเดฐเดฟเดคเด เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดฏเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดเตเดกเต เดเดเตเดเตพ เดเดฃเตเดเตเดคเตเดคเตเดจเตเดจเต.
เดเดคเดพเดฃเต AES!
เด เตฝเดเตเดฐเดฟเดคเด เดจเดฟเดฒเดตเดฟเดฒเตเดฃเตเดเต, เด เดคเดฟเดจเตเดฑเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดจเตเดเตเด เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เด เดตเดถเตเดทเดฟเดเตเดเตเดจเตเดจเดคเต: เดฎเตเดกเต, เดเต, เดเดฐเตเดชเดเตเดทเต, เดเดจเตเดทเตเดฏเดฒเตเดธเตเดทเตป เดตเตเดเตเดฑเตเดฑเตผ (เด เดคเดฟเดจเตเดฑเต เดธเดพเดจเตเดจเดฟเดงเตเดฏเด เดเดเดเดธเต เด เตฝเดเตเดฐเดฟเดคเดคเตเดคเดฟเดจเตเดฑเต เดเดชเตเดชเดฑเตเดฑเตเดฑเดฟเดเดเต เดฎเตเดกเดฟเดจเต เดเดถเตเดฐเดฏเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต). เดซเดเดเตเดทเตป เดเตเดณเดฟเดจเต เดฎเตเดฎเตเดชเต เด เดตเดฐเตเดฎเดพเดฏเตเดณเตเดณ เดเดเดจ เดเดตเดฟเดเตเดฏเตเดเตเดเดฟเดฒเตเด เดฐเตเดชเตเดเดฐเดฟเดเตเดเดฃเด เดธเดฌเต_6115 เดธเดฟ, เดเดจเตเดจเดพเตฝ เดเตเดกเดฟเดจเตเดฑเต เด เดญเดพเดเด เดชเตเดฐเดคเตเดฏเตเดเดฟเดเตเดเต เด เดตเตเดฏเดเตเดคเดฎเดพเดฃเต, เด เดคเดฟเดจเดพเตฝ เดเตเดกเต เดชเดพเดเตเดเต เดเตเดฏเตเดฏเดพเดจเตเดณเตเดณ เดเดถเดฏเด เดเดฏเตผเดจเตเดจเตเดตเดฐเตเดจเตเดจเต, เด เดเตเดเดจเต เดกเตเดเตเดฐเดฟเดชเตเดทเตป เดซเดเดเตเดทเดจเตเดฑเต เดเดฒเตเดฒเดพ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเดณเตเด เดเดฐเต เดซเดฏเดฒเดฟเดฒเตเดเตเดเต เดตเดฒเดฟเดเตเดเตเดฑเดฟเดฏเดชเตเดชเตเดเตเด.
เดชเดพเดเตเดเต
เด เดธเดเดฌเตเดฒเดฟ เดญเดพเดทเดฏเดฟเตฝ เดเดฒเตเดฒเดพ เดชเดพเดเตเดเต เดเตเดกเตเดเดณเตเด เดธเตเดตเดฎเตเดงเดฏเดพ เดเดดเตเดคเดพเดคเดฟเดฐเดฟเดเตเดเดพเตป, เดจเดฟเดเตเดเตพเดเตเดเต เดเตปเดกเตเดฐเตเดฏเดฟเดกเต เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเดพเด, เดเดเตเดเดณเตเดเต เดกเตเดเตเดฐเดฟเดชเตเดทเตป เดซเดเดเตโเดทเดจเตเดฑเต เด เดคเต เดเตปเดชเตเดเตเดเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดซเดเดเตเดทเตป เด เดตเดฟเดเต เดเดดเตเดคเตเดเดฏเตเด เดเดฐเต เดซเดฏเดฒเดฟเดฒเตเดเตเดเต เดเดดเตเดคเตเดเดฏเตเด เดเตเดฏเตเดฏเดพเด, เดคเตเดเตผเดจเตเดจเต เดเดเดชเตเดฒเตผ เดเตเดฏเตเดฏเตเดจเตเดจ เดเตเดกเต เดชเดเตผเดคเตเดคเดฟ เดเดเตเดเดฟเดเตเดเตเด. เดธเตเดทเตเดเดฟเดเตเดเตเด.
เดฏเตเดธเดฟ เดฌเตเดฐเตเดธเตผ เดเตเดฎเดฟเดฒเต เดเดเตเดเดณเตเดเต เดธเตเดนเตเดคเตเดคเตเดเตเดเดณเตเด เดเตเดกเต เดเตเตผเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดธเตเดเดฐเตเดฏเด เดเดฑเตเดฑเตเดเตเดคเตเดคเต. เดเดฐเต เดซเดเดเตโเดทเดจเตเดฑเตเดฏเตเด เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ เดจเดฎเตเดเตเดเต เดเดพเตผเดฌเตเดเต เดเตเดกเต เดเดฃเตเดเตเดจเตเดจเต เดเตผเดเตเดเดพเด, เด เดคเต เดฎเดฑเตเดฑเตเดคเตเดเตเดเดฟเดฒเตเด เดเดชเดฏเตเดเดฟเดเตเดเต เดเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด. เดตเดณเดฐเต เดธเตเดเดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฃเต ๐ เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดพเตผเดเตเดฑเตเดฑเต เดซเดเดเตเดทเดจเตเดฑเต เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ เดเดฐเต เดซเดฏเดฒเดฟเดฒเตเดเตเดเต เดเดฒเตเดฒเดพ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเดณเตเด เดธเดเดฐเดเตเดทเดฟเดเตเดเตเดจเตเดจ เดเตเดกเดฟเดจเต เดฎเดคเดฟเดฏเดพเดฏ เดเดเดฎเดฟเดฒเตเดฒ. เดเดจเดฟเดเตเดเต เด เดคเดฟเดจเต เดญเดพเดเดเตเดเดณเดพเดฏเดฟ เดตเดฟเดญเดเดฟเดเตเดเตเดเดฏเตเด เด เดฏเตฝ เดซเดเดเตเดทเดจเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเดพเดฒเดฟเดจเตเดฏ เดฌเตเดฒเตเดเตเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดฃเตเดเดฟเดตเดจเตเดจเต. เดเดเต เดจเดพเดฒเต เดญเดพเดเดเตเดเตพ เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเต.
เดเดฆเตเดฏ เดญเดพเดเด:
ARM เดเตผเดเตเดเดฟเดเตเดเตเดเดฑเดฟเตฝ, เดเดฆเตเดฏเดคเตเดคเต เดจเดพเดฒเต เดซเดเดเตเดทเตป เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ R0-R3 เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเตเดเดณเดฟเดฒเตเดเต เดเดเดจเตเดจเตเดชเตเดเตเดจเตเดจเต, เดฌเดพเดเตเดเดฟเดฏเตเดณเตเดณเดต, เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดเดฃเตเดเตเดเตเดเดฟเตฝ, เดธเตเดฑเตเดฑเดพเดเตเดเดฟเดฒเตเดเต เดเดเดจเตเดจเตเดชเตเดเตเดจเตเดจเต. เดเตฝเดเตผ เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดฑเดฟเดเตเดเตเตบ เดตเดฟเดฒเดพเดธเด เดเตพเดเตเดเตเดณเตเดณเตเดจเตเดจเต. เดเดคเตเดฒเตเดฒเดพเด เดธเดเดฐเดเตเดทเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต, เด
เดคเตเดตเดดเดฟ เดเดเตเดเตพ เด
เดคเดฟเดจเตเดฑเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดเดชเตเดเตเดทเดฟเดเตเดเดคเดฟเดจเตเดถเตเดทเด เดซเดเดเตเดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเด. เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเดฟเตฝ เดเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดเดฒเตเดฒเดพ เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเตเดเดณเตเด เดธเดเดฐเดเตเดทเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต, เด
เดคเดฟเดจเดพเตฝ เดเดเตเดเตพ PUSH.W {R0-R10,LR} เดเตเดฏเตเดฏเตเดจเตเดจเต. R7-เตฝ, เดธเตเดฑเตเดฑเดพเดเตเดเต เดตเดดเดฟ เดซเดเดเตเดทเดจเดฟเดฒเตเดเตเดเต เดชเดพเดธเดพเดเตเดเดฟเดฏ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเดณเตเดเต เดฒเดฟเดธเตเดฑเตเดฑเดฟเดจเตเดฑเต เดตเดฟเดฒเดพเดธเด เดจเดฎเตเดเตเดเต เดฒเดญเดฟเดเตเดเตเด.
เดซเดเดเตเดทเตป เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต fopen เดจเดฎเตเดเตเดเต เดซเดฏเตฝ เดคเตเดฑเดเตเดเดพเด /data/local/tmp/aes "ab" เดฎเตเดกเดฟเตฝ
เด
เดคเดพเดฏเดคเต เดเตเดเตเดเดฟเดเตเดเตเตผเดเตเดเดฒเดฟเดจเต. R0-เตฝ เดเดเตเดเตพ เดซเดฏเดฒเดฟเดจเตเดฑเต เดชเตเดฐเดฟเดจเตเดฑเต เดตเดฟเดฒเดพเดธเด เดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเต, R1-เตฝ - เดฎเตเดกเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจ เดตเดฐเดฟเดฏเตเดเต เดตเดฟเดฒเดพเดธเด. เดเดตเดฟเดเต เดเดพเตผเดฌเตเดเต เดเตเดกเต เด
เดตเดธเดพเดจเดฟเดเตเดเตเดจเตเดจเต, เด
เดคเดฟเดจเดพเตฝ เดเดเตเดเตพ เด
เดเตเดคเตเดค เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดฒเตเดเตเดเต เดจเตเดเตเดเตเดจเตเดจเต. เดเดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเต เดคเตเดเดฐเตเดจเตเดจเดคเดฟเดจเต, เดฎเดพเดฒเดฟเดจเตเดฏเดคเตเดคเต เดฎเดฑเดฟเดเดเดจเตเดจเต เดซเดเดเตเดทเดจเตเดฑเต เดฏเดฅเดพเตผเดคเตเดฅ เดเตเดกเดฟเดฒเตเดเตเดเตเดณเตเดณ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด เดเดเตเดเตพ เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ เดเดเตเดเต, เดฎเดพเดฒเดฟเดจเตเดฏเดคเตเดคเดฟเดจเต เดชเดเดฐเด เดเดเตเดเตพ เดชเดพเดเตเดเดฟเดจเตเดฑเต เดคเตเดเตผเดเตเด เดเตเตผเดเตเดเตเดจเตเดจเต.
เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจเต fopen.
เดซเดเดเตเดทเดจเตเดฑเต เดเดฆเตเดฏ เดฎเตเดจเตเดจเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ AES เดคเดฐเด เดเดฃเตเดเต int. เดเดเตเดเตพ เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเตเดเตพ เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ เดธเตเดฑเตเดฑเดพเดเตเดเดฟเดฒเตเดเตเดเต เดธเดเดฐเดเตเดทเดฟเดเตเดเดคเดฟเดจเดพเตฝ, เดจเดฎเตเดเตเดเต เดซเดเดเตเดทเตป เดชเดพเดธเดพเดเตเดเดพเด fwrite เดธเตเดฑเตเดฑเดพเดเตเดเดฟเตฝ เด เดตเดฐเตเดเต เดตเดฟเดฒเดพเดธเดเตเดเตพ.
เด
เดเตเดคเตเดคเดคเดพเดฏเดฟ เดจเดฎเตเดเตเดเต เดฎเตเดจเตเดจเต เดเดเดจเดเตพ เดเดฃเตเดเต, เด
เดคเดฟเตฝ เดกเดพเดฑเตเดฑ เดตเดฒเตเดชเตเดชเดตเตเด เดเต, เดเดจเตเดทเตเดฏเดฒเตเดธเตเดทเตป เดตเตเดเตเดฑเตเดฑเตผ, เดเตปเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเดฏเตเดค เดกเดพเดฑเตเดฑ เดเดจเตเดจเดฟเดตเดฏเตเดเตเดเตเดณเตเดณ เดกเดพเดฑเตเดฑเดฏเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเดฑเตเด เด
เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
เด
เดตเดธเดพเดจเด, เดซเดฏเตฝ เด
เดเดฏเตเดเตเดเตเด, เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเตเดเตพ เดชเตเดจเดเดธเตเดฅเดพเดชเดฟเดเตเดเตเด, เดฏเดฅเดพเตผเดคเตเดฅ เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดฒเตเดเตเดเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด เดเตเดฎเดพเดฑเตเด AES.
เดชเดพเดเตเดเต เดเตเดฏเตโเดค เดฒเตเดฌเตเดฐเดฑเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดเตเดเตพ เดเดฐเต APK เดถเตเดเดฐเดฟเดเตเดเตเดเดฏเตเด เดเดชเตเดชเดฟเดเตเดเดฏเตเด เดเดชเดเดฐเดฃเดคเตเดคเดฟเดฒเตเดเตเดเต/เดเดฎเตเดฒเตเดฑเตเดฑเดฑเดฟเดฒเตเดเตเดเต เด เดชเตโเดฒเตเดกเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เดเดเตเดเดณเตเดเต เดกเดเดชเต เดธเตเดทเตโเดเดฟเดเตเดเดชเตเดชเตเดเตเดจเตเดจเดคเตเด เดงเดพเดฐเดพเดณเด เดกเดพเดฑเตเดฑ เด เดตเดฟเดเต เดเดดเตเดคเตเดจเตเดจเดคเตเด เดเดเตเดเตพ เดเดพเดฃเตเดจเตเดจเต. เดฌเตเดฐเตเดธเตผ เดเตเดฐเดพเดซเดฟเดเตเดเดฟเดจเต เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ เดเตปเดเตเดฐเดฟเดชเตเดทเตป เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต, เดเตเดเดพเดคเต เดเดฒเตเดฒเดพ เดเตปเดเตเดฐเดฟเดชเตเดทเดจเตเดเดณเตเด เดชเตเดฐเดธเตเดคเตเดค เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดฒเตเดเต เดเดเดจเตเดจเตเดชเตเดเตเดจเตเดจเต. เดเดจเตเดจเดพเตฝ เดเดฟเดฒ เดเดพเดฐเดฃเดเตเดเดณเดพเตฝ เดเดตเดถเตเดฏเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดเดฒเตเดฒ, เดเดตเดถเตเดฏเดฎเดพเดฏ เด เดญเตเดฏเตผเดคเตเดฅเดจ เดเตเดฐเดพเดซเดฟเดเตเดเดฟเตฝ เดฆเตเดถเตเดฏเดฎเดพเดเดฟเดฒเตเดฒ. เดเดตเดถเตเดฏเดฎเดพเดฏ เด เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดเดคเตเดคเดพเตป เดฏเตเดธเดฟ เดฌเตเดฐเตเดธเตผ เดฐเตเดชเดเตฝเดชเตเดชเดจ เดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดตเดฐเต เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเดพเดคเดฟเดฐเดฟเดเตเดเดพเตป, เดจเตเดฐเดคเตเดคเต เดฒเดญเดฟเดเตเด เดธเตเตผเดตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดเตปเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเดฏเตเดค เดชเตเดฐเดคเดฟเดเดฐเดฃเด เดเดเตเดคเตเดคเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดตเตเดฃเตเดเตเด เดชเดพเดเตเดเต เดเตเดฏเตเดฏเดพเด: เดชเตเดฐเดงเดพเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเดฑเต 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โ, เดเดฐเต เดจเดฎเตเดชเตผ เดเดจเตเดจเดฟเดตเดฏเตเดเตเดเต เดธเดฎเดพเดจเดฎเดพเดฏ เดเตผเดเตเดเตเดตเต URL เดเดเตเดเตพ เดเดพเดฃเตเดจเตเดจเต. เดเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต: เดเตผเดเตเดเตเดตเดฟเดจเตเดฑเต MD5 เดธเดฎเดพเดจเดฎเดพเดฃเต, เดชเดพเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดพเดคเตเดค เดฒเตเดฌเตเดฐเดฑเดฟเดฏเตเดเต เดตเดฒเตเดชเตเดชเด เดเดจเตเดจเตเดคเดจเตเดจเตเดฏเดพเดฃเต. เด เดฒเตเดฌเตเดฐเดฑเดฟ เดชเดพเดเตเดเต เดเตเดฏเตเดคเต เดฌเตเดฐเตเดธเดฑเดฟเดจเต เดจเตฝเดเดพเตป เดเดเตเดเตพ เดถเตเดฐเดฎเดฟเดเตเดเตเดจเตเดจเต. เดเดเตเดเดณเตเดเต เดชเดพเดเตเดเต เดเตเดฏเตโเดค เดฒเตเดฌเตเดฐเดฑเดฟ เดฒเตเดกเตเดเตเดฏเตโเดคเตเดตเตเดจเตเดจเต เดเดพเดฃเดฟเดเตเดเดพเตป, โPWNED!โ เดเดจเตเดจ เดตเดพเดเดเด เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต SMS เดธเตเดทเตโเดเดฟเดเตเดเดพเดจเตเดณเตเดณ เดเดฐเต เดเดฆเตเดฆเตเดถเตเดฏเด เดเดเตเดเตพ เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเด. เดธเตเตผเดตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฐเดฃเตเดเต เดชเตเดฐเดคเดฟเดเดฐเดฃเดเตเดเตพ เดเดเตเดเตพ เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเดเตเดเตเด:
เดฌเตเดฐเตเดธเตผ เดจเดฟเดฐเดตเดงเดฟ เดคเดตเดฃ เดเตผเดเตเดเตเดตเต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเดจเตเดจเต, เด
เดคเดฟเดจเตเดถเตเดทเด เด
เดคเต เดเดฐเต เดชเดฟเดถเดเต เดจเตฝเดเตเดจเตเดจเต. เดชเตเดฐเดคเตเดฏเดเตเดทเดคเตเดคเดฟเตฝ เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด
เด
เดตเตป เดเดทเตเดเดชเตเดชเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. เด เดฎเดเตเดเดฟเดฏ เดซเตเตผเดฎเดพเดฑเตเดฑเต เดตเดฟเดถเดเดฒเดจเด เดเตเดฏเตเดคเดคเดฟเดจเตเดฑเต เดซเดฒเดฎเดพเดฏเดฟ, เดธเตเตผเดตเตผ เดเตผเดเตเดเตเดตเดฟเดจเตเดฑเต เดตเดฒเตเดชเตเดชเดตเตเด เดเตเดฎเดพเดฑเตเดจเตเดจเตเดตเตเดจเตเดจเต เดฎเดจเดธเตเดธเดฟเดฒเดพเดฏเดฟ:
เดเดคเต LEB128-เตฝ เดเตปเดเตเดกเต เดเตเดฏเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดชเดพเดเตเดเดฟเดจเต เดถเตเดทเด, เดฒเตเดฌเตเดฐเดฑเดฟเดฏเตเดฎเดพเดฏเตเดณเตเดณ เดเตผเดเตเดเตเดตเดฟเดจเตเดฑเต เดตเดฒเตเดชเตเดชเด เด
เดฒเตเดชเด เดฎเดพเดฑเดฟ, เด
เดคเดฟเดจเดพเตฝ เดเตผเดเตเดเตเดตเต เดตเดณเดเตเดเตเดเดฟเดเตเดเต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดคเดคเดพเดฏเดฟ เดฌเตเดฐเตเดธเตผ เดเดฃเดเตเดเดพเดเตเดเดฟ, เดจเดฟเดฐเดตเดงเดฟ เดถเตเดฐเดฎเดเตเดเตพเดเตเดเต เดถเตเดทเด เด
เดคเต เดเดฐเต เดชเดฟเดถเดเต เดเดฑเดฟเดเตเดเต.
เดเดเตเดเตพ เดเตผเดเตเดเตเดตเดฟเดจเตเดฑเต เดตเดฒเตเดชเตเดชเด เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต ... เดเดชเตเดชเด - เดตเดฟเดเดฏเด! ๐ เดซเดฒเด เดตเตเดกเดฟเดฏเตเดฏเดฟเตฝ เดเดฃเตเดเต.
เด เดจเดจเตเดคเดฐเดซเดฒเดเตเดเดณเตเด เดกเตเดตเดฒเดชเตเดชเตผ เดชเตเดฐเดคเดฟเดเดฐเดฃเดตเตเด
เด เดคเตเดชเตเดฒเต เดคเดจเตเดจเต, เดนเดพเดเตเดเตผเดฎเดพเตผเดเตเดเต เดฏเตเดธเดฟ เดฌเตเดฐเตเดธเดฑเดฟเดจเตเดฑเต เดธเตเดฐเดเตเดทเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดค เดซเตเดเตเดเตผ เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเดทเตเดฆเตเดฐเดเดฐเดฎเดพเดฏ เดฒเตเดฌเตเดฐเดฑเดฟเดเตพ เดตเดฟเดคเดฐเดฃเด เดเตเดฏเตเดฏเดพเดจเตเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเดจเตเด เดเดดเดฟเดฏเตเด. เด เดฒเตเดฌเตเดฐเดฑเดฟเดเตพ เดฌเตเดฐเตเดธเดฑเดฟเดจเตเดฑเต เดชเดถเตเดเดพเดคเตเดคเดฒเดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเด, เด เดคเดฟเดจเดพเตฝ เด เดตเตผเดเตเดเต เด เดคเดฟเดจเตเดฑเต เดเดฒเตเดฒเดพ เดธเดฟเดธเตเดฑเตเดฑเด เด เดจเตเดฎเดคเดฟเดเดณเตเด เดฒเดญเดฟเดเตเดเตเด. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดซเดฟเดทเดฟเดเดเต เดตเดฟเตปเดกเตเดเตพ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดเตเดเดพเดจเตเดณเตเดณ เดเดดเดฟเดตเต, เดเตเดเดพเดคเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดธเดเดญเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดฒเตเดเดฟเดจเตเดเตพ, เดชเดพเดธเตโเดตเตเดกเตเดเตพ, เดเตเดเตเดเดฟเดเตพ เดเดจเตเดจเดฟเดตเดฏเตเตพเดชเตเดชเตเดเต เดเดฑเดเตเดเต เดเตเดจเตเดธเต เดธเตโเดเตเดตเดฟเดฑเดฒเดฟเดจเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดจ เดซเดฏเดฒเตเดเดณเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดเตโเดธเดธเตเดธเต.
เดเดเตเดเตพ UC เดฌเตเดฐเตเดธเดฑเดฟเดจเตเดฑเต เดกเตเดตเดฒเดชเตเดชเตผเดฎเดพเดฐเต เดฌเดจเตเดงเดชเตเดชเตเดเตเดเดฏเตเด เดเดเตเดเตพ เดเดฃเตเดเตเดคเตเดคเดฟเดฏ เดชเตเดฐเดถเตโเดจเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเต เด
เดตเดฐเต เด
เดฑเดฟเดฏเดฟเดเตเดเตเดเดฏเตเด เด
เดชเดเดเดธเดพเดงเตเดฏเดคเดฏเตเด เด
เดคเดฟเดจเตเดฑเต เด
เดชเดเดเดตเตเด เดเตเดฃเตเดเดฟเดเตเดเดพเดฃเดฟเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดคเต, เดชเดเตเดทเต เด
เดตเตผ เดเดเตเดเดณเตเดเต เดเดจเตเดจเตเด เดเตผเดเตเด เดเตเดฏเตเดคเดฟเดฒเตเดฒ. เด
เดคเตเดธเดฎเดฏเด, เดฌเตเดฐเตเดธเตผ เด
เดคเดฟเดจเตเดฑเต เด
เดชเดเดเดเดฐเดฎเดพเดฏ เดธเดตเดฟเดถเตเดทเดค เดตเตเดฏเดเตเดคเดฎเดพเดฏ เดเดพเดดเตเดเดฏเดฟเตฝ เดชเตเดฐเดเดเดฎเดพเดเตเดเตเดจเตเดจเดคเต เดคเตเดเตผเดจเตเดจเต. เดเดจเตเดจเดพเตฝ เด
เดชเดเดเดธเดพเดงเตเดฏเดคเดฏเตเดเต เดตเดฟเดถเดฆเดพเดเดถเดเตเดเตพ เดเดเตเดเตพ เดตเตเดณเดฟเดชเตเดชเตเดเตเดคเตเดคเดฟเดเตเดเดดเดฟเดเตเดเดพเตฝ, เดฎเตเดฎเตเดชเดคเตเดคเตเดชเตเดชเตเดฒเต เด
เดตเดเดฃเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ. เดฎเดพเตผเดเตเดเต 27 เดเดฏเดฟเดฐเตเดจเตเดจเต
HTTPS เดตเดดเดฟ เดธเตเตผเดตเดฑเดฟเดฒเตเดเตเดเต เดเดเตโเดธเดธเต เดเตเดฏเตเดค UC เดฌเตเดฐเตเดธเดฑเดฟเดจเตเดฑเต เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต 12.10.9.1193 เดชเตเดฑเดคเตเดคเดฟเดฑเดเตเดเดฟ:
เดเตเดเดพเดคเต, "เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดคเดฟเดจเต" เดถเตเดทเดตเตเด เด เดฒเตเดเดจเด เดเดดเตเดคเตเดจเตเดจ เดธเดฎเดฏเด เดตเดฐเต, เดเดฐเต เดฌเตเดฐเตเดธเดฑเดฟเตฝ เดเดฐเต PDF เดคเตเดฑเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเดคเต "เดถเตเดถเต, เดเดจเตเดคเต เดเตเดดเดชเตเดชเด เดธเดเดญเดตเดฟเดเตเดเต!" เดเดจเตเดจ เดตเดพเดเดเดคเตเดคเดฟเตฝ เดเดฐเต เดชเดฟเดถเดเต เดธเดจเตเดฆเตเดถเดคเตเดคเดฟเดจเต เดเดพเดฐเดฃเดฎเดพเดฏเดฟ. เดเดฐเต PDF เดคเตเดฑเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเดฎเตเดชเตเตพ เดธเตเตผเดตเดฑเดฟเดฒเตเดเตเดเต เดเดฐเต เด
เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดเดคเตเดคเดฟเดฏเดฟเดฒเตเดฒ, เดเดจเตเดจเดพเตฝ เดฌเตเดฐเตเดธเตผ เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเดชเตเดชเตเตพ เดเดฐเต เด
เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดเดคเตเดคเดฟ, เดเดคเต Google Play เดจเดฟเดฏเดฎเดเตเดเตพ เดฒเดเดเดฟเดเตเดเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเดฌเดฟเตพ เดเตเดกเต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเดพเดจเตเดณเตเดณ เดคเตเดเตผเดเตเดเดฏเดพเดฏ เดเดดเดฟเดตเดฟเดจเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต.
เด
เดตเดฒเดเดฌเด: www.habr.com