package com.android.reverse.mod; import android.content.pm.ApplicationInfo; import com.android.reverse.apimonitor.ApiMonitorHookManager; import com.android.reverse.collecter.DexFileInfoCollecter; import com.android.reverse.collecter.LuaScriptInvoker; import com.android.reverse.collecter.ModuleContext; import com.android.reverse.util.Logger; import de.robv.android.xposed.IXposedHookLoadPackage; import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam; public class ReverseXposedModule implements IXposedHookLoadPackage { private static final String ZJDROID_PACKAGENAME = "com.android.reverse"; @Override public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable { // TODO Auto-generated method stub if(lpparam.appInfo == null || (lpparam.appInfo.flags & (ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP)) !=0){ return; }else if(lpparam.isFirstApplication && !ZJDROID_PACKAGENAME.equals(lpparam.packageName)){ Logger.PACKAGENAME = lpparam.packageName; Logger.log("the package = "+lpparam.packageName +" has hook"); Logger.log("the app target id = "+android.os.Process.myPid()); PackageMetaInfo pminfo = PackageMetaInfo.fromXposed(lpparam); ModuleContext.getInstance().initModuleContext(pminfo); DexFileInfoCollecter.getInstance().start(); LuaScriptInvoker.getInstance().start(); ApiMonitorHookManager.getInstance().startMonitor(); }else{ } } }