在十年前首播的美剧《黑镜》中,第一集的剧名是《马上回来》,故事讲述了女主的男友不幸因车祸去世,在葬礼上,她的朋友告诉她,有个软件能收集一个人生前的所有信息,从而模拟出他生前几乎完美的对话功能。...但在今天,当年的剧情已经可以在现实中实现,至少在数字形式上是可能的。...对此,拉杰瓦尔迪安和Delphi的员工坚信,这种服务是有市场的,他表示:「我们专注于帮助教练、创造者、专家、政治家、首席执行官等人群扩大自己的影响力,并让自己为他人所用。」...目前,Delphi尚未公开列出其定价结构,但拉杰瓦尔迪安曾经表示,会考虑收取每月的订阅费用,并且在该方案中,添加语音功能和专用电话还要额外收费。...现在,已经有超过100个人在Delphi的内测版中创建了自己的数字克隆,其中包括格莱美奖获奖制作人Illmind,他的克隆提供基于文本的回复以及正常的职业和生活指导来制作。
DCOM的详细信息可参见(阅读原文查看) https://msdn.microsoft.com/en-us/library/cc226801.aspx 在COM模型中,我们知道所有的COM 接口都要继承...通过QueryInterface函数,可以查询任意接口。 而在DCOM模型中,对应于IUnknown的接口为IRemunkown 和IRemUnkown2 两个远程接口。...TypeLibrary在加载的时候,有个很有趣的行为: 首先会按GUID查找,如果查找失败的话,会按文件名来查找。如果按文件名查找也失败的话,这时会按照Moniker 来查找。...我们注意到,BITS 服务运行在 SYSTEM 完整性等级(IntegrityLevel)上。...CVE-2017-0213的无论从挖掘和利用,感觉都有些剑走偏锋,正属于这种比较冷门的一类。这种漏洞似乎难以通过fuzzing的方式来发现。通常这种漏洞的发现,需要对Windows的代码非常熟悉。
IUnknown接口有一个用来查询接口的函数QueryInterface。...2、QueryInterface功能简介: 客户可以通过IUnknown中包含的QueryInterface函数查询某个组件是否支持某个特定的接口。...QueryInterface的行为必须是稳定的。 、QueryInterface返回IUnknown接口时,总是返回同一IUnknown指针。...总结:COM为QueryInterface制定上述规则的目的使为了使QueryInterface使用起来更为简单、更富有逻辑性、更一致及更具确定性。...对于新客户则可以自行决定使用老接口还是新接口。 这种处理多个版本的方法最有效的地方在于它是无缝的。客户不需要做任何附加的动作,因为接口的标志符同其版本是完全绑定在一块的。
不过也不是完全相同的,例如报文标准存在不同,Delphi使用的报文标准是EDIFACT,而KSD和NEXANS使用的报文标准是VDA标准,这种标准经常用于德国汽车行业。...本文中,我们以Delphi的需求为主,详细聊一聊项目的需求和实施过程中遇到的问题。 项目需求 Delphi EDI项目是Delphi发起的需求。...说到这里大家可能注意到,无论是接收还是发送,对于文件的处理都是以标准XML文件作为媒介的,为什么要这么做呢,参考为什么工作流中围绕XML做EDI报文数据解析/生成?即可得到答案。...SAP集成方式 知行EDI平台和SAP集成有多种方式,常见的有以下两种: 使用自带的IDOC 端口,可以直接和SAP系统进行tRfc连接,只需要经过简单的配置,即可实现业务数据直接进入SAP系统,并能够从...使用传输工具进行集成,在Delphi EDI项目中,EDI和SAP之间的XML文件传输就是使用共享文件夹完成的,EDI将解析完成的长期需求预测XML文件放入共享文件夹中,SAP系统从中读取文件,读取完成后将文件移动到
在组件对象模型(COM)中,QueryInterface和NonDelegatingQueryInterface是两个核心的函数,它们用于接口的查询和管理。...IUnknown接口和QueryInterface在COM中,每个接口都继承自IUnknown接口,IUnknown提供了三个基本方法:QueryInterface、AddRef和Release。...在这种情况下,外部对象的QueryInterface方法通常会委托给内部对象的QueryInterface方法,以确保正确的接口查询和引用计数管理。...这种设计允许COM对象在保持引用计数和接口查询的正确性的同时,支持复杂的聚合关系和接口继承。...通过深入理解QueryInterface和NonDelegatingQueryInterface的工作原理和使用场景,开发者可以更有效地在COM编程中管理接口和对象的生命周期。
在本次讲座中,我们以Delphi5为开发工具,标准的paradox表为后台数据库,来向大家介绍如何进行最简单的数据库编程。...在本例中,我们将实现对一个数据表单的添加、修改、删除以及对表中数据进行查询的功能。 ...>这样控件的属性就设置完毕了,注意到dbgrid里面的“编号”、“姓名”等栏都是数据表中的属性,在ryb.db里面定义,而不是在前端的delphi程序里面定义。...至此,我们实现了使用Delphi这种快速开发工具编写简单的数据库应用程序,细心的读者可能注意到了,到目前为止连一行程序都没有写,确实是这样,这就是第四代程序设计语言(可视化的编程语言)给我们带来的好处。...命名的规范 不同的数据库产品对对象的命名有不同的要求,因此,数据库中的各种对象的命名、后台程序的代码编写应采用大小写敏感的形式,各种对象命名长度不要超过30个字符,这样便于应用系统适应不同的数据库
在组件对象模型(COM)编程中,QueryInterface和NonDelegatingQueryInterface是用于接口查询和管理的核心函数。...它们允许客户端获取对象的不同接口,是COM机制中的关键部分。本文将详细介绍这两个函数的测试用例设计和执行,以确保它们的正确实现和行为。...测试用例4:使用返回的接口指针调用方法,验证是否能够成功执行预期操作。引用计数测试:测试用例5:请求接口前,记录当前对象的引用计数,请求接口后验证引用计数是否增加。...return 0;}在实际的测试中,每个测试用例都应该详细记录其执行步骤、预期结果和实际结果,以便于问题的定位和修复。...通过这些测试用例的执行,可以确保QueryInterface和NonDelegatingQueryInterface函数的正确实现和行为,从而保证COM对象的接口查询和管理机制的稳定性和可靠性。
InternalQueryInterface函数定义在CComObjectRootBase类中(这里显示的代码已经删除了调试扩展的内容)。...在查询接口之前,先检查查询的接口IID,如果请求的是IUnknown,从表中取出第一个表项立即返回,不需要偏历表的剩余部分。 ...所有的COM_INTERFACE_ENTRY_XXX_BLIND宏都使用了这种行为。比如COM_INTERFACE_ENTRY_AGGREGATE_BLIND。...:_Delegate主要用于聚合技术中, // 和_Cache主要区别是需要客户手动创建内部组件对象,一般在FinalConstruct中创建内部对象 //2.相关的宏: a....实现的通用后门,用户可以自定义func,在func函数中暴露COM接口,但需要遵守COM实体身份规则。
,我们将pIX初始化为NULL,这是一种比较好的编程习惯,但由于QueryInterface是由程序员而不是由系统实现的,因此在查询失败的时候,将此指针置为NULL....(this)).使用哪一个不重要,因为他们使用的是同一个实现。...但是在代码中要保持一致,这是因为这两个指针是不一样的,并且COM要求对IUnknown接口返回相同的指针。...例如假定有一个类CA定义如下: Class CA:public IX,public IY{}; 由于CA同时继承了IX和IY,因此在可以使用IX或者IY指针的地方均可以使用指向CA的指针。...当然IX和IY的虚拟函数表中的内容是不一样的。因此在将一个IX vtbl传给bar时候,此函数将不能正常工作。
为系统提供组件的服务器,以及使用组件提供的功能的客户端。 一个注册表,用于跟踪组件在本地和远程主机上的部署位置。 一个服务控制管理器,可以在本地和远程主机上找到组件,并将服务器连接到客户端。...然而,接口的定义在不同版本当中也是有可能会变化的,为了兼容以前的版本同时也提供新功能,还需要让这个对象可以返回不同版本的接口。...QueryInterface, {xxx-xxx-xxxx...}” QueryInterface使用的是另一个UUID,用来表示不同版本的接口。...QueryInterface作为IUnknown中的一个纯虚函数,做的事情其实很简单,判断自己能不能转成某个GUID所指向的类而已。...将这个程序集放到Dnspy反编译可以看到在ClsidAttribute标记有{ca8a9780-280d-11cf-a24d-444553540000},构造函数里面有UUID。
孩子被激起兴趣并走向麻烦的过程中,父母甚至可能没有注意到机器人,而机器人对孩子不可预测的动作也没有准备。 在这种情况下,机器人最好停下来,而不是改变方向。...当确实发生干扰时,机器人与旁观者之间的协商过程应尽可能快速简便,就像我们在人群中用简单的短语(如“打扰了”)完成沟通一样。我们不需要详细了解人群中的其他人在做什么,或者他们将在哪里绕过其他人。...当我们注意到有关周围其他人的高级信息时,我们会在潜意识中将其纳入行动和决策中。如果有一位老人在我们前面走过,我们会为他让出更多的空间。...旁观者需要机器人行为的被动心理模型,以实现两者的共同目标而互不干扰 例如,你可以快速地瞥一眼街上向你走来的人,然后评估那个人的肢体语言,以确定这个人在与你擦肩而过时是否有可能改变方向。...这种隐含的有前后联系的信息通常不包含在设计者为自动驾驶汽车开发的概念模型中,但是对于与道路上的其他实体进行安全交互至关重要。
组件对象模型(COM)是微软推出的一种软件组件技术,它允许不同的软件组件在多种编程语言中被创建和调用。...COM对象创建概述在COM中,对象的创建通常涉及以下几个关键步骤:类厂的获取:客户端首先需要获取一个类厂(Class Factory)的实例,类厂负责创建特定类型的COM对象。...LockServer方法用于控制组件的锁定状态,影响组件的卸载行为。...导出DllGetClassObject函数:在DLL中实现并导出DllGetClassObject函数,该函数负责创建类厂实例。...pClassFactory->CreateInstance(nullptr, IID_IUnknown, (void**)&pUnknown); if (SUCCEEDED(hr)) { // 使用对象
一时间,各种“人在美国”“人在日本”的网红无处遁形——原来他们都在国内。 IP属地来了,究竟谁在“裸泳”。...有些平台还会在部分评论或回答中显示用户IP属地小尾巴,用户自己无法主动开启或关闭该功能。 记者注意到,在小红书、知乎等平台上,一些用户个人页面已显示IP属地,但一些用户还并未显示。...微信表示,为了进一步打击仿冒搬运、造谣传谣等行为。今日头条称,为维护真实有序的讨论氛围,减少冒充热点事件当事人、恶意造谣、蹭流量等不良行为。...原来有段子称,给朋友一打电话就听他说“刚下飞机,人在美国”。那时我感觉你在装,但我又没有证据。现在有了,“你敢发条微博吗?” “北京人的那些事”IP属地为湖南。...有网友调侃:图啥?自己所在地没吃喝玩乐吗? IP属地能否完全准确? 有人疑问称,IP属地准确吗?
QueryInterface接口对COM的重要性不言而喻,该接口的实现有个规则——由QueryInterface返回的IUnknow接口指针必须相同,我的疑问是微软是如何使用C++实现这一COM规则的呢...,调用的是子类中实现的函数,这个子类不是其他的子类,而是其地址被赋给了父类指针的子类(这里就是sub对象对应的类);这种现象出现的原因是——子类中维护的虚函数表中有关func函数的地址已经被替换成子类中实现的...在CTestSub类中实现func时得出如下试验结果: 在该测试程序中我们三次进入func函数,其中的this值都是一样的为:0x12ff48,这个也是对象sub的地址。...这样在QueryInterface使用的this指针就是组件的类的实例地址,而不是组件父类的实例地址了。要是的返回的IUnknow地址一致,则this指针指向组件类的实例是必需的。...COM的QueryInterface函数也就是使用了C++虚函数的这一技术规则;只要COM组件类实现了QueryInterface接口函数,无论怎么调用该函数,该函数中使用的this指针始终指向组件类的实例
它的这些设置都是通过属性进行的 OLEDB属性与属性设置 OLEDB虽然是基于COM的一组接口,但是它与标准的COM接口有点不同,它的一大特色在于它自身的属性设置,有的接口虽然对象中存在但是调用QueryInterface...是查询不出来的,只有设置相应的接口才会打开,有的接口可以根据属性值表现不同的行为。...mandatory表示是数据源必须提供的接口,optional表示的是可选性提供的接口,在创建对应的接口时尽量使用必须实现的接口,如果需要使用可选择的接口,一定要判断数据源是否支持。...:目录名(在SQL Server中对应的是具体的数据库名称,对于ORACLE来说没有意义) DBPROP_AUTH_USERID: 用户名 DBPROP_AUTH_PASSWORD: 密码 我们也注意到上面调用...使用IDBPromptInitialize接口来创建数据源对象 上述方法是依托于标准的COM,虽然也成功创建的数据源连接,但是无法在标准的com之上进行更多的初始化操作,导致了有些特定的高级功能无法使用
译者注 这是在Datadog公司任职的Kevin Gosse大佬使用C#编写.NET分析器的系列文章之一,在国内只有很少很少的人了解和研究.NET分析器,它常被用于APM(应用性能诊断)、IDE、诊断工具中...它运行得很好,但是我们的解决方案使用了静态方法,所以在需要处理多个实例时跟踪对象状态不太方便。如果我们能将COM对象映射到.NET中的一个实际对象实例,那就太好了。...(对于ClassFactory的其他静态方法也是如此) } 在构造函数中,我们将ClassFactory的实例添加到一个静态字典中,并关联到相应的本地对象的地址。...在静态的QueryInterfaceNative方法中,我们从静态字典中检索该实例,并调用非静态的QueryInterface方法。 这是可行的,但每次调用方法时都要进行字典查找是很遗憾的。...而且,我们需要处理并发(可能需要使用ConcurrentDictionary)。有没有更好的解决方案? 我们已经有了一个指向本地对象的指针,所以如果本地对象可以存储一个指向托管对象的指针就太好了。
在本篇中,我们将首先介绍数据库设计的基本方法,并附上了一个设计MS-SQL Server数据库的例子。...然后以Delphi5为开发工具,标准的paradox表为后台数据库,来向大家介绍如何进行最简单的数据库编程。 我们将实现对一个数据表单的添加、修改、删除以及对表中数据进行查询的功能。...本例所使用的计算机软硬件环境为:Windows NT 4.0 Server,MS-SQL Server7.0,Borland Delphi 5,PIII550,256M内存。...Client/Server结构编程示例…… 三、数据库编程示例 在本次讲座中,我们以Delphi5为开发工具,标准的paradox表为后台数据库,来向大家介绍如何进行最简单的数据库编程。...一般来讲,在一个MIS系统分析、设计、测试和试运行阶段,因为数据量较小,设计人员和测试人员往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到系统投入实际运行一段时间后,才发现系统的性能在降低……
Alpha Go所使用的技术将应用于机动车辆驾驶,目的是帮助其应对复杂的驾驶情境,目前还处于测试阶段。 在未来的几个月里,一大波无人驾驶车将占领道路。...在强化学习过程中,既没有手动编程过程,也不会给计算机提供具体的实例让其学习。与之相反,计算机会在实验的基础上根据行为和最有可能的结果之间的关系,改变自身的程序。...在今年的消费电子展(CES)中,有一大堆发布会和新品展示,而自动驾驶技术则是其中的焦点。...Mobileye 在致力于开发学习系统方面已经有一段时间了。...他展示了公司使用这种技术的一个案例。在案例模拟中,两条高速公路交于一点,很多汽车要从相对的两个方向汇入同一条道路。 “我们要在防御性行为和攻击性行为之间取得平衡。”
IX, 内部组件CA实现了组件IY,那么根据上述两本书中的描述,在CB查询IY接口时使用如下代码: m_pUnknownInner->QueryInterface(IID_IY, ppv); 那么问题来了...而实际运行当然不会出现这种情况,在查询IY接口时,会调用NondelegatingQueryInterface而非QueryInterface!原因何在?...在C++的类中,如果使用了继承关系,类的结构中就会有一个虚函数表,读者可以自己测试一下,如果是一个没有任何内容的空类,其大小为1 Byte,这个是系统自动填充的内容。...多重继承的情况下,在类的结构中会有多个基类的虚函数表,比如上例,Derived类继承了Base1和Base2,那么其中就有2个虚函数表,在我们调用虚函数时,会从对应的虚函数表中进行查询: 在多重继承中...,派生类中对于基类中虚函数表和各成员的排列顺序与继承的顺序一致,最后才是派生类自己的成员: 由于这样的数据结构,在进行强制转换时,实际上是将虚函数表的指针传出,故转换后指针的值发生了变化。
这款勒索病毒之所以勾起我的兴趣,主要是它与之前的GandCrab、Sodinokibi、GermanWiper、NEMTY等勒索有某些类似之处,都将桌面壁纸修改成蓝色了,笔者通过MD5在app.any.run...样本被人在24号上传到了VT上,依据上传的时间判断可能就是国外那个独立恶意软件研究员上传的,从app.any.run上下载样本,图标使用了类似微信的图标,如下所示: ?...输入勒索提示信息中的Access Code码之后,如下所示: ?...解密出完整的勒索病毒核心是一个PE文件,采用Delphi语言进行编写,如下所示: ? 查看入口代码,如下所示: ? 使用IDA查看字符串信息,里面包含勒索相关信息,如下所示: ?...勒索病毒已经成为了黑产来钱最快的方式之一,大部分做黑产的不就是为了赚大钱吗?难怪会放弃这么好赚钱的机会?