hook(2)Activity启动流程,2021年大厂Android岗面试必问
}
效果:跳转依然正常,并且logcat
中可以发现下面的日志.
#####ok,插入自己的逻辑,成功
##三. 第二种启动方式的hook方案
创建ApplicationContextHookHelper.java
,然后 同样是三步走
:
1.确定hook的对象和该对象的持有者
锁定ActivityThread
的mInstrumentation
成员.
//1.主线程ActivityThread内部的mInstrumentation对象,先把他拿出来
Class<?> ActivityThreadClz = Class.forName(“android.app.ActivityThread”);
//再拿到sCurrentActivityThread
Field sCurrentActivityThreadField = ActivityThreadClz.getDeclaredField(“sCurrentActivityThread”);
sCurrentActivityThreadField.setAccessible(true);
Object activityThreadObj = sCurrentActivityThreadField.get(null);//静态变量的属性get不需要参数,传null即可.
//再去拿它的mInstrumentation
Field mInstrumentationField = ActivityThreadClz.getDeclaredField(“mInstrumentation”);
mInstrumentationField.setAccessible(true);
Instrumentation base = (Instrumentation) mInstrumentationField.get(activityThreadObj);// OK,拿到
2.创建代理对象 和上面的代理类一模一样,就不重复贴代码了
//2.构建自己的代理对象,这里Instrumentation是一个class,而不是接口,所以只能用创建内部类的方式来做
ProxyInstrumentation proxyInstrumentation = new ProxyInstrumentation(base);
3.替换掉原对象
//3.偷梁换柱
mInstrumentationField.set(activityThreadObj, proxyInstrumentation);
如何使用: 在
Main4Activity
的onCreate
中加入一行ApplicationContextHookHelper.hook();
public class Main4Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);
ApplicationContextHookHelper.hook();
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityByApplicationContext();
}
});
}
private void startActivityByApplicationContext() {
Intent i = new Intent(Main4Activity.this, Main5Activity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(i);
}
}
效果
####OK,第二种启动方式,我们也可以加入自己的逻辑了.hook成功!
##四. 目前方案弊端分析
启动方式1的hook: 只是在针对单个Activity
类,来进行hook
,多个Activity
则需要写多次,或者写在BaseActivity
里面.
启动方式2的hook:可以针对全局进行hook,无论多少个Activity,只需要调用一次ApplicationContextHookHelper.hook();
函数即可,但是,它只能针对 getApplicationContext().start![](https://www.hualigs.cn/image/61dba891ed8ee.jpg) Activity(i);
普通的Activity.startActivity
则不能起作用.
那么有没有一种完全体的解决方案:能够在全局起作用,并且可以在两种启动方式下都能hook
.
回顾之前的两张代码索引结论图
,会发现,两种启动Activity的方式,最终都被执行到了 AMS
内部,
下一步,尝试hook AMS.
##五. 最终解决方案
代码索引: 基于SDK 28 ~ android9.0
下方红框标记的部分,就是取得
AMS
(ActivityManagerService
实例)的代码.
如果可以在系统接收到AMS实例之前,把他截
了,是不是就可以达到我们的目的?
进去看看getService的代码:
真正的AMS
实例来自一个Singleton
单例辅助类的create()
方法,并且这个Singleton
单例类,提供get
方法,获得真正的实例.
那么,我们从这个单例中,就可以获得系统当前的 AMS
实例,将它取出来,然后保存.
OK,确认:
hook
对象: ActivityManager
的IActivityManagerSingleton
成员 变量内的 单例 mInstance
.
hook
对象的持有者:ActivityManager
的IActivityManagerSingleton
成员变量
那么,动手:
- 找到
hook
对象,并且存起来
//1.把hook的对象取出来保存
//矮油,静态的耶,开心.
Class<?> ActivityManagerClz = Class.forName(“android.app.ActivityManager”);
Method getServiceMethod = ActivityManagerClz.getDeclaredMethod(“getService”);
final Object IActivityManagerObj = getServiceMethod.invoke(null);//OK,已经取得这个系统自己的AMS实例
- 创建自己的代理类对象,
IActivityManager
是一个AIDL生成的动态接口类,所以在编译时,androidStudio
会找不到这个类,所以,先反射,然后用Proxy进行创建代理。
//2.现在创建我们的AMS实例
//由于IActivityManager是一个接口,那么我们可以使用Proxy类来进行代理对象的创建
// 结果被摆了一道,IActivityManager这玩意居然还是个AIDL,动态生成的类,编译器还不认识这个类,怎么办?反射咯
Class<?> IActivityManagerClz = Class.forName(“android.app.IActivityManager”);
Object proxyIActivityManager = Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
new Class[]{IActivityManagerClz}, new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//proxy是创建出来的代理类,method是接口中的方法,args是接口执行时的实参
if (method.getName().equals(“startActivity”)) {
Log.d(“GlobalActivityHook”, “全局hook 到了 startActivity”);
}
return method.invoke(IActivityManagerObj, args);
}
});
- 偷梁换柱:这次有点复杂, 不再是简单的
field.set
,因为这次的hook对象被包裹在了一个Singleton
里。
//3.偷梁换柱,这里有点纠结,这个实例居然被藏在了一个单例辅助类里面
Field IActivityManagerSingletonField = ActivityManagerClz.getDeclaredField(“IActivityManagerSingleton”);
IActivityManagerSingletonField.setAccessible(true);
Object IActivityManagerSingletonObj = IActivityManagerSingletonField.get(null);
//反射创建一个Singleton的class
Class<?> SingletonClz = Class.forName(“android.util.Singleton”);
Field mInstanceField = SingletonClz.getDeclaredField(“mInstance”);
mInstanceField.setAccessible(true);
mInstanceField.set(IActivityManagerSingletonObj, proxyIActivityManager);
使用方法:老样子,在你自己的Activity onCreate
里面加入GlobalActivityHookHelper.hook();
运行起来,预期结果应该是:能够在logcat中看到日志 :
GlobalActivityHook - 全局hook 到了 startActivity;
但是,你运行起来可能看不到这一行。
如果你看不到这个日志,那么原因就是:
程序报错了,
没有这样的方法,怎么回事?
debug
找原因:
为什么会没有getService
这个方法!?
查看了我当前设备的系统版本号
居然是23版本,6.0
.
所以,恍然大悟,我们写的hook代码并没有兼容性,遇到低版本的设备,就失灵了.
解决方案:
1.找到SDK 23
的源码
(注意,前方有坑,androidStudio
,你如果直接把combileSDK
改成23.会出现很多位置问题,所以不建议这么做. 但是我们一定要看SDK 23
的源码,怎么办?
- .在线查看源码 - https://www.androidos.net.cn/sourcecode ;
- 从谷歌官网下载
SDK 23
的源码,然后用SourceInsight
查看)
2.查看getService
方法不存在的原因,两个版本28 和 23,在这一块代码上有什么不同.
3.改造 GlobalActivityHookHelper.java
,判定当前设备的系统版本号,让它可以兼容所有版本.
按照上面的步骤:
我发现SDK 23里面:
Instrumentation
类的 execStartActivitiesAsUser(Context who, IBinder contextThread, IBinder token, Activity target, Intent[] intents, Bundle options, int userId)
方法里,获取AMS实例
的方式完全不同.
它是使用ActivityManagerNative.getDefault()
来获得的,继续往下找,看看有没有什么不同。
进去ActivityManagerNative
找找看:
OK,找到了区别,确定结论:SDK 28
和23
在这块代码上的区别就是:
获得AMS实例的类名和方法名都不同.另外,查了度娘之后发现,这个变化是在SDK 26版本修改的,所以26和26以后,ActivityManager.getService()
来获取,26以前,用ActivityManagerNative.getDefault()
来获得
调整当前的hook
方法,修改为下面这样:
public class GlobalActivityHookHelper {
//设备系统版本是不是大于等于26
private static boolean ifSdkOverIncluding26() {
int SDK_INT = Build.VERSION.SDK_INT;
if (SDK_INT > 26 || SDK_INT == 26) {
return true;
} else {
return false;
}
}
public static void hook() {
try {
Class<?> ActivityManagerClz;
final Object IActivityManagerObj;
if (ifSdkOverIncluding26()) {
ActivityManagerClz = Class.forName(“android.app.ActivityManager”);
Method getServiceMethod = ActivityManagerClz.getDeclaredMethod(“getService”);
IActivityManagerObj = getServiceMethod.invoke(null);//OK,已经取得这个系统自己的AMS实例
} else {
ActivityManagerClz = Class.forName(“android.app.ActivityManagerNative”);
Method getServiceMethod = ActivityManagerClz.getDeclaredMethod(“getDefault”);
IActivityManagerObj = getServiceMethod.invoke(null);//OK,已经取得这个系统自己的AMS实例
}
//2.现在创建我们的AMS实例
//由于IActivityManager是一个接口,那么其实我们可以使用Proxy类来进行代理对象的创建
// 结果被摆了一道,IActivityManager这玩意居然还是个AIDL,动态生成的类,编译器还不认识这个类,怎么办?反射咯
Class<?> IActivityManagerClz = Class.forName(“android.app.IActivityManager”);
Object proxyIActivityManager = Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), new Class[]{IActivityManagerClz}, new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//proxy是创建出来的代理类,method是接口中的方法,args是接口执行时的实参
if (method.getName().equals(“startActivity”)) {
Log.d(“GlobalActivityHook”, “全局hook 到了 startActivity”);
}
return method.invoke(IActivityManagerObj, args);
}
});
//3.偷梁换柱,这里有点纠结,这个实例居然被藏在了一个单例辅助类里面
Field IActivityManagerSingletonField;
if (ifSdkOverIncluding26()) {
IActivityManagerSingletonField = ActivityManagerClz.getDeclaredField(“IActivityManagerSingleton”);
} else {
IActivityManagerSingletonField = ActivityManagerClz.getDeclaredField(“gDefault”);
}
IActivityManagerSingletonField.setAccessible(true);
Object IActivityManagerSingletonObj = IActivityManagerSingletonField.get(null);
Class<?> SingletonClz = Class.forName(“android.util.Singleton”);//反射创建一个Singleton的class
Field mInstanceField = SingletonClz.getDeclaredField(“mInstance”);
mInstanceField.setAccessible(true);
mInstanceField.set(IActivityManagerSingletonObj, proxyIActivityManager);
} catch (Exception e) {
e.printStackTrace();
}
}
}
再次尝试:
成功,实现了全局范围内的startActivity
动作的hook
.
##六. Hook开发可能的坑
1. androidStudio
阅读源码很多类无法索引,这是因为有一些类是@hide
的,无法Ctrl点进去,
解决方案:Ctrl+shift+R 输入类名,手动进入.
2.androidStudio
阅读源码直接报红
:或者一些是AIDL
动态生成的接口,无法直接查看,比IActivityManager
. ,
解决方案:这种接口不用管它,如果非要用到它,那就使用本类的包名+IActivityManager作为全限定名,去反射创建它.
3. hook
开发,是学习源码思想,改变源码执行流程,所以,在多个版本的设备上运行,很容易发生不兼容的情况.
解决方案:找到不兼容的设备版本,根据报的异常,参照源码的版本变迁做出相应的兼容性改动.
#结语
历时3天,忙里偷闲,总算是写完了.
喜欢的客官帮忙点个赞哦,你们的鼓励是我最大的动力,以后还会更新更多干货.
最后~本文的代码Demo.
它,如果非要用到它,那就使用本类的包名+IActivityManager作为全限定名,去反射创建它.**
3. hook
开发,是学习源码思想,改变源码执行流程,所以,在多个版本的设备上运行,很容易发生不兼容的情况.
解决方案:找到不兼容的设备版本,根据报的异常,参照源码的版本变迁做出相应的兼容性改动.
#结语
历时3天,忙里偷闲,总算是写完了.
喜欢的客官帮忙点个赞哦,你们的鼓励是我最大的动力,以后还会更新更多干货.
最后~本文的代码Demo.
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- Gson用户指南,教育移动互联网应用程序app
使用Gson 一个简单示例 GSON API提供一个类文件,Gson(Java文档),它被用来处理Java和JSON对象的转换。可以调用默认构造器,或如下代码的形式,使用GsonBuilder(Java文档)类创建这个类…...
2024/4/13 20:12:42 - 【stm32】点灯-GPIO的初步了解-1
实现的功能 点亮LED灯使得开发板上的两个LED交替闪烁 STM32IO口简介 要使得LED被点亮,根据LED的性质来说,肯定是要通过控制高低电平的输出,进而控制LED的亮灭。而要控制电平就是要控制IO的输出电平,对此我们需要对IO口进行设置…...
2024/4/20 15:06:07 - ArrayList集合--------案例:存储字符串遍历
ArrayList集合--------案例:存储字符串遍历 package Com; import java.util.ArrayList; /* ArrayList集合--------案例:存储字符串遍历 需求:创建一个存储字符串的集合,存储3个字符串元素,使用程序实现在控制台遍历该集合 */ public class Demon1 {public static void main(St…...
2024/4/20 7:50:17 - HMS Core 5,面试必问知识点
查看详情 地图服务: 新增支持热力图图层绘制功能。以不同颜色标识地图上的点,这些点的集合使地图该区域以高亮的形式呈现。例如,您可以通过热力图功能展示交通拥堵情况,提醒用户躲避拥挤地区; “"规划驾车路径&q…...
2024/4/7 19:35:48 - 【libevent】定时器:以lsquic的prog.c为例
lsquic的 bin\prog.ctimer 句柄:prog_process_conns static void prog_timer_handler (int fd, short what, void *arg) {struct prog *const prog = arg;...
2024/4/13 20:13:02 - GPS定位,Android高级工程师每日面试题精选
发送请求的URLparam params 请求参数,请求参数应该是name1value1&name2value2的形式。return URL所代表远程资源的响应 */ public static String sendGet(String url, String params) { String result “”; BufferedReader in null; try { …...
2024/4/7 19:35:46 - 挑战程序设计竞赛题解目录
第2章 初级篇 编号标题难度2.2例题POJ3617 Best Cow Line...
2024/4/28 1:33:37 - 数据库常用查询
1 查询表格 select * from tbl__1 ;2 针对某一条件查询 select * from tbl_bill_log_1 使用where where callerno xxxxx121113 ;3 追加查询条件 加and 时间条件要进行转换 小时如下: to_char(ackbegin,HH24:mi:ss) > 11:00:00年月日如下: to_c…...
2024/4/13 20:13:02 - 维度建模--维度设计的常用模型
路径 step1:雪花模型 step2:星型模型 step3:星座模型 实施 雪花模型 设计:部分维度通过其他维度间接关联事实表 优点:避免数据的冗余 缺点:关联层次比较多,数据大的情况下,底层…...
2024/4/13 20:12:32 - 第三章 - 共享模型之管程(三)
第三章 - 共享模型之管程(三) wait-notify 小故事 - 为什么需要 wait 由于条件不满足,小南不能继续进行计算但小南如果一直占用着锁,其它人就得一直阻塞,效率太低 于是老王单开了一间休息室(调用 wait 方法)&#x…...
2024/4/5 3:23:48 - Coins---多重背包+bitset+二进制优化
Coins—多重背包bitset二进制优化 #include <iostream> #include <cstring> #include <algorithm> #include <cstdio> #include <bitset> using namespace std; //#define int long long const int N 100010,INF0x3f3f3f3f;int n,m; bitset<…...
2024/4/20 2:29:17 - C++——指针
目录 1 指针的基本概念 2 指针变量的定义和使用 3 指针所占内存空间 4 空指针和野指针 5 const修饰指针 6 指针和数组 7 指针和函数 8 指针、数组、函数 1 指针的基本概念 指针的作用:可以通过指针间接访问内存 ○内存编号是从0开始记录的,一般…...
2024/4/5 3:23:46 - JavaScript深入之异步
JavaScript深入之异步 我们先来看一段代码 Promise.resolve().then(function () {console.log("promise1");}).then(function () {console.log("promise2");});console.log("3");setTimeout(function () {console.log("setTimeout")…...
2024/4/7 19:35:42 - hejxdbxhz
enxjx...
2024/4/18 14:59:49 - vs2019拖拽窗口布局崩溃问题
介绍 原因是版本太低,升级高版本就可以 解决方案(转载) 将就解决方案 又不是不能用,不拖曳窗口就行,不会弄那就这样将就用 临时解决方案 虽然拖曳窗口会崩溃,但可以鼠标右键 “新建垂直文档组”。也达到目的,不过不…...
2024/4/13 20:12:52 - Volatile
关键词:JMM 并发的三大特性 volatile 一、JMM 要聊volatile,我们首先看看什么是JMM JMM,即Java内存模型(Java Memory Model)就是一种符合内存模型规范的,屏蔽了各种硬件和操作系统的访问差异的,保证了Jav…...
2024/4/18 12:12:48 - js前端加密
全端加密分为:MD5、js自带的base、RSA(非对称加密) 1、md5: 加密,会形成一个32位的字符串,记住,只有32位,(1)登录密码和账号时候可以用,因为入库…...
2024/4/15 18:48:45 - 初始docker篇,原创全面白话文教学,有眼就会。
先介绍一下关于docker我的文章大纲 1 初始docker篇。要明白它是干什么的,为什么要用它和它的基础工作原理 2 docker基础命令篇。要学会服务相关命令,镜像相关命令,容器相关命令。 3 数据卷篇。学会-v的使用 4 重难点,镜像的压…...
2024/4/13 20:12:47 - python零基础入门教程学习Python的第一个 Python 程序
目标 第一个 HelloPython程序Python 2.x 与 3.x版本简介执行Python 程序的三种方式 解释器 —— python / python3交互式 ——ipython集成开发环境 ——PyCharm 01. 第一个 HelloPython 程序 1.1 Python 源程序的基本概念 Python 源程序就是一个特殊格式的文本文件&#x…...
2024/4/13 20:13:23 - 1342.将数字变成 0 的操作次数
题目 1342.将数字变成 0 的操作次数 题目大意 给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。 样例 数据规模 思路 直接模拟这个过程就可以了:如…...
2024/4/13 20:13:23
最新文章
- 【算法学习】线段树基础版
一 线段树 1.概念 线段树可以理解为一个二叉树,如果是利用线段树求区间的和,那么每个结点的权值维护的是结点所维护区间的和,再将该区间一分为二,分别交由左右儿子维护。 拿区间1 - 4的和来举例子, 根结点维护的是区…...
2024/4/28 2:33:02 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 最新安卓iOS免签封装源码 可处理apk报毒
资源简介 解决app误报毒 可打包APP可上传APK 自动实现5分钟随机更换包名和签名系统源码 本程序功能介绍 程序可实现域名自动打包成app 出现误报毒并自动更换包名和签名时间一次 也可以上传打包好的apk*时间自动更换包名和签名 自动覆盖原下载路径,下载地址不变…...
2024/4/27 14:36:17 - 解析大语言模型训练三阶段
大语言模型的训练过程一般包括3个阶段:预训练(Pre-training)、SFT(有监督的微调,Supervised-Finetuning)以及RLHF(基于人类反馈的强化学习,Reinforcement Learning from Human Feedb…...
2024/4/23 6:25:26 - OpenHarmony开发-连接开发板调试应用
在 OpenHarmony 开发过程中,连接开发板进行应用调试是一个关键步骤,只有在真实的硬件环境下,我们才能测试出应用更多的潜在问题,以便后续我们进行优化。本文详细介绍了连接开发板调试 OpenHarmony 应用的操作步骤。 首先…...
2024/4/27 20:51:51 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/26 18:09:39 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/26 20:12:18 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/26 23:05:52 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/27 4:00:35 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/27 9:01:45 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/28 1:22:35 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/25 18:39:14 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/26 23:04:58 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/25 18:39:00 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/26 19:46:12 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/27 11:43:08 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/27 8:32:30 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57