/// <summary> /// 合并SDK初始化代码 /// </summary> /// <param name="type"></param> public new void InsertSmali(SmaliInsertType type, string insert_activity, string insert_application) { base.InsertSmali(type, insert_activity, insert_application); // Encoding enc = null; switch (type) { case SmaliInsertType.InsertSmali: { string MainActivity = string.Empty; if (insert_activity != string.Empty) MainActivity = insert_activity; else MainActivity = m_apkinfo.settings.MainActivity; MainActivity = m_apkinfo.in_smali + @"\" + MainActivity.Replace(@".", @"\") + ".smali"; enc = TxtFileEncoder.GetEncoding(MainActivity); string MainActivityContent = File.ReadAllText(MainActivity, enc); string insert_smali = string.Empty; bool ret = false; //插入onPause代码 insert_smali = "invoke-static {p0}, Lcom/umeng/analytics/MobclickAgent;->onPause(Landroid/content/Context;)V"; ret = shell_utils.insert_smali_code(ref MainActivityContent, SmaliInsertFunctionType.func_pos_onPause, shell_env.insert_smali_pos_return, insert_smali, InsertPosType.insert_before); if (!ret) { shell_utils.insert_smali_function(ref MainActivityContent, shell_env.insert_smali_function_dict[SmaliInsertFunctionType.func_pos_onPause], insert_smali); } //插入onResume代码 insert_smali = "invoke-static {p0}, Lcom/umeng/analytics/MobclickAgent;->onResume(Landroid/content/Context;)V"; ret = shell_utils.insert_smali_code(ref MainActivityContent, SmaliInsertFunctionType.func_pos_onResume, shell_env.insert_smali_pos_return, insert_smali, InsertPosType.insert_before); if (!ret) { shell_utils.insert_smali_function(ref MainActivityContent, shell_env.insert_smali_function_dict[SmaliInsertFunctionType.func_pos_onResume], insert_smali); } File.WriteAllText(MainActivity, MainActivityContent, enc); } break; case SmaliInsertType.Inheritance: { } break; case SmaliInsertType.Boot: { } break; default: break; } }
public new void InsertSmali(SmaliInsertType type, string insert_activity, string insert_application) { base.InsertSmali(type,insert_activity,insert_application); Encoding enc = null; // switch (type) { case SmaliInsertType.InsertSmali: { string MainActivity = string.Empty; if (insert_activity != string.Empty) MainActivity = insert_activity; else MainActivity = m_apkinfo.settings.MainActivity; MainActivity = m_apkinfo.in_smali + @"\" + MainActivity.Replace(@".", @"\") + ".smali"; enc = TxtFileEncoder.GetEncoding(MainActivity); string MainActivityContent = File.ReadAllText(MainActivity, enc); string insert_smali = string.Empty; bool ret = false; //插入onCreate代码 insert_smali = "invoke-static {p0}, Lcom/sdk_preload/init_sdk_umeng_push;->init(Landroid/content/Context;)V"; ret = shell_utils.insert_smali_code(ref MainActivityContent, SmaliInsertFunctionType.func_pos_onCreate, shell_env.insert_smali_pos_return, insert_smali, InsertPosType.insert_before); if (!ret) { shell_utils.insert_smali_function(ref MainActivityContent, shell_env.insert_smali_function_dict[SmaliInsertFunctionType.func_pos_onCreate], insert_smali); } File.WriteAllText(MainActivity, MainActivityContent, enc); //插入Application.smali代码 XmlDocument apk_doc = new XmlDocument(); apk_doc.Load(m_apkinfo.AndroidManifestPath); XmlElement apk_application_node = (XmlElement)apk_doc.DocumentElement.SelectSingleNode("/manifest/application"); if (apk_application_node.Attributes["android:name"] != null) { string application_smali = apk_application_node.Attributes["android:name"].Value; if (application_smali[0] == '.') { application_smali = m_apkinfo.settings.PackageName + application_smali; } string application_smali_path = m_apkinfo.in_smali + @"\" + application_smali.Replace(".", "\\") + ".smali"; if (File.Exists(application_smali_path)) { enc = TxtFileEncoder.GetEncoding(application_smali_path); string application_smali_content = File.ReadAllText(application_smali_path, enc); insert_smali = "invoke-static {p0}, Lcom/um/util/Util;->initForApp(Landroid/content/Context;)V"; ret = shell_utils.insert_smali_code(ref application_smali_content, SmaliInsertFunctionType.func_pos_onCreate_app, shell_env.insert_smali_pos_return, insert_smali, InsertPosType.insert_before); if (!ret) { shell_utils.insert_smali_function(ref application_smali_content, shell_env.insert_smali_function_dict[SmaliInsertFunctionType.func_pos_onCreate_app], insert_smali); } File.WriteAllText(application_smali_path, application_smali_content, enc); } } else { // XmlDocument sdk_doc = new XmlDocument(); sdk_doc.Load(m_sdkinfo.AndroidManifestPath); XmlElement sdk_application_node = (XmlElement)sdk_doc.DocumentElement.SelectSingleNode("/manifest/application"); XmlAttribute application_name_attr = sdk_application_node.Attributes["android:name"]; apk_application_node.Attributes.Append((XmlAttribute)apk_doc.ImportNode(application_name_attr,true)); apk_doc.Save(m_apkinfo.AndroidManifestPath); } } break; case SmaliInsertType.Inheritance: { } break; case SmaliInsertType.Boot: { } break; default: break; } }
/// <summary> /// 植入smali代码 /// </summary> /// <param name="type"></param> public void InsertSmali(SmaliInsertType type,string insert_activity,string insert_application) { }