永发信息网

小米5xposed框架有什么用

答案:1  悬赏:50  手机版
解决时间 2021-02-22 17:14
小米5xposed框架有什么用
最佳答案
dexspy是小米基于著名的xposed框架修改的新patchrom框架。这几天瞄了一下反编译的代码,做个笔记。与smali注入相比,新的机制借助xposed的hook机制可以使未来MIUI移植适配变得更简单。dexspy的java部分代码在framework_ext中,核心类是miui/dexspy/*,代码和xposed旧机制的源码还是挺类似的,不过做了一个修改:arrayOfString[0]="android.app.Activity";arrayOfString[1]="android.app.ActivityManager";arrayOfString[2]="android.app.ApplicationPackageManager";arrayOfString[3]="android.app.Dialog";arrayOfString[4]="android.app.DownloadManager$CursorTranslator";arrayOfString[5]="android.app.LoadedApk";.sHookedClassNames=arrayOfString;这个数组定义了所有需要hook的类。在初始化时,会对每个类的特定方法挂上before和after钩子:privatestaticvoidinitDexspyZygote()throwsException{for(StringclassName:sHookedClassNames){hookMethodsThroughHandler(className,getHookClassName(className));}}publicstaticvoidhookMethodsThroughHandler(StringclassName,StringhandlerClassName){Classclazz=ReflectionUtils.findClass(className,0x0);ClasshandlerClazz=ReflectionUtils.findClass(handlerClassName,0x0);Method[]methods=handlerClazz.getMethods();for(Methodmethod:methods){if((!method.getName().startsWith("before_"))&&(!method.getName().startsWith("after_"))){}MemberhookedMethod=findHookedMethod(clazz,method);hookMethod(hookedMethod,MethodHookTemplate.sInstance);}}然而每个类都可能有n多方法,dexspy怎么知道要hook哪些呢?framework_ext反编译出来后,可以看到很多Injector.java文件,比如android/app/Injector.java放的就是前面那些android.app.*的钩子:staticclassActivityHook{privatestaticfinalStringTAG="Activity";publicstaticvoidafter_onCreate(MethodHook.MethodHookParamparamMethodHookParam,BundleparamBundle){ActivitylocalActivity=(Activity)paramMethodHookParam.thisObject;if((UiUtils.isV5Ui(localActivity))&&(UiUtils.resolveAttribute(localActivity,16842926)==101515270))localActivity.getWindow().setGravity(80);}publicstaticvoidafter_onOptionsItemSelected(MethodHook.MethodHookParamparamMethodHookParam,MenuItemparamMenuItem){ActivitylocalActivity=(Activity)paramMethodHookParam.thisObject;if((UiUtils.isV5Ui(localActivity))&&(paramMenuItem.getItemId()==16908332)){localActivity.finish();paramMethodHookParam.setResult(Boolean.valueOf(true));}}比如这个就是android.app.Activity类的钩子了,里面hook了onCreate(),onOptionsItemSelected()等方法。dexspy加载时会对扫描这些Injector,将相应方法的before和after钩子挂上。跟xposed主要的区别就在这里,好处就是以后这套框架如果开放了,模块编写自己的Injector类就能方便实现挂钩。当然现在的xposed也挺方便,但代码没这么直观清晰就是了。另外就是dexspy是基于旧xposed的,效率不如目前版本的xposed,尤其hook很多时效率会比较糟糕,估计未来会对dexspy做一次升级吧。网上找的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
裕丰生猪养殖场在哪里啊,我有事要去这个地方
【知识产权包括】知识产权包括:()
法语中直接宾语,间接宾语同时前置时与动词的
百胜草堂药店在什么地方啊,我要过去处理事情
广东2016高考录取结果怎样查
双层窗的玻璃常采用不同厚度组合,其主要原因
灵感发型设计烫染旗舰店在哪里啊,我有事要去
女生唱的歌词什么悄悄靠近你什么什么的勇气
维也纳酒店(广州火车南站店)离广州南站有多
如何快速辨别动力臂和阻力臂,
贵州蒜批发多少钱一斤
红豆毛线店地址有知道的么?有点事想过去
四Ill地震马云捐了多少
冬天去五岳寨旅游,住宿方便吗?都是什么价位
什么是等离子体
推荐资讯
凯瑞百货经营部地址有知道的么?有点事想过去
“柘”字广东话怎么读?
保定瑞祥大街与隆昌路交口有没有摄像头
足球的体积大约为4什么?
如何查看手机是否正品
怎样下录片《大国重器》
电脑插上光驱线后常常死机或卡机
我未婚,跟一个河南女人同居。她怀孕了,我给
手机老是自动下载一些垃圾游戏,该怎么办?
女驸马,这讲的什么故事
怎样访问QML中row创建的每个元素
八十八星座日期
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?