0x0 故事的由来
前段时间把17年某东双十一抽到的X20换了,换了某200万图标的k40(安卓11,手机稳定版刷了面具+lsposed)
但是有几款以前的APP需要用指定的imei或者oaid来伪造原设备继续使用,所以才有了这个帖子…
0x1 用到的工具和用途
1、VMOS Pro(安卓虚拟机,自带xposed和root,类似多开)
2、MT/NP管理器(文件管理)
3、反射大师3.5.3+XP框架(不支持安卓11的脱壳,所以我用VMOS pro,论坛内的BlackDex试过脱不了壳)
4、JADX(反编译APP 查看JAVA代码)
0x2 VMOS装APP后有真机检测
因为我要多开,所以用VOMS来装APP,打开的时候被检测了。。
但是我记得VMOS Pro好像能开启虚拟机用传感器,但是开启之后反转手机无效果。(不清楚是我操作有问题,还是VMOS的问题)
想到前几天刚学了点皮毛的xposed hook,所以想从代码入手了hook他
0x3 MT查看安装包
用MT一看是*60加固,不能直接看SMAIL,要先脱壳。所以要用反射大师或者别的工具。
0x4 反射大师安装和使用
VMOS 装xposed框架装反射大师,激活模块后
反射大师选择要脱壳的APP
然后运行APP,点击芒星-当前ACTIVITY,长按“写出DEX”(写出全部DEX)
并勾选修复
0x5 反编译查看代码
JADX搜索定位
我这用的是JADX,全选dex直接查看所有代码(也可以直接用MT/NP管理器)
搜索关键词“请使用手机”,搜到一个,那肯定就是他了
我们点进去看看
然后就更能确定就是他。。
MyDialog myDialog7 =this.this$0.this$0.this$0.this$0.vmdialog;if(myDialog7 !=null){
myDialog7.show();/* 显示这个检测弹窗 */}
找到show方法
右键“跳到声明”找到show方法,类:com..*.activity.ui.MyDialog
publicvoidshow(){getWindow().setGravity(17);super.show();}
既然找到了方法,那让他不运行就不会显示这个弹窗
0x6 e4a_xposed_hook
因为没学过JAVA,所以只能用e4a的接口函数来编写模块了…
publicvoidhandleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam)throwsThrowable{if(lpparam.processName.equals("com.***.****"))//***** 判断应用名{XposedBridge.log("加载 App:"+ lpparam.packageName);XposedHelpers.findAndHookMethod("com.stub.StubApp", lpparam.classLoader,"a",Context.class,newXC_MethodHook(){//或者a@OverrideprotectedvoidafterHookedMethod(MethodHookParam param)throwsThrowable{super.afterHookedMethod(param);//获取到360的Context对象,通过这个对象来获取classloaderContext context =(Context) param.args[0];//获取360的classloader,之后hook加固后的代码就使用这个classloaderClassLoader classLoader = context.getClassLoader();//替换classloader,hook加固后的真正代码XposedHelpers.findAndHookMethod("com.***.***.activity.ui.MyDialog", classLoader,"show",newXC_MethodReplacement(){//类名和方法名@OverrideprotectedObjectreplaceHookedMethod(MethodHookParam methodHookParam)throwsThrowable{returnnull;//不再使用原方法}});}});}}
装好并启用模块,重启VMOS虚拟机之后打开APP,检测窗口不再显示。(但是好像所有的弹窗都没了。。。下次可以研究研究改写函数)
【PS:hook一时爽,一直hook一直爽。。】
【再PS:之前发过的某水印相机也可以用hook自定义函数结果,但是论坛不能发成品,就需要大家动动手了】
版权归原作者 闷骚小贱男 所有, 如有侵权,请联系我们删除。