当前位置: 首页 > news >正文

郑州网站优化公司网站被黑应该怎么做

郑州网站优化公司,网站被黑应该怎么做,长沙seo网站优化,深圳微网站建设把之前写的Xposed相关文章合并到一块#xff0c;方便查阅 目录 多进程App的Hook问题XposedHelper中的静态变量demo的AndroidManifest.xml的测试核心代码结论限制handleLoadPackage被单个进程多次执行的问题 多dex Hook问题为应用增加权限利用Xposed删除权限参考 Hook框架集锦…把之前写的Xposed相关文章合并到一块方便查阅 目录 多进程App的Hook问题XposedHelper中的静态变量demo的AndroidManifest.xml的测试核心代码结论限制handleLoadPackage被单个进程多次执行的问题 多dex Hook问题为应用增加权限利用Xposed删除权限参考 Hook框架集锦原始思维导图文件下载 多进程App的Hook问题 以及App中单个方法被多个模块Hook时的Hook代码优先级问题 XposedHelper中的静态变量 demo的AndroidManifest.xml的测试核心代码 activityandroid:name.ProcessActivityandroid:process:process/activity//私有进程activityandroid:name.PublicProcessActivityandroid:processcom.publicProcess//公共进程/activity结论 以下所有进程都包括应用内创建的私有进程和公共进程 经过测试[测试代码过多就不贴了]得出结论 1.所有进程的创建都会执行而且会多次执行handleLoadPackage函数 2.每个进程都会重新创建一个fieldCachemethodCache,constructorCache静态变量 3.若两个模块Hook了当前App的同一个函数则beforeHookedMethod执行顺序是按Xposed框架私有目录下conf/modules.list的顺序执行的afterHookedMethod则与beforeHookedMethod执行顺序相反[测试数据是这样的具体真实情况就不太想探究了应该90%正确]举个例子 模块A和模块B同时Hook了应用C的方法Dmodules.list中模块A比模块B的顺序靠前则Hook代码执行顺序为 A-beforeHookedMethod,B-beforeHookedMethod,D,B-afterHookedMethod,A-afterHookedMethod4.lpparam.isFirstApplication并不是仅仅在主进程执行handleLoadPackage函数时才会置为true,在所有进程执行该函数时都会置为true[测试数据是这样的具体真实情况就不太想探究了应该90%正确] 5.在App的一个进程A中对某函数进行Hook只会影响进程A执行该函数不会影响该App其它未被Hook的进程执行该函数。 限制handleLoadPackage被单个进程多次执行的问题 /***防止重复执行Hook代码* param flag 判断标识,针对不同Hook代码分别进行判断* return 是否已经注入Hook代码*/private boolean isInjecter(String flag) {try {if (TextUtils.isEmpty(flag)) return false;Field methodCacheField XposedHelpers.class.getDeclaredField(methodCache);methodCacheField.setAccessible(true);HashMapString, Method methodCache (HashMapString, Method) methodCacheField.get(null);Method methodXposedHelpers.findMethodBestMatch(Application.class,onCreate);String keyString.format(%s#%s,flag,method.getName());if (methodCache.containsKey(key)) return true;methodCache.put(key, method);return false;} catch (Throwable e) {e.printStackTrace();}return false;}在handleLoadPackage做判断 Keeppublic void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) {if (isInjecter(this.getClass().getName())) {return;}//hook代码 }多dex Hook问题 //解决多dex问题public static void findHideDex(final OnFindDexListener listener) {XposedBridge.hookAllMethods(ContextWrapper.class, attachBaseContext, new XC_MethodHook() {public void beforeHookedMethod(MethodHookParam param) {ClassLoader classLoader ((Context) param.args[0]).getClassLoader();if (classLoader null) return;if (listener ! null) listener.onFind(classLoader);}});XposedBridge.hookAllConstructors(ClassLoader.class, new XC_MethodHook() {public void beforeHookedMethod(MethodHookParam param) {ClassLoader classLoader (ClassLoader) param.args[0];if (classLoader null) return;if (listener ! null) listener.onFind(classLoader);}});} public interface OnFindDexListener {void onFind(ClassLoader classLoader);} 为应用增加权限 利用Xposed删除权限 这个已经有人实现了就是Xposed的作者我们就先来研究研究他是怎么实现的,先上他的实现代码 public class PackagePermissions extends BroadcastReceiver {private final Object pmSvc;private final MapString, Object mPackages;private final Object mSettings;SuppressWarnings(unchecked)public PackagePermissions(Object pmSvc) {this.pmSvc pmSvc;this.mPackages (MapString, Object) getObjectField(pmSvc, mPackages);this.mSettings getObjectField(pmSvc, mSettings);}/*这个函数主要hook了 PackageManager 服务负责系统中Package的管理应用程序的安装、卸载、信息查询实现了通过监听我们自己发出的广播拦截权限授予功能来进行修改apk的权限的*/public static void initHooks() {try {final Class? clsPMS findClass(com.android.server.pm.PackageManagerService, XposedMod.class.getClassLoader());//获取这个PackageManager类//注册监听广播,监听我们的设置更改以实现立即应用设置findAndHookMethod(clsPMS, systemReady, new XC_MethodHook() {Overrideprotected void afterHookedMethod(MethodHookParam param)throws Throwable {Context mContext (Context) getObjectField(param.thisObject, mContext);//这个应该是系统的上下文具体待研究mContext.registerReceiver(new PackagePermissions(param.thisObject),new IntentFilter(Common.MY_PACKAGE_NAME .UPDATE_PERMISSIONS),Common.MY_PACKAGE_NAME .BROADCAST_PERMISSION,null);//注册广播}});//拦截PackageManager类中的grantPermissionsLPw函数findAndHookMethod(clsPMS, grantPermissionsLPw, android.content.pm.PackageParser$Package, boolean.class,new XC_MethodHook() {SuppressWarnings(unchecked)Overrideprotected void beforeHookedMethod(MethodHookParam param) throws Throwable {String pkgName (String) getObjectField(param.args[0], packageName);if (!XposedMod.isActive(pkgName) || !XposedMod.prefs.getBoolean(pkgName Common.PREF_REVOKEPERMS, false))return;SetString disabledPermissions XposedMod.prefs.getStringSet(pkgName Common.PREF_REVOKELIST, null);if (disabledPermissions null || disabledPermissions.isEmpty())return;ArrayListString origRequestedPermissions (ArrayListString) getObjectField(param.args[0], requestedPermissions);param.setObjectExtra(orig_requested_permissions, origRequestedPermissions);ArrayListString newRequestedPermissions new ArrayListString(origRequestedPermissions.size());for (String perm: origRequestedPermissions) {if (!disabledPermissions.contains(perm))newRequestedPermissions.add(perm);else// you requested those internet permissions? I didnt read that, sorryLog.w(Common.TAG, Not granting permission perm to package pkgName because you think it should not have it);}setObjectField(param.args[0], requestedPermissions, newRequestedPermissions);}SuppressWarnings(unchecked)Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {// restore requested permissions if they were modifiedArrayListString origRequestedPermissions (ArrayListString) param.getObjectExtra(orig_requested_permissions);if (origRequestedPermissions ! null)setObjectField(param.args[0], requestedPermissions, origRequestedPermissions);}});} catch (Throwable e) {XposedBridge.log(e);}}Overridepublic void onReceive(Context context, Intent intent) {try {// The app broadcasted a request to update settings for a running app// Validate the action being requestedif (!Common.ACTION_PERMISSIONS.equals(intent.getExtras().getString(action)))return;String pkgName intent.getExtras().getString(Package);boolean killApp intent.getExtras().getBoolean(Kill, false);XposedMod.prefs.reload();Object pkgInfo;synchronized (mPackages) {pkgInfo mPackages.get(pkgName);callMethod(pmSvc, grantPermissionsLPw, pkgInfo, true);callMethod(mSettings, writeLPr);}// Apply new permissions if neededif (killApp) {try {ApplicationInfo appInfo (ApplicationInfo) getObjectField(pkgInfo, applicationInfo);if (Build.VERSION.SDK_INT 18)callMethod(pmSvc, killApplication, pkgName, appInfo.uid);elsecallMethod(pmSvc, killApplication, pkgName, appInfo.uid, apply App Settings);} catch (Throwable t) {XposedBridge.log(t);}}} catch (Throwable t) {XposedBridge.log(t);}} }这段代码的地址 参考 1.AppSettingshook权限代码 2.Android5.1.1源码 - 添加应用权限 Hook框架集锦 原始思维导图文件下载 ProcessOnAndroid-Hook框架集锦.pos
http://www.sadfv.cn/news/136331/

相关文章:

  • 中国建设银行网站客户注册保险购买平台有哪些
  • 响应式网站几个断点norris wordpress
  • 搭建广告网站费用群晖wordpress打不开
  • 商丘做网站的公司投资网站开发
  • 贵阳建设工程招投标网站宣传网页
  • 有什么发布做投标报价的网站企业网页页面设计
  • 益阳网站制作公司北京企业响应式网站建设
  • 建网站的网站青浦专业网站建设
  • 东莞市网络seo推广价格巩义seo
  • 移动端网站的优点陕西建设厅官方网站
  • 怎么进行网站推广机顶盒视频网站建设
  • 本地搭建网站网站后台wordpress 插件激活
  • ppt要怎么做网站中国住房和城乡建设部网站首页
  • 阀门公司网站建设汕头网站建设模块
  • 购物网站建设app开发广东省住房和城乡建设厅官网网址
  • 外贸seo网站建设网站建设方案书要写吗
  • 如何做好一个企业网站设计如何做简洁网站设计
  • 电商模板哪个网站好网站上如何放入地图
  • 化妆品网站开发背景如何创立网站 优帮云
  • 好网站建设公司哪家好邯郸市口碑网络技术有限公司
  • 意大利之家设计网站国产 做 视频网站
  • 天津市南开区网站开发有限公司网站开发技术指标是什么
  • 中小企业网站制作报价想系统学习wordpress
  • 做新浪微博网站需要建筑工程职业学院官网
  • 聊城做网站做的不错的关键词竞价排名
  • 图书馆建设投稿网站wordpress引入html代码
  • 做公司网站方案网站建设文化哪家好
  • 郎溪做网站视频生成链接
  • 网站更换域名 换程序 SEO做网站的所有代码
  • 哈尔滨市哪里做淘宝网站即商通网站建设推广