4550
作者:jiawen
链接:https://juejin.cn/post/6890344584078721031
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
一.背景
之前扒过飞书的源码,从代码设计架构层面里里外外学习一把,飞书还是挺“大方”的,源码在客户端和网页端都一览无余,不过好像新版本已经看不到了。相关的文章由于在内网技术论坛发过了不便于再发出来(泄露内部资料会被查水表的),因此这次周末抽时间换一个鸟窝来掏一掏。
一不小心发现迅雷的客户端竟然也是基于 Electron 开发的,那代码就好扒拉了。(先吐槽一下这新版本的某lei为什么要抄钉钉的界面,这些年某lei都不知道自己要干什么了,每个版本都招人嫌)二.开撬 2.1 一点背景知识说明 基于前端技术栈 Electron 构建的桌面应用,本质上都是加载本地前端资源文件,而这些文件通常是用
asar 格式(类似 windows iso 镜像)的方式进行打包,然后运行时再通过挂在到内存实现前端资源文件 js/css/html/img 等文件的读取。 这么说 asar 想办法挂载就可以随意阅读源码了吗?不是的。同时 asar 会提供一套通过加密方式防止任意解压,飞书就是这么做的,直接通过 asar extract 的方式无法解包出来。但是由于 node 端和 rust 构建的二进制文件如果打包到 asar 会导致无法链接到这些二进制文件,因此需要从 asar 中独立出来,因而导致有部分 js 文件仍然裸露在外面。不过即便没有任何 js 是暴露的仍然是有办法爆破的。 啊,跑偏了,先不谈飞书,今天的主菜是迅雷。
那迅雷的前端资源文件是怎么管理的呢? 是在下想多了,不好意思,迅雷梅川酷子,都摊着在那呢,根本没用 asar 打包/加密。 2.2.开撬
既然 js 都暴露了,也没什么好绕的,直接植入代码吧。我们都知道 Electron 是有 render 进程和 Node 进程的,接下来这一步需要猜猜看哪个文件是负责 render 主进程的?好吧不用猜,名字都非常人类可读,就 main-renderer(主窗口渲染进程)。打开找到 html 文件(js也可以)插入如下这串 双击启动,调试窗口出来了,可以大致看到整体页面结构了 然后看了一下,迅雷的悬浮小圆圈和主窗口,分别用一个 BrowserWindow 来实现。有趣的是那个小圆圈窗口其实并不小,鼠标悬停出来的那个浮窗也是它的一部分,为了让小圆圈在屏幕的任何位置都可以看到悬浮窗,所以整个小圆圈的 BrowserWindow 是大约 4 倍的悬浮窗口大小 独立窗口的检视界面 - 窗口实际是 4倍 浮窗大小,灰色部分全都是这个“小”浮窗所使用的
BrowserWindow区域 2.3.一点防御措施
从代码来看,nodejs 进程只有一个文件 main.js ,是 webpack 的构建产物,看源码这里的 BrowserWindow 的 webPreference 参数是把 devTools 禁用掉的,导致直接在命令行里敲 openDevTools 是不能检视任意窗口的 当然了,这里即便是混淆过了也没关系,毕竟还是明文,把 1 改成 0,把它打开就好(双叹号/true/1啥都行,开心就好)。不过由于迅雷的窗口实在是太多了,下载弹窗是独立窗口,选择文件夹是独立窗口,各种广告窗口也是,需要改的配置点很多,这里就不列了,总共有 10 个窗口,这个配置点按需打开(批量替换也行,谨慎操作就行)。
三.进程结构
呃……然后要干啥……好像也没什么好看的了,代码是混淆过的,也没有 map 文件。而且前端部分的代码也没什么技术含量可以说的,哪个 web 页面都那样。那看看进程分工吧。
3.1.进程树
在进程树里可以看出来,几乎全部的进程都是 Thunder.exe,可见 Thunder.exe 作为进程派发入口(类似 server 的网关,而并不直接是业务本身),用户启动的时候传参是
--StartType:DesktopIcon,随后它唤起了两组进程,一组是 Electron main 进程,main 进程唤起相关的 renderer;然后是下载的 SDK 服务 DownlaodSDKServer。
那么迅雷的进程关系差不多是清楚了:多个 Electron 窗口,对应一个 DownloadSDK。 3.2.通信方式 那么 Electron 的进程(甭管 main-process 还是 renderer-process,统称 electron进程) 和 DownloadSDK 是如何通信的呢? 进程间通信一般都是依靠 ipc 管道的形式来实现。不过迅雷似乎没按套路来,它的 DownloadSDK 是控制台程序,意味着很有可能是通过 stdio 的方式来进行交互的(后续证明不是)。
通过观察进程打开的句柄,看到很诡异的一个现象:DownloadSDK 并没有打开任何 ipc 管道,反倒是前端进程打开了一个 3.2.1.前端的 ipc
而
Electron 打开的这个 handler 进程名称,查了一下,竟然全是 Electron 进程使用的,而且是所有进程。 那么不妨做出一个大胆的推测:前端多窗口之间是靠自建的 ipc 通道实现的,而 ipc 是 1
server 对 N client 的方式,那么 server
很有可能就是在主窗口上的,也就是前文看到那个及其明显的 main-renderer 进程,通过控制台查看,确实如此,nodejs 的 net 方式创建了一个
server,并且将一个叫做 __xdasIPCServerInstance 的对象暴露在全局环境供前端 js 调用,也即 jsapi。 而小窗口并不存在上述 server 实例,而相对应的有一个 client 实例 3.2.2.和 DownloadSDK 的通讯方式
这样看起来就很奇葩了,前端进程之间是通过自建的 ipc 管道通信的,但是并没有跟 DownloadSDK 有任何通信管道,难道它俩是心有灵犀无言自通?啊这……程序员是唯物主义的!
那怎么查它到底是怎么跟前端进程交互的呢?既然前端暴露了 server sdk instance,那意味着 DownLoadSDK 肯定是以一种 proxy 的方式暴露在这上面作为 jsapi 的。可以拿【创建一个下载任务api】来顺藤摸瓜。看了主窗口的 server instance 一下果然有这个方法:createTask ,应该就是前端用于创建下载任务用的 api。 chrome 浏览器里查代码不方便,转战 vscode 看源码,搜索 createTask 这个函数的声明位置,看到这一段(篇幅控制,此处删减了部分代码)createTask(e, t) {
return n(this, void 0, void 0, function* () {
.....
}
switch (e) {
case h.DownloadKernel.TaskType.P2sp:
...
case h.DownloadKernel.TaskType.Bt:
...
case h.DownloadKernel.TaskType.Emule:
...
case h.DownloadKernel.TaskType.Group:
...
case h.DownloadKernel.TaskType.Magnet:
...
default:
i = !1;
}
return (
...
_.fireTaskEvent(h.DownloadKernel.TaskEventType.TaskCreated, [
);
});
} 没跑了,证实了我前面的猜想,这个 __xdasIPCServerInstance 就是 download sdk 封装到前端的 proxy。 继续查,这个 fireTaskEvent 是怎么处理的,阅读代码过程繁琐按下不提,就看这两段代码(有删减整理)
// 片段一
(e.getDownloadSdkVersion = function () {
let e = a.join(__rootDir, "../bin/SDK/DownloadSDKServer.exe");
return v.getFileVersion(e);
}),
// 片段二
y = l.default(o.join(__rootDir, "../bin/ThunderHelper.node"));
let F = "/ssdkver " + u.DownloadKernelManager.getDownloadSdkVersion();
B.push(F)
y.shellExecute(0, "open", o, B, H, "SW_SHOW"); 很显然,DownloadSDK 是通过一个 ThunderHelper.node 的 nodejs addon 模块来启动、通信的。
我们知道, nodejs 可以通过 ffi 等方式实现内存共享,以达到两个进程不需要通过 pipe/sock 等管道就达到通信的目的。而通过工具观察 Thunder.exe 的唤起关系、句柄关系,两者的关系就更加一目了然了:ELectron 前端进程加载 DownloadSDK 进程,并且通过 \Sessions\5\BaseNamedObjects\xx@22123720|SendShareMemory 这种内存通道来实现的通信,句柄一一对应上了。四.总结 扒拉了半天,扒完了有点空虚是怎么回事
迅雷的代码架构关系是轻
node 而重前端,把所有的 node 加载、进程管理、多窗口通信都放在前端进程的主窗口进程里。关于这个做法,我尊重而不认同。前端进程不应该做太重的底层交互,尤其是 js 这种单线程语言,天然的就运行效率低,而且主窗口使用这么频繁就不怕卡住吗
Electron 天然就有 ipc 通信能力,完全可以在 node 端做一个消息网关,达成每个窗口通信的能力,完全不需要自建一个 ipc server-client 体系。可能这也是一开始就把大量工作放在前端(主窗口)了导致后期的程序设计受限。说不定是个历史包袱
用一个 node
addon 的方式来跟 DownloadSDK 来通信,这点是可以点个赞的,虽然是业界标准(飞书是通过rust,基本原理类似),但是我目前所负责的业务并没有做到这样,所以在惭愧的同时也给它点个赞
迅雷使用的
Electron 版本是 9.2.1,vscode 也是这个版本,好神奇!非常好奇为何业界都用这个版本,事实上 electron 9.x 最新版本已经更新到 9.3.3 了(2020年10月28日)这个 9.2.1 有什么魔力让业界都用它吗
这里说明一下,Electron
从 6.0 开始就不支持 windows7(非sp1) 及以下的版本了。
我在 win7 系统上用迅雷安装器安装迅雷最新版本,发现 electron 用的是 1.8.6 版本
Electron 的主入口是处理过了的,通过 Thunder.exe 程序干了很多除了启动前端以外的事情,这个定制还是挺棒的,因为这样就可以把各种进程模块管理起来,不会出现多个独立进程。就我所看到的不少 Electron 应用其实都没有定制过。
以上是纯粹技术挖掘,没有破坏到迅雷的核心机密,仅做学习交流使用哈
五.关于我们
我们部门有若干桌面端应用,用户基数大,挑战大,招聘有 electron 经验或者前端技术专家。经常会做一些好玩的桌面端实践,也会深入挖掘和学习一些 app 的程序设计。如果有兴趣的话欢迎联系我,简历请狠砸我!私信我获取联系方式哦!都可以聊一下,说不定就成为同事了,没有你想象的那么难!
还记得开头说的扒了飞书的源码的事情吗?想看吗?想就投简历吧哈哈哈哈
13538
Ghost,我想很多人都不会陌生,它是装机人员手中不可缺少的工具,可以说如果你不会Ghost都不好意思说你是修电脑的。 我们都知道Ghost在对于旧的启动方式可以很好的支持,但是对于Uefi却容易出现各种问题,最典型的就是在硬盘对刻后却发现无法正常启动,那么这种该怎么解决呢? 可以看到“Windows Boot Manager”处显示的是No Media,无法启动 首先我们需要准备一个PE环境与Bootice(这个软件大部分PE上都带有,但有可能版本较老,较老的版本无法继续操作,因此这里还是建议大家准备好一个最新的版本) 一切准备好以后,我们首先进入PE,确认好需要操作的磁盘及该磁盘的ESP分区是哪个盘符(可通过Diskgen等磁盘软件确认) 确认好以后,打开Bootice 选到BCD编辑 点击“...”选择BCD文件(该文件位于ESP分区中的efi\microsoft\boot\目录下) 选好以后,(旧版只有查看/修改,且操作不便,因此建议更换成新版,在这里我们以新版为说明),点击智能编辑模式 可以看到如上图界面,内容很多,我们不需要管,只需要关注红框中的内容即可,红框中,如果是对刻的系统,则上述框中为空内容,这里我们就需要把我们当前磁盘选中,下述启动分区会自动读取,然后我们只需要启动分区中选中包含系统的那个磁盘,点击最下面的保存全局设置与保存当前系统设置,然后关闭重启即可正常启动 注:如果仍然无法启动,可尝试修改Uefi启动序列,更改方法还是使用bootice,选到UEFI选项夹,然后可以看到有两个功能项,这里我们选择修改启动序列,打开后,选择“Windows Boot Manager”,然后在右侧的启动磁盘中,也是相同的选择,但是在启动分区中这里我们需要选择的不是带有系统的分区,而是选择ESP分区,选择好以后,点击保存当前启动项设置,然后重启即可
3817
原文转自:鲜枣课堂 作者:小枣君“究竟怎样做,才能在通信企业获得更快的晋升?”上面这个问题,小枣君在知乎上经常被问到。这个问题还有一个更通俗的版本:“我究竟怎样才能更快地当上领导?”这是一个有点功利但却非常现实的问题。现在房价这么高,职位晋升往往意味着收入增长,对年轻人来说,非常有吸引力。况且,拿破仑说过:“不想当将军的士兵,不是好士兵”。一个人渴望升职,往往说明他对自己的能力有自信,希望获得更大的权力,创造更大的事业。然而,对于这个问题,小枣君自认为是没有资格进行回答的。因为各方面的原因,我的职场之路并不成功,工作了十多年,也只当过一个小科长。不过换个角度来说,虽然我没有成功的经验,但我有失败的经验。也许,经验的经验更有价值呢?今天,索性写一篇职场失败复盘,送给有缘人。▉ 年轻人一般工作多久,会迎来晋升?现在的企业都讲究年轻化,提拔年轻人的速度明显加快。一般来说,校招新员工进入职场,6~12个月的时间,在领导和同事心目中的个人能力印象就已形成。技术是否OK,做事是否靠谱,人品是否过关,属于内向型还是外向型,哪方面能力强,哪方面能力弱……所有这些,都已经有了初步的评判。后期,这个员工如果想要扭转领导或同事对自己的印象,会非常困难。18~36个月,第一拨优秀的年轻人,开始成长为部门业务骨干。30~48个月,迎来第一次的基层管理干部选拔。基层管理干部的常见职务,是经理或科长。通常来说,会带领一个10人左右的小团队。一般情况下,外地项目现场的晋升速度和频率,会明显快于总部。尤其是海外项目,晋升更快。因为海外人员流动大,老员工待久了就会考虑回国,需要年轻人不断地接班。值得一提的是,海外管理职位的“含金量”可能比国内更低。尤其是项目线的职位,项目结束,可能就没了。不像国内的行政线职位,部门的成立和解散几率小一点。我回忆了一下,我入职后直接去的海外,大约是1年左右,就成为项目现场的技术经理,算是小团队的负责人。入职后大约4年,当上科长,算是正式的管理岗。基层管理岗位虽然职级低,是个“芝麻绿豆官”,但非常锻炼人。一个人的管理风格,基本上形成于这个阶段。一般来说,想要晋升更高职位(科长升部长),必须在基层管理岗位锻炼至少3年。根据我的观察,80%的职场打工人(包括我),职业生涯止步于这个层级。再往后发展,职称(职级)提升容易,但是管理职位提升很难。管理干部晋升,基本上是“十里挑一”同样是因为管理团队年轻化的趋势,当代企业晋升中层干部的年龄红线也在不断下降。现在,如果35岁还没晋升中层,后面的希望会越来越渺茫。这也是35岁中年人焦虑的一个主要原因,职场发展到了天花板,干不过别人,被变相淘汰。再往后是高层。这个级别我没有见识过,就不瞎哔哔了。等我退休的时候,看看能不能有机会写写。总之,在讲武德的情况下,年轻人争取晋升要趁早,越年轻后面越有优势。传统那种“熬资历、排顺序、等位置”的方式,反正在私企是越来越少。▉ 职场晋升的依据,究竟是什么?说白了,就三条,一是能力,二是业绩,三是背(guan)景(xi)。先说说能力。我们经常会听到这样的话:“XXX的能力不行。” 什么是能力?能力是个非常虚的概念。所谓技术能力、业务能力、沟通能力、管理能力,都叫能力。新员工“八大基础能力”不同的公司、不同的领导、不同的岗位,对能力的要求不同。而且,对能力的评价标准也不同。以前我担任能力提升总监的时候,行业里有个逼格比较高的东东,叫做个人能力色谱(矩阵),我也搞过一个。技术人员能力色谱除了色谱之外,还有非常详细的能力评价标准:可以看出,大公司对员工能力标准的要求,是非常细致的。公司的HR,往往依据这样的标准,对员工进行针对性培训,提升员工的能力。有些企业依葫芦画瓢去仿照,却无法落地。这和公司管理水平与企业文化有很大的关系。对一个人的评价,是一个很动态很主观的过程。每个人内心的评价标准不一样,每个岗位对能力维度的侧重也不一样。如果掺杂一些“人情世故”在里面,就更难落到实处。主观评价的方式(包括现在很流行的所谓“360° 环评”),最后就沦为形式主义,甚至利益交换。很多时候,所谓能力评判,其实就是领导的一句话。而领导的这句话,通常来源于对该候选人长期表现的综合主观判断。换句话说,就是:“领导心里有杆秤。”再看看业绩。业绩这个东西,某种程度来说,是能力的一种体现。但是,业绩并不完全看能力,也看运气和选择。很多新员工在选择片区或项目的时候(如果有机会选),很喜欢选择轻松和舒适的地方,选择“比较闲”的项目。如果你想要有更好的职业发展,建议不要这么做。越大的项目,越重要的项目,公司各级领导的关注度越高。你如果表现出色,时不时做出点成绩,或者得到客户的表扬,很容易被领导看到,留下好印象。此外,大项目的工作压力大、要求高,厉害的同事很多。你参与到项目之中,个人的成长速度和资源积累速度也快,升职的机会也大。想要快速晋升职位,千万不要去边缘岗位。一定要争取去赚钱最多的部门,去最核心的主力业务科室。边缘岗位一般是“养老岗位”,虽然很悠闲,但不在后备管理干部选拔范围之内。这种职位,一般属于老员工的萝卜坑,新员工不要去碰。▉ 如何看待“关系”和“站队”有人的地方就有江湖,职场往往是最险恶的江湖。现在很多企业的内部晋升,遵循这么一个潜规则:“基层看能力,中层看站队,高层看政治。”也就是说,你的业务能力,决定你能不能当个小领导;你的站队能力和关系网,决定你到底能爬多高。这是职场文化的现状,不仅是华人企业,老外的公司也是如此。只不过,华人企业(儒家文化?)好像表现得更为明显一些。一个人如果过于理想主义,很难在商业职场环境下生存,更别提晋升。如何经营人脉和关系网,不在本文的讨论范围之内。小枣君在这方面直接抓瞎,也没资格进行分享。唯一我想说的是,在职场上,站队不仅是能力问题,更是运气问题。十多年的职业生涯,我也算见识了不少“职”海沉浮。今天还风风光光,第二天就人走茶凉,常有的事。有些人,完全把自己的前途押宝在站队上,没有锻炼自己的能力,也没有把握住关键资源,甚至关系网络都维持得不好。一旦靠山倒了,自己对新领导没有价值,很快也就凉了。 在通信行业的职场,岗位调动非常频繁。领导在一个岗位待久了,可能遇到晋升,也可能遇到轮岗。在这种情况下,就要看他能不能带你走。如果能带,固然是好。但大部分情况下,是不能带的。这个时候,之前麾下的干将,就要考虑自己的价值和去处。通常来说,新来的领导会优先选用自己喜欢风格的下属。但是,如果老骨干有不可替代的价值,他也不敢轻易撤换。说白了,还是那句老话,稀缺性产生价值。一个人,要想办法让自己不可缺少,地位才会稳。没有价值的人,怎么拉关系或站队都没用。▉ 通信人职位晋升的最大瓶颈是什么?通信人很多是理工科出生,技术上都比较强,业务也熟练。但是,在管理理论认知方面,非常欠缺。技术派,喜欢用业务和技术能力来树立管理威信。并且,他会认为,业务和技术能力是自己晋升的唯一因素。这种想法,显然是不对的。业务和技术能力强,并不等于管理能力强。恰好相反的是,业务和技术能力最强的人,往往在管理能力方面很弱。但是,业务和技术能力差的人,肯定当不了领导,无法服众。所以,通常来说,业务和技术能力排在前25%的人,就有了管理岗位的竞争资格。管理是一门学问,是研究人性的哲学。很多人,工作了几年,积累了一些管理经验,然后就说自己懂管理。这是不成熟的想法。他们的野生管理经验往往缺乏理论的指导,无法发挥更大的价值。如果能够系统地进行管理知识的学习,深入了解一下组织能力提升和团队运作,会有很大的帮助。当年我从公司离职之后,听了很多管理学的课,收获就非常大。以前想不明白的问题,就想明白了。以前总不知道自己错在哪里,系统地学习了管理学之后,才找到了原因。我觉得,如果在职的时候能学一下管理学,我的职业生涯应该会走得更远。现在很多人去考MBA,我个人觉得没有必要。你如果真正想学东西,就会发现,相关的书籍和课程很多,完全可以自学。偶尔听听专家的线上或线下课程,足够了。MBA,更多是镀金,年龄越大,越没有必要去学。很多人学MBA,是为了混圈子,经营外部社交关系网络。我前面说了,社交关系网这种东西,你如果对他们没有利用价值,他们也不会帮你。▉ 通信人最容易犯的管理错误是什么?在管理方面,通信人(包括所有理工科人)最容易犯的错误,就是将事情都揽在自己身上,不懂得分工和赋能。自己拼命干活,累得半死,感觉像是体恤下属,觉得下属会很感激,团队会更稳固。实际上,这种做法无法让下属承担更大的压力,得不到锻炼。从长远看,是害了下属。俗语有云:“慈不掌兵,义不掌财,情不立事,善不为官”。用孙子的话说,就是:“厚而不能使,爱而不能令,乱而不能治,譬若骄子,不可用也”。什么意思呢?就是说,掌兵可以有仁爱之心,但是切忌仁慈过度。如果当严不严、心慈手软、姑息迁就、失之于宽,就会导致“不能使”、“不能令”、“不能治”,领导者丧失领导能力。作为管理者,切忌优柔寡断。总想着要当老好人的人,是不可能成为优秀管理者的。我对自己最大的评价,就是过于优柔寡断。还是那句老话,管理问题其实是人性问题。对人性的理解越深刻,管理的水平就越高超。▉ 是不是管理者必须强势?强势并不是成为一个领导者的必要条件。但不可否认的是,越强势的人,在管理上会越有优势。男性管理者建立管理威信的方式很多,例如业务能力、人格魅力等。相比之下,女性管理者非常吃亏。女性管理者通常很难通过业务能力得到认可,更多时候需要借助强势的态度,建立管理威信。截至目前我接触到女性管理者,都有明显的强势性格,做事情杀伐果断、雷厉风行。如果不这么做,她们很难赢得认可。职场对女性的不公平,所言非虚。▉ 职场晋升,有什么小窍门吗?我个人反正是没有什么小窍门。如果有的话,我也不至于此。有一点建议可能会对大家有用,那就是一定要敢于把握时机。通常来说,在本部门一边奋斗一边等待,是常见的晋升方式。然而,有一个更容易的晋升方式,就是跳动晋升。跳槽是一种。还有一种,如果公司成立新部门、新项目,需要管理人员。这个时候,就应该慎重思考,然后看看是否要把握这样的机会。有人面对机会会退却,觉得自己不是那块料。其实,最后你会发现,上去的那个人,还不如你。长时间在一个岗位上工作,人的能力得不到增长,激情也容易消退。时间久了,职业生涯就走进了死胡同。所以,我个人建议,同一岗位不要工作超过五年。如果升职无望,就要积极寻求转岗或跳槽机会。如果领导不器重你,那么也果断离开吧,不要浪费生命。 ▉ 是不是一定要“往上爬”?其实,当不当领导这种事情,并不是强制的。很多人的性格,他就不适合当领导。我相信,很多人也不喜欢当领导,只希望走技术路线,踏踏实实钻研技术,专注业务。但是,中国的社会环境,就是重官轻工。亲朋好友都觉得,当官好。一辈子做打工人,太没出息。企业在待遇方面,也明显偏向管理干部。打工人不仅在地位上比较弱势,在职场上也得不到足够的尊重。上了年纪,还容易被“卸磨杀驴”。在这方面,我觉得整个社会应该反思,我们天天都说“工匠精神”,那么我们是否真正给了“工匠”足够的待遇和尊重?我们在价值观导向上,是否过于鼓励“当官”而贬低“打工”?好了,以上就是小枣君在职场晋升方面的一点点感悟,希望对刚入职的年轻人有所帮助。大家也不用觉得太黑暗、太绝望,现实社会就是如此,习惯了就好。在社会打拼的过程,就是不断吃亏和成长的过程。我唯独希望,年轻人能够守住心智,坚持正确的价值观。只要心里有明灯,走再多的夜路也不会害怕。
56767
收到反馈时间:2020.12.6
症状简易说明:华硕主板,在开启某些东西后,开机提示“the system has POSTed in safe mode”
症状可能存在范围:仅限于Asus主板? 最近收到一客户反馈说,无法开机,提示下述内容 一开始以为是Bios问题,遂去官网查找,发现并没有更新的版本 尝试扣电池下来,发现虽然正常了,但一旦开启了XMP后,问题依旧,遂怀疑是不是XMP导致的,在关闭了XMP,同时把内存的频率调回正常后,系统可以正常启动了 后续经查,发现该问题仅存在于华硕Asus,原因未知,估计可能还是Bios的问题,只能等待厂家的修复了
13704
收到反馈时间:2020.12.14
症状简易说明:双击打开图片,提示“被调用的对象已与其客户端断开连接”
症状可能存在范围:仅限于Win10
最近收到一客户反馈说,它电脑双击图片无法打开,一双击打开就出现下述错误 最开始怀疑是有程序篡改了系统设置,遂使用360进行全盘查杀,然而并没有发现任何问题,查看是否有恶意启动程序,也并未发现任何恶意程序,正在一头雾水之际,忽然想起Windows不是自带有修复吗,没办法,就死马当活马医 首先以管理员身份打开命令提示符(CMD) 管理员状态下的命令提示符可以看到前面是带有Administrator(中文管理员)字样的,然后在窗口中输入:sfc /scannow 然后回车,就可以看到系统开始对自身进行检查 耐心等待片刻,看到以下字样表示执行完成, 然后我们重启系统,启动好以后,再打开图片,发现已经正常了
9111
原文载自:https://blog.csdn.net/qq_35583007/article/details/92793605一、WinDbg是什么?它能做什么?WinDbg是在windows平台下,强大的用户态和内核态调试工具。它能够通过dmp文件轻松的定位到问题根源,可用于分析蓝屏、程序崩溃(IE崩溃)原因,是我们日常工作中必不可少的一个有力工具,学会使用它,将有效提升我们的问题解决效率和准确率。二、WinDbg6.12.0002.633下载:下载 “WinDbg6.12.0002.633.zip”三、设置符号表:符号表是WinDbg关键的“数据库”,如果没有它,WinDbg基本上就是个废物,无法分析出更多问题原因。所以使用WinDbg设置符号表,是必须要走的一步。1、运行WinDbg软件,然后按【Ctrl+S】弹出符号表设置窗2、将符号表地址:SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols粘贴在输入框中,点击确定即可。注:红色字体为符号表本地存储路径,建议固定路径,可避免符号表重复下载。四、学会打开第一个dmp文件!当你拿到一个dmp文件后,可使用【Ctrl+D】快捷键来打开一个dmp文件,或者点击WinDbg界面上的【File=>Open Crash Dump...】按钮,来打开一个dmp文件。第一次打开dmp文件时,可能会收到如下提示,出现这个提示时,勾选“Don't ask again in this WinDbg session”,然后点否即可。当你想打开第二个dmp文件时,可能因为上一个分析记录未清除,导致无法直接分析下一个dmp文件,此时你可以使用快捷键【Shift+F5】来关闭上一个dmp分析记录。至此,简单的WinDbg使用你已经学会了!五、通过简单的几个步骤学会分析一些dmp文件。分享一个8E蓝屏dmp案例的分析过程:当你打开一个dmp文件后,可能因为太多信息,让你无所适从,不过没关系,我们只需要关注几个关键信息即可。第一个关键信息:System Uptime(开机时间):通过观察这个时间你就可以知道问题是在什么时候出现的,例如时间小于1分钟基本可以定位为开机蓝屏,反之大于一分钟则可证明是使用的过程中出现问题了。接下来用一个简单的例子来学习简单的dmp分析,下图中System Uptime: 0 days 0:14:23.581,意思是0天(days)0小时14分23秒581毫秒时出现蓝屏了,看来是没多久就蓝屏了,这位用户很悲催……那么是什么导致蓝屏的呢?接下来我们就要注意第二个关键信息了!第二个关键信息:Probaly caused by(造成蓝屏可能的原因)这个信息是相对比较重要的一个信息,如果你运气好的话,通过这个信息基本上可以看到导致蓝屏的驱动或者程序名称了,就像下图一样,初步的分析已经有了结果,Probaly caused by后面显示的是一个名为KiMsgProtect.sys的驱动文件导致蓝屏,这个文件就是恒信一卡通的一个关键驱动。因此蓝屏则很有可能和一卡通有关。括号中驱动文件名后面的+号代表的是偏移地址,假如多个dmp文件的驱动文件名一样,且偏移地址也一样,则问题原因极有可能是同一个,这个偏移地址与汇编有关,这里不多做介绍。其实,对于分析蓝屏dmp并不是每次运气都那么好,假如刚刚打开dmp文件未看到明确的蓝屏原因时,我们就需要借助一个命令来进一步分析dmp,这个命令就是:!analyze -v,这个命令能够自动分析绝大部分蓝屏原因。当初步分析没有结果时,可以使用该命令进一步分析故障原因,当然你也可以直接点击链接样式的!analyze -v来进行执行该命令,为了让大家更直观的看懂里面的信息,大家可以直接看图片中的注释信息。看了这么多信息之后,这个蓝屏dmp到底是怎么回事呢?根据dmp给出的信息,应该是:顾客上机0天(days)0小时14分23秒581毫秒时,一个名为PinyinUp.exe触发了KiMsgProtect.sys这个驱动的一个Bug,导致蓝屏。那么PinyinUp.exe和KiMsgProtect.sys都是哪个厂商的?一般要知道这个信息,只能去用户的机器上找了,我去找了之后发现PinyinUp.exe是搜狗输入法的自动升级程序,KiMsgProtect.sys是恒信一卡通这个计费软件的驱动,所以这个dmp表示出来的意思看上去是搜狗拼音和恒信一卡通搞在一起,出了问题!当然排除方法很简单,把搜狗输入法的自动升级程序删除掉,再看看是否仍然有蓝屏问题发生就ok了!学到这里,基本上已经可以分析绝大部分dmp文件了,但是分析蓝屏dmp要比较谨慎,对信息需要重新验证一次才更加保险,验证方法很简单,在WinDbg的命令输入框内,输入!process命令,就可以验证触发蓝屏的程序到底是否正确了。运行!process命令后得到的信息:至此,掌握以上几个简单的分析方法之后,基本上绝大多数dmp大家都可以独立分析了,当然WinDbg是个强大的工具,同时蓝屏的原因也有很多,如果想分析的足够准确,那么就只有多学多练,多去分析,因为WinDbg分析除了懂得几个命令之外,经验更加重要!六、合理再给大家一些分析建议:并不一定每个dmp文件都可以分析出有用的结论,因此分析dmp并不需要对每个dmp文件的结果过分纠结,其实蓝屏dmp分析也是观察一个规律或者规模的问题定位方法而已。例如你分析了10个dmp,有5个dmp都指向同一个蓝屏原因,另外5个dmp的信息五花八门时,那么你完全可以先处理掉5次蓝屏,同一个原因的问题,因为解决了这个问题之后,后面的问题可能就都解决了!
12882
最近搞到一块硬盘,之前是装在AMD主板上的,原来的平台无法使用,正好又想看下硬盘桌面上还有什么数据需要保留的,遂尝试挂载到Intel主板上,启动,在进到Logo界面就自动重启了,在经过一番尝试后,终于成功找到如何正常使用的方法。 注意:以下方法仅适用于AHCI模式下,关于原理的说明仅仅只是个人的一些理解,并非专业解释,大概理解即可 基本说明:首先我们需要先了解,Intel的主板更换成AMD的,可以正常进入,只需要重新安装驱动即可,但是为什么AMD的更换成Intel就会无法启动呢,这里其实就涉及到一个很重要的东西,AHCI控制器驱动(也叫磁盘控制器驱动),有时候我们旧的芯片组更换到新的芯片组的主板会无法启动,或者启动出错其实也是因为这个,Win7里叫msahci,Win8或更高版本里叫storahci,当我们刚安装好系统,还未安装ahci驱动的时候,其实就是系统自带的ahci在发挥作用 (以下内容处于争议阶段) 站长认为,Intel的ahci驱动与msahci是处于一种同时运行的状态,当把Intel更换成AMD后,首先由系统检测当前主板的磁盘控制器是否有安装,如果有安装则加载当前主板的磁盘控制器驱动,如果未安装则尝试使用msahci,如果这个服务未运行,或者不支持当前的主板,则自动重启,或者蓝屏。 而AMD的ahci驱动安装后,msahci的驱动状态会被设置为3,也即是手动启动,当更换成Intel以后,由于这个服务被设置成手动启动,那么系统因为检测到当前主板不是amd的,但新的磁盘控制器驱动并未安装,所以只好尝试从msachi进行加载磁盘,但又因为这个服务处于未启动状态,系统无法加载,遂启动失败,系统重启 解决方法:既然知道了原因,其实就很好解决了 1.首先我们需要先准备好一个PE系统,因为注册表的修改需要在PE下进行,站长这里使用的是我们自己定制的PE 2.如果您的PE有便捷的注册表编辑工具,也可以使用,如果没有也可以使用默认的regedit,都可以实现,首先我们先打开软件(这时候看到的注册表是PE的,并不是我们需要更改的,这点需要注意),然后在左侧列表中选择一个项,我这里使用的是HKEY_LOCAL_MACHINE 然后我们点击左上角文件,加载配置单元(这里的作用是把我们真实系统的注册表挂载到现在这里) 在弹出的窗口中,找到c:\windows\system32\config,这里可以看到有许多个文件,不用管,我们只需要找到SYSTEM这个文件挂载即可 选中,点击打开,会弹出一个输入项名称,这里输入的是方便我们之后寻找的一个名称,当设置完成后,展开刚刚你选中的那个项,就可以看到有一个你前面设定的名称的项出现在那里 当你看到这个,说明你真实系统的注册表已经挂载成功了,接下去,我们只需要找到ControlSet001\Services\msahci(或storahci),然后在右侧将Start的键值修改成0,然后重启即可。 3.非必须,不过建议配合SkyIAR组合使用
3386
这个故事发生在距离中国不远的某俄罗斯边陲小镇。 他在一家硬盘维修中心工作,某天一位顾客带来了一块损坏的500Gb移动硬盘,这块硬盘来自河对岸的中国店铺,价格低廉的不可思议。但这块硬盘使用起来却不太正常,如果你想拷贝一部电影到上面的话,只能播放最后5分钟。 于是他打开了这块硬盘,全维修中心的人都笑翻了,因为他们之前从没有见过这样的移动硬盘。 这块移动硬盘竟然是由一个128MB的U盘和两个大螺帽组成,之所以加入大螺帽显然是为了增加重量以让人确认这是块移动硬盘。令人称奇的是这块“移动硬盘”的容量在系统中显示的完全正确,并且据说店家为了向顾客证明这块硬盘是正常工作的,还特意拷贝了两个文件到其上,相信再认真的顾客也难免被欺骗了。 实际上这块硬盘中所带的U盘一直工作在"looped"模式,当用户拷贝大文件的时候,如果空间被占用完就自动擦除前面的空间继续拷贝,这也是为什么为什么拷贝的电影只能播放最后5分钟的原因。 再次慨叹我泱泱中华之人才济济,在此也希望诸位看官引以为戒勿要中招,也欢迎您与我们分享您的防骗高招。
3666
最近重装了AIX,安装过程中忽略了图形界面,装完以后才发现,没有图形界面,无奈只好上网搜索,然而搜索了半天讲的不是远程连接怎么显示图形化的,要不然就是AIX默认就是图形界面的,如果默认是命令行界面如何切换到图形界面却没有人进行说明,最后终于在一条链接中找到了方法 CDE的安装步骤安装CDE所需要的文件集可以在AIX操作系统的基本安装介质的卷1(通常情况下,CD1)中找到。
要安装CDE,请以root用户登录,并在命令行中输入:
smitty install_all
然后在SMIT菜单中选择:
1、选定安装设备。如果您的安装介质是CD,请选择/dev/cd0。
2、将光标移动到Software to install上,并按F4。
3、逐个选择要安装的文件集并按F7选中。
4、按回车键开始安装步骤。
5、再按一次回车键确认这些文件集的安装。
以下是运行CDE所必须的文件集(您可以用lslpp -l X11.Dt*来列出您的系统上已经安装的CDE文件集):
X11.Dt.ToolTalk -- AIX CDE ToolTalk 支持
这个文件集中包含为 AIX CDE 提供ToolTalk支持所需要的库文件和可执行文件。
X11.Dt.bitmaps -- AIX CDE 位图
这个文件集中包含 AIX CDE 所需要的图标和背景等图案。
X11.Dt.compat -- AIX CDE 兼容性包
这个文件集中包含有图标,操作定义和可执行文件等文件。这些文件已经从当前的AIX CDE软件包中删除,并且不会在未来的CDE发行版
本中出现。提供它们的目的是为了便于从旧版本的CDE迁移到当前的版本。
X11.Dt.helpinfo -- AIX CDE 帮助文件
这个文件集中包含有完整的AIX CDE帮助文件。
X11.Dt.helpmin -- AIX CDE 最小帮助文件
这个文件集中包含有最小化的AIX CDE帮助文件。
X11.Dt.helprun -- AIX CDE 运行时帮助
这个文件集中包含有桌面帮助系统所需要的可执行文件,资源文件和配置文件。
X11.Dt.lib -- AIX CDE 运行时连接库
这个文件集中包含有支持桌面应用程序的运行时连接库,包括所有桌面服务,桌面小程序和桌面帮助所要使用的所有连接库。
X11.Dt.rte -- AIX 通用桌面环境
这个文件集中包含有在X Windows上运行CDE所需要的可执行文件,库文件和资源文件。
以上内容安装完成后,我们执行shutdown -Fr重启,等待系统重启完后就可以看到熟悉的图形界面了
27219
【现象】 一台台式机最近突然通过有线网卡和无线网卡都无法自动获取IP,右下角网络图标为打叉状态,打开网络和共享中心,可以看到写着相关服务没启动,查看系统服务,发现以下几个服务(DHCP Client、WinHTTP Web Proxy Auto-Discovery Service、Network List Service、Network Location Awareness)均无法正常启动,尝试启动DHCP Client,报错DHCP Client服务(位于本计算机上)错误5:拒绝访问。【解决方案】 1.第一想到的是会不会是安全软件优化的时候不小心把相关服务给优化了,随后查询安全软件中最近的拦截记录与系统启动优化记录,然而并未有任何关于相关服务被拦截的记录 2.会不会是注册表权限的问题,遂尝试修改注册表的权限 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dhcp HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip 尝试在注册表编辑器中打开这两项,选择权限设置,添加 Network Service 与 LOCAL SERVICE 权限并设置为【完全控制】,然后选中【用在此显示的可以应用到所有子对象的项目替代所有子对象的权限项目】复选框。重新启动问题依旧。 3.尝试重新创建相关服务账户net localgroup administrators localservice /add
net localgroup administrators networkservice /add 添加完成后,重启,问题依旧 4.尝试修复Winsocknetsh Winsock reset 提示修复完成后重启,问题依旧 5.在尝试上述方法仍然无法解决的情况下,突然想起来以前在解决Office 每次运行都要提示配置的时候有一个方法是新建一个用户,想到此,赶紧打开计算机管理窗口,新建了一个用户,然后把当前的用户注销掉以后,使用新的账户登录,此时右下角仍然为打叉状态,在命令提示符下,再次修复Winsock,重启 重启完后,可以看到右下角久违的网络图标终于正常了,查看系统服务,也均能正常启动了