CN108984259B - 界面显示方法、装置及终端 - Google Patents
界面显示方法、装置及终端 Download PDFInfo
- Publication number
- CN108984259B CN108984259B CN201810758955.1A CN201810758955A CN108984259B CN 108984259 B CN108984259 B CN 108984259B CN 201810758955 A CN201810758955 A CN 201810758955A CN 108984259 B CN108984259 B CN 108984259B
- Authority
- CN
- China
- Prior art keywords
- module
- task manager
- windows
- windows task
- injected
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明公开了一种界面显示方法、装置及终端,属于计算机技术领域。所述方法包括:当监测到Windows任务管理器进程启动且完成初始化操作时,应用模块向驱动模块发送进程注入消息;驱动模块将待注入模块加载到Windows任务管理器进程中;待注入模块与Windows任务管理器的图形绘制窗口进行挂钩,并基于图形绘制窗口绘制界面元素,界面元素为非Windows系统自带的界面元素。本发明借助驱动模块将待注入模块加载到Windows任务管理器进程中,待注入模块通过与Windows任务管理器的图形绘制窗口进行挂钩,进而基于图形绘制窗口绘制非Windows系统自带的界面元素,从而在不增加系统开发成本和维护成本,且保证界面响应时间的前提下,满足了用户的个性化需求。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种界面显示方法、装置及终端。
背景技术
Windows任务管理器为系统提供的应用程序,其界面上显示有多个菜单项(包括文件、选项、查看、关机、帮助等)、多个标签页(包括应用程序、进程、性能、联网、用户等)及多个内存数据(包括当前运行的进程数、CPU(Central Processing Unit,中央处理器)使用率、物理内存等)等,可提供计算机性能的信息及所运行的应用程序的详细信息。
Windows任务管理器的界面UI(User Interface,用户界面)布局通常由研发人员进行编译,对于普通用户而言,只能被动应用研发人员所编译的界面,如果想定制符合自身需求的界面UI布局,一般只能通过要求研发人员修改代码实现。采用该种方式,不仅增加了系统的开发成本和维护成本,而且延长了界面响应时间。因此,亟需一种新的界面显示方法,以满足用户个性化的界面显示需求。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种界面显示方法、装置及终端。所述技术方案如下:
一方面,提供了一种界面显示方法,所述方法应用于安装有Windows系统的装置中,所述装置包括驱动模块、应用模块及待注入模块,所述方法包括:
当监测到Windows任务管理器进程启动且完成初始化操作时,所述应用模块向所述驱动模块发送进程注入消息;
当接收到所述进程注入消息,所述驱动模块将所述待注入模块加载到所述Windows任务管理器进程中;
所述待注入模块与所述Windows任务管理器的图形绘制窗口进行挂钩,并基于所述图形绘制窗口绘制界面元素,所述界面元素为非Windows系统自带的界面元素。
另一方面,提供了一种界面显示装置,所述装置安装有Windows系统,所述装置包括驱动模块、应用模块及待注入模块:
所述应用模块,用于当监测到Windows任务管理器进程启动且完成初始化操作时,向所述驱动模块发送进程注入消息;
所述驱动模块,用于当接收到所述进程注入消息,将所述待注入模块加载到所述Windows任务管理器进程中;
所述待注入模块,用于与所述Windows任务管理器的图形绘制窗口进行挂钩,并基于所述图形绘制窗口绘制界面元素,所述界面元素为非Windows系统自带的界面元素。
另一方面,提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由所述处理器加载并执行以实现界面显示方法。
另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由处理器加载并执行以实现界面显示方法。
本发明实施例提供的技术方案带来的有益效果是:
借助驱动模块将待注入模块加载到Windows任务管理器进程中,待注入模块通过与Windows任务管理器的图形绘制窗口进行挂钩,进而基于图形绘制窗口绘制非Windows系统自带的界面元素,从而在不增加系统开发成本和维护成本,且保证界面响应时间的前提下,满足了用户的个性化需求。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的界面显示方法所涉及的实施环境;
图2是本发明实施例提供的一种界面显示方法的时序图;
图3是本发明实施例提供的一种界面显示过程的流程图;
图4是本发明实施例提供的Windows任务管理器的界面示意图;
图5是本发明实施例提供的一种界面显示装置结构示意图;
图6示出了本发明一个示例性实施例提供的界面显示终端的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在执行本发明之前,首先对本发明涉及到的各个名词进行解释。
APC(Asynchronous procedure call,异步过程调用):主线程在内核构造好运行环境后,从KiThreadStartup开始运行,然后调用PspUserThreadStartup,在该线程的APC队列中插入一个APC:LdrInitializeThunk。当PspUserThreadStartup返回后,正式退回用户空间的总入口BaseProcessStartThunk前,执行中途插入的APC,完成进程的用户空间初始化工作(链接dll的加载等)。
Alertable(警戒态):Windows中线程的一种状态,只有在这种状态下,线程才被允许执行用户态APC。
IdrLoadlibrary:用于加载库模块到进程的地址空间,并返回可在GetProcAddress中使用的句柄,以获取DLL(Dynamic Link Library,动态链接库文件)函数的地址,还可用于加载其他可执行模块。
ShellCode:为一段可直接在进程中执行的汇编码。
图1为本发明实施例提供的界面显示方法所涉及的实施环境,该方法应用于终端中,包括智能手机、平板电脑、台式电脑、笔记本电脑等。该终端中所安装的操作系统为Windows系统。参见图1,该实施环境包括:应用模块101、驱动模块102及待注入模块103等。
其中,应用模块101负责驱动模块102的安装,通知驱动模块102注入待注入模块103;应用模块101还负责当接收到进程启动消息后,判断所启动的进程是否为Windows任务管理器进程,如果所启动的进程为Windows任务管理器进程,则在满足注入条件时,向驱动模块102发送进程注入消息,以触发驱动模块102将待注入模块加载到Windows任务管理器进程中。
驱动模块102负责捕获系统中所有进程(process)的创建、通知应用模块101进程启动及将待注入模块加载到Windows任务管理器进程中。
待注入模块103负责在Windows任务管理器进程内进行相应的挂钩操作,从而展示出满足个性化需求的界面UI布局。
本发明实施例提供了一种界面显示方法,该方法应用于安装有Windows系统的装置中,该装置包括驱动模块、应用模块及待注入模块等。参见图2,本发明实施例提供的方法流程包括:
201、当监测到Windows任务管理器进程启动且完成初始化操作时,应用模块向驱动模块发送进程注入消息。
当终端开机、Windows系统启动后,驱动模块将在系统的内核中注册一个进程创建回调函数(PsSetCreateProcessNotifyRoutine),以监测Windows系统内任一进程的启动操作。当监测到任一进程调用该创建回调函数时,驱动模块向应用模块发送通知消息,该通知消息包括该进程的路径信息。
应用模块接收到驱动模块发送的通知消息,根据通知消息中包括的进程的路径信息,判断所启动的进程是否为Windows任务管理器进程(taskmgr.exe)。如果确定所启动的进程为Windows任务管理器进程,则监测Windows任务管理器进程的初始化操作是否完成。如果Windows任务管理器进程的初始化操作未完成,则继续进行监测;如果Windows任务管理器进程完成初始化操作(WaitForInputIdle),则向驱动模块发送进程注入消息,以触发驱动模块执行注入操作。
202、当接收到进程注入消息,驱动模块将待注入模块加载到Windows任务管理器进程中。
驱动模块将待注入模块加载到Windows任务管理器进程中,可采用如下步骤:
2021、驱动模块将指定代码加载到Windows任务管理器进程中。
其中,指定代码能够在Windows任务管理器进程中被执行,且指定代码中加载有指定函数,指定函数用于加载待注入模块到所述Windows任务管理器进程。在本发明实施例中,指定代码可以为shellcode,指定函数可以为IdrLoadlibrary函数。
具体地,驱动模块将指定代码加载到Windows任务管理器进程中,步骤如下:
a1、驱动模块从ntdll.dll的PE(Portable Executable,可移植的可执行文件)文件中,获取IdrLoadlibrary函数的地址。
其中,ntdll.dll是重要的Windows NT内核级文件,描述了Windows本地NTAPI(NewTechnology Application Programming Interface,新技术应用程序编程接口)的接口。当Windows启动时,ntdll.dll通过驻留在内存中的一个写保护区域,使得其他应用程序无法占用内存中该写保护区。PE文件为Windows操作系统上的程序文件(可能是间接被执行,如DLL),包括EXE、DLL、OCX、SYS、COM等文件。
针对Windows版本不同,驱动模块从ntdll.dll的PE中获取IdrLoadlibrary函数的地址的方式也不同,对于低于Windows7的版本,可通过PEB(Process Envirorment BlockStructure,进程环境信息模块)获取;低于高于Windows7的版本,可通过内存搜索获取。
a2、驱动模块将IdrLoadlibrary函数的地址加载到shellcode中,并将shellcode加载到Windows任务管理器进程中。
2022、驱动模块触发在Windows任务管理器进程中执行指定代码,并在指定代码执行过程中,根据指定函数的地址,将待注入模块加载到Windows任务管理器进程中。
具体执行时步骤如下:
b1、驱动模块将Windows任务管理器进程中的目标线程的状态更改为Alertable状态。
驱动模块将Windows任务管理器进程中的目标线程的状态更改为Alertable状态之前,需要先确定出目标线程。目标线程的确定步骤如下:
b11、驱动模块在Windows任务管理器进程的任一测试线程中插入多个内核APC。
驱动模块从Windows任务管理器进程中选取多个线程作为测试线程,然后在任一测试线程中插入多个内核APC。
b12、基于测试线程的EThread结构对测试线程进行遍历,当获取到KAPC_STATE,且KAPC_STATE中包括多个内核APC时,驱动模块将测试线程作为目标线程。
在计算机领域,每个线程都对应一个EThread结构(内核结构),该EThread结构中存储有进程内所有线程的信息,驱动模块基于测试线程的EThread结构对测试线程进行遍历,查找内核APC。KAPC_STATE为一种存储结构,用于存储内核APC,在遍历过程中,当获取到KAPC_STATE,且能够从KAPC_STATE中获取到预先插入的多个内核APC时,驱动模块将该测试线程作为目标线程。
进一步地,驱动模块可通过更改KAPC_STATE的地址结构中指定字段的字段值,将Windows任务管理器进程中目标线程的状态更改为Alertable状态。其中,指定字段可以为UserApcPending字段,UserApcPending字段更改后的字段值为TRUE。
b2、在目标线程处于Alertable状态时,驱动模块在Windows任务管理器进程中插入用户态APC,在用户态APC执行shellcode的过程中,根据IdrLoadlibrary函数的地址查找IdrLoadlibrary函数,通过调用IdrLoadlibrary函数将待注入模块加载到Windows任务管理器进程中。
在目标线程处于Alertable状态时,Windows系统内核能够执行用户态APC,此时驱动模块通过在Windows任务管理器进程中插入用户态APC,在用户态APC执行shellcode的过程中,根据IdrLoadlibrary函数的地址查找IdrLoadlibrary函数,进而通过调用IdrLoadlibrary函数将待注入模块加载到Windows任务管理器进程中。
考虑到shellcode具有反hook能力,为使后续步骤中待注入模块能够与Windows任务管理器的图形绘制控件成功挂钩,在加载待注入模块之前,驱动模块还将Windows任务管理器进程的IdrLoadlibrary函数的内存值强制更改为真实值,以保证shellcode中所有的hook失效。
203、待注入模块与Windows任务管理器的图形绘制窗口进行挂钩,并基于图形绘制控件绘制界面元素。
当将待注入模块加载到Windows任务管理器进程之后,待注入模块可根据Windows任务管理器进程中的各个类名及窗口名,确定出Windows任务管理器的图形绘制窗口,进而与Windows任务管理器的图形绘制窗口进行挂钩。其中,图形绘制窗口可以为SysTabControl32。
具体地,待注入模块根据Windows任务管理器进程中的各个类名及窗口名,确定出Windows任务管理器的图形绘制窗口的过程为:待注入模块根据Windows任务管理器的窗口名,查找到类名Windows Task Manger,然后根据类名Windows Task Manger查找到其子窗口SysTabControl32。
针对Windows版本不同,待注入模块获取图形绘制窗口的方式是不同的,对于低于Windows10的版本,可通过FindWindows方法获取,对于高于Windows10的版本,可通过MSAA(Microsoft Active Accessibility,微软主动可达性)方式获取。其中,FindWindows用于检索处理顶级窗口的类名和窗口名称匹配指定的字符串。
当确定出Windows任务管理器的图形绘制窗口后,待注入模块可与Windows任务管理器的图形绘制窗口进行挂钩。具体在挂钩时可采用钩子函数等工具。
当与Windows任务管理器的图形绘制窗口挂钩后,待注入模块可根据挂钩关系截获图形绘制窗口的操作指令,进而基于所截获的操作指令,通过创建图形绘制窗口的子窗口,从而绘制界面元素,该界面元素为非Windows系统自带的界面元素。其中,待注入模块所截获的操作指令包括TCM_SETCURSEL接收到的Tab切换消息、TCN_SELCHANGE接收到的Tab切换消息、WM_WINDOWPOSCHANGED接收到的窗口大小变化消息、WM_NOTIFY接收到的通知消息等。
对于上述界面显示过程,下面将以图3为例进行说明。
1、驱动模块预先注册进程创建回调函数;
2、对于系统中的各个进程,驱动模块监测各个进程的启动过程,当监测到任一进程调用预先注册的创建回调函数后,向应用模块发送通知消息,以通知应用模块对该进程进行判断;
3、当根据该进程的路径信息确定出该进程为Windows任务管理器进程时,应用模块判断当前是否满足注入条件,如果Windows任务管理器进程(taskmgr.exe)完成初始化操作,则确定当前满足注入条件,进而将待注入模块加载到Windows任务管理器进程中;
4、待注入模块与Windows任务管理器的图形绘制窗口(SysTabControl32)进行挂钩;
5、待注入模块基于SysTabControl32绘制UI元素。
图4为采用本发明实施例提供的方法所显示的Windows任务管理器的界面,由于该界面上的UI元素、UI元素的位置及大小等均可指定,该界面上的UI元素的各种状态,包括显示、隐藏、移动等也可被控制,且可在该界面上绘制非Windows系统自带的、用户所设计的UI元素,例如,图4中的深度加速选项,因此,满足了用户的个性化需求。
需要说明的是,上述以将待注入模块加载到Windows任务管理器进程为例,当然,还可以采用其他方式,如直接在Windows任务管理器进程外创建图形绘制窗口,并设置为Windows任务管理器的子窗口,进而通过该子窗口绘制界面元素。
本发明实施例提供的方法,借助驱动模块将待注入模块加载到Windows任务管理器进程中,待注入模块通过与Windows任务管理器的图形绘制窗口进行挂钩,进而基于图形绘制窗口绘制非Windows系统自带的界面元素,从而在不增加系统开发成本和维护成本,且保证界面响应时间的前提下,满足了用户的个性化需求。
参见图5,本发明实施例提供了一种界面显示装置,装置安装有Windows系统,该装置包括应用模块501、驱动模块502及待注入模块503,其中应用模块501、驱动模块502及待注入模块503与图1中的应用模块、驱动模块及待注入模块相同;
应用模块501,用于当监测到Windows任务管理器进程启动且完成初始化操作时,向驱动模块发送进程注入消息;
驱动模块502,用于当接收到进程注入消息,将待注入模块加载到Windows任务管理器进程中;
待注入模块503,用于与Windows任务管理器的图形绘制窗口进行挂钩,并基于图形绘制窗口绘制界面元素,界面元素为非Windows系统自带的界面元素。
在本发明的另一个实施例中,驱动模块502,用于将指定代码加载到Windows任务管理器进程中,指定代码能够在Windows任务管理器进程中被执行,且指定代码中加载有指定函数,指定函数用于加载待注入模块到Windows任务管理器进程;
驱动模块502,用于触发在Windows任务管理器进程中执行指定代码,并在指定代码执行过程中,根据指定函数的地址,将待注入模块加载到Windows任务管理器进程中。
在本发明的另一个实施例中,驱动模块502,用于ntdll.dll的可移植的可执行文件PE文件中,获取IdrLoadlibrary函数的地址;
驱动模块502,用于将IdrLoadlibrary函数的地址加载到shellcode中,并将shellcode加载到Windows任务管理器进程中。
在本发明的另一个实施例中,驱动模块502,用于将Windows任务管理器进程中的目标线程的状态更改为Alertable状态,目标线程为能够查找到预先插入的多个内核APC的线程;
驱动模块502,用于在目标线程处于Alertable状态时,在Windows任务管理器进程中插入用户态APC,在用户态APC执行shellcode的过程中,根据IdrLoadlibrary函数的地址查找IdrLoadlibrary函数,通过调用IdrLoadlibrary函数将待注入模块加载到Windows任务管理器进程中。
在本发明的另一个实施例中,驱动模块502,用于在Windows任务管理器进程的任一测试线程中插入多个内核APC;基于测试线程的EThread结构对测试线程进行遍历,当获取到KAPC_STATE,且KAPC_STATE中包括多个内核APC时,驱动模块将测试线程作为目标线程;
驱动模块502,用于通过更改KAPC_STATE的地址结构中指定字段的字段值,将目标线程的状态更改为Alertable状态。
在本发明的另一个实施例中,所述驱动模块502,还用于将所述IdrLoadlibrary函数的内存值更改为真实值,当所述IdrLoadlibrary函数的内存值为真实值时,shellcode中的钩子函数失效,所述驱动模块能够将所述待注入模块加载到所述Windows任务管理器进程中。
在本发明的另一个实施例中,待注入模块503,用于根据类名及窗口名,确定出Windows任务管理器的图形绘制窗口,并与Windows任务管理器的图形绘制窗口进行挂钩。
在本发明的另一个实施例中,待注入模块503,用于截获图形绘制窗口的操作指令;基于所截获的操作指令,通过创建图形绘制窗口的子窗口,绘制界面元素。
综上所述,本发明实施例提供的装置,借助驱动模块将待注入模块加载到Windows任务管理器进程中,待注入模块通过与Windows任务管理器的图形绘制窗口进行挂钩,进而基于图形绘制窗口绘制非Windows系统自带的界面元素,从而在不增加系统开发成本和维护成本,且保证界面响应时间的前提下,满足了用户的个性化需求。
图6示出了本发明一个示例性实施例提供的界面显示终端600的结构框图。该终端600可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group AudioLayer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts GroupAudio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端600还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端600包括有:处理器601和存储器602。
处理器601可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器601可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器601可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器601还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器602中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器601所执行以实现本申请中方法实施例提供的界面显示方法。
在一些实施例中,终端600还可选包括有:外围设备接口603和至少一个外围设备。处理器601、存储器602和外围设备接口603之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口603相连。具体地,外围设备包括:射频电路604、触摸显示屏605、摄像头606、音频电路607、定位组件608和电源609中的至少一种。
外围设备接口603可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器601和存储器602。在一些实施例中,处理器601、存储器602和外围设备接口603被集成在同一芯片或电路板上;在一些其他实施例中,处理器601、存储器602和外围设备接口603中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路604用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路604通过电磁信号与通信网络以及其他通信设备进行通信。射频电路604将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路604包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路604可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路604还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏605用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏605是触摸显示屏时,显示屏605还具有采集在显示屏605的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器601进行处理。此时,显示屏605还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏605可以为一个,设置终端600的前面板;在另一些实施例中,显示屏605可以为至少两个,分别设置在终端600的不同表面或呈折叠设计;在再一些实施例中,显示屏605可以是柔性显示屏,设置在终端600的弯曲表面上或折叠面上。甚至,显示屏605还可以设置成非矩形的不规则图形,也即异形屏。显示屏605可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件606用于采集图像或视频。可选地,摄像头组件606包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件606还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路607可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器601进行处理,或者输入至射频电路604以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端600的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器601或射频电路604的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路607还可以包括耳机插孔。
定位组件608用于定位终端600的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件608可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源609用于为终端600中的各个组件进行供电。电源609可以是交流电、直流电、一次性电池或可充电电池。当电源609包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端600还包括有一个或多个传感器610。该一个或多个传感器610包括但不限于:加速度传感器611、陀螺仪传感器612、压力传感器613、指纹传感器614、光学传感器615以及接近传感器616。
加速度传感器611可以检测以终端600建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器611可以用于检测重力加速度在三个坐标轴上的分量。处理器601可以根据加速度传感器611采集的重力加速度信号,控制触摸显示屏605以横向视图或纵向视图进行用户界面的显示。加速度传感器611还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器612可以检测终端600的机体方向及转动角度,陀螺仪传感器612可以与加速度传感器611协同采集用户对终端600的3D动作。处理器601根据陀螺仪传感器612采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器613可以设置在终端600的侧边框和/或触摸显示屏605的下层。当压力传感器613设置在终端600的侧边框时,可以检测用户对终端600的握持信号,由处理器601根据压力传感器613采集的握持信号进行左右手识别或快捷操作。当压力传感器613设置在触摸显示屏605的下层时,由处理器601根据用户对触摸显示屏605的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器614用于采集用户的指纹,由处理器601根据指纹传感器614采集到的指纹识别用户的身份,或者,由指纹传感器614根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器601授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器614可以被设置终端600的正面、背面或侧面。当终端600上设置有物理按键或厂商Logo时,指纹传感器614可以与物理按键或厂商Logo集成在一起。
光学传感器615用于采集环境光强度。在一个实施例中,处理器601可以根据光学传感器615采集的环境光强度,控制触摸显示屏605的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏605的显示亮度;当环境光强度较低时,调低触摸显示屏605的显示亮度。在另一个实施例中,处理器601还可以根据光学传感器615采集的环境光强度,动态调整摄像头组件606的拍摄参数。
接近传感器616,也称距离传感器,通常设置在终端600的前面板。接近传感器616用于采集用户与终端600的正面之间的距离。在一个实施例中,当接近传感器616检测到用户与终端600的正面之间的距离逐渐变小时,由处理器601控制触摸显示屏605从亮屏状态切换为息屏状态;当接近传感器616检测到用户与终端600的正面之间的距离逐渐变大时,由处理器601控制触摸显示屏605从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图6中示出的结构并不构成对终端600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本发明实施例提供的终端,借助驱动模块将待注入模块加载到Windows任务管理器进程中,待注入模块通过与Windows任务管理器的图形绘制窗口进行挂钩,进而基于图形绘制窗口绘制非Windows系统自带的界面元素,从而在不增加系统开发成本和维护成本,且保证界面响应时间的前提下,满足了用户的个性化需求。
本发明实施例提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由处理器加载并执行以实现图2所述的界面显示方法。
本发明实施例提供的计算机可读存储介质,借助驱动模块将待注入模块加载到Windows任务管理器进程中,待注入模块通过与Windows任务管理器的图形绘制窗口进行挂钩,进而基于图形绘制窗口绘制非Windows系统自带的界面元素,从而在不增加系统开发成本和维护成本,且保证界面响应时间的前提下,满足了用户的个性化需求。
需要说明的是:上述实施例提供的界面显示装置在进行界面显示时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将界面显示装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的界面显示装置与界面显示方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (18)
1.一种界面显示方法,其特征在于,所述方法应用于安装有Windows系统的装置中,所述装置包括驱动模块、应用模块及待注入模块,所述方法包括:
对于所述Windows系统中的各个进程,所述驱动模块监测所述各个进程的启动过程;
当检测到任一进程在启动过程中调用预先注册的创建回调函数时,所述驱动模块向所述应用模块发送通知消息;
所述应用模块接收所述通知消息,根据所述通知消息监测Windows任务管理器进程的初始化操作;
当监测到所述Windows任务管理器进程启动且完成初始化操作时,所述应用模块向所述驱动模块发送进程注入消息;
当接收到所述进程注入消息,所述驱动模块将所述待注入模块加载到所述Windows任务管理器进程中;
所述待注入模块与所述Windows任务管理器的图形绘制窗口进行挂钩,并基于所述图形绘制窗口绘制界面元素,所述界面元素为非Windows系统自带的界面元素。
2.根据权利要求1所述的方法,其特征在于,所述驱动模块将所述待注入模块加载到所述Windows任务管理器进程中,包括:
所述驱动模块将指定代码加载到所述Windows任务管理器进程中,所述指定代码能够在所述Windows任务管理器进程中被执行,且所述指定代码中加载有指定函数,所述指定函数用于加载所述待注入模块到所述Windows任务管理器进程;
所述驱动模块触发在所述Windows任务管理器进程中执行所述指定代码,并在所述指定代码执行过程中,根据所述指定函数的地址,将所述待注入模块加载到所述Windows任务管理器进程中。
3.根据权利要求2所述的方法,其特征在于,所述驱动模块将指定代码加载到所述Windows任务管理器进程中,包括:
所述驱动模块从ntdll.dll的可移植的可执行文件PE文件中,获取IdrLoadlibrary函数的地址;
所述驱动模块将所述IdrLoadlibrary函数的地址加载到shellcode中,并将所述shellcode加载到所述Windows任务管理器进程中。
4.根据权利要求3所述的方法,其特征在于,所述驱动模块触发在所述Windows任务管理器进程中执行所述指定代码,并在所述指定代码执行过程中,根据所述指定函数的地址,将所述待注入模块加载到所述Windows任务管理器进程中,包括:
所述驱动模块将所述Windows任务管理器进程中的目标线程的状态更改为Alertable状态,所述目标线程为能够查找到预先插入的多个内核APC的线程;
在目标线程处于Alertable状态时,所述驱动模块在所述Windows任务管理器进程中插入用户态APC,在所述用户态APC执行shellcode的过程中,根据所述IdrLoadlibrary函数的地址查找IdrLoadlibrary函数,通过调用所述IdrLoadlibrary函数将所述待注入模块加载到所述Windows任务管理器进程中。
5.根据权利要求4所述的方法,其特征在于,所述驱动模块将所述Windows任务管理器进程中的目标线程的状态更改为Alertable状态之前,还包括:
所述驱动模块在所述Windows任务管理器进程的任一测试线程中插入多个内核APC;
基于所述测试线程的EThread结构对所述测试线程进行遍历,当获取到KAPC_STATE,且所述KAPC_STATE中包括所述多个内核APC时,所述驱动模块将所述测试线程作为所述目标线程;
所述驱动模块将所述Windows任务管理器进程中的目标线程的状态更改为Alertable状态,包括:
所述驱动模块通过更改所述KAPC_STATE的地址结构中指定字段的字段值,将所述目标线程的状态更改为Alertable状态。
6.根据权利要求4所述的方法,其特征在于,所述根据所述IdrLoadlibrary函数的地址查找IdrLoadlibrary函数,通过调用所述IdrLoadlibrary函数将所述待注入模块加载到所述Windows任务管理器进程中之前,还包括:
所述驱动模块将所述IdrLoadlibrary函数的内存值更改为真实值,当所述IdrLoadlibrary函数的内存值为真实值时,shellcode中的钩子函数失效,所述驱动模块能够将所述待注入模块加载到所述Windows任务管理器进程中。
7.根据权利要求1所述的方法,其特征在于,所述待注入模块与所述Windows任务管理器的图形绘制窗口进行挂钩,包括:
所述待注入模块根据类名及窗口名,确定出所述Windows任务管理器的图形绘制窗口,并与所述Windows任务管理器的图形绘制窗口进行挂钩。
8.根据权利要求1所述的方法,其特征在于,所述基于所述图形绘制窗口绘制界面元素,包括:
所述待注入模块截获所述图形绘制窗口的操作指令;
基于所截获的操作指令,通过创建所述图形绘制窗口的子窗口,绘制界面元素。
9.一种界面显示装置,其特征在于,所述装置安装有Windows系统,所述装置包括驱动模块、应用模块及待注入模块;
所述驱动模块,用于对于所述Windows系统中的各个进程,监测所述各个进程的启动过程;当检测到任一进程在启动过程中调用预先注册的创建回调函数时,向所述应用模块发送通知消息;
所述应用模块,用于接收所述通知消息,根据所述通知消息监测Windows任务管理器进程的初始化操作;当监测到所述Windows任务管理器进程启动且完成初始化操作时,向所述驱动模块发送进程注入消息;
所述驱动模块,还用于当接收到所述进程注入消息,将所述待注入模块加载到所述Windows任务管理器进程中;
所述待注入模块,用于与所述Windows任务管理器的图形绘制窗口进行挂钩,并基于所述图形绘制窗口绘制界面元素,所述界面元素为非Windows系统自带的界面元素。
10.根据权利要求9所述的装置,其特征在于,所述驱动模块,用于将指定代码加载到所述Windows任务管理器进程中,所述指定代码能够在所述Windows任务管理器进程中被执行,且所述指定代码中加载有指定函数,所述指定函数用于加载所述待注入模块到所述Windows任务管理器进程;
所述驱动模块,用于触发在所述Windows任务管理器进程中执行所述指定代码,并在所述指定代码执行过程中,根据所述指定函数的地址,将所述待注入模块加载到所述Windows任务管理器进程中。
11.根据权利要求10所述的装置,其特征在于,所述驱动模块,用于从ntdll.dll的可移植的可执行文件PE文件中,获取IdrLoadlibrary函数的地址;
所述驱动模块,用于将所述IdrLoadlibrary函数的地址加载到shellcode中,并将所述shellcode加载到所述Windows任务管理器进程中。
12.根据权利要求11所述的装置,其特征在于,所述驱动模块,用于将所述Windows任务管理器进程中的目标线程的状态更改为Alertable状态,所述目标线程为能够查找到预先插入的多个内核APC的线程;在目标线程处于Alertable状态时,用于在所述Windows任务管理器进程中插入用户态APC,在所述用户态APC执行shellcode的过程中,根据所述IdrLoadlibrary函数的地址查找IdrLoadlibrary函数,通过调用所述IdrLoadlibrary函数将所述待注入模块加载到所述Windows任务管理器进程中。
13.根据权利要求12所述的装置,其特征在于,所述驱动模块,用于在所述Windows任务管理器进程的任一测试线程中插入多个内核APC;基于所述测试线程的EThread结构对所述测试线程进行遍历,当获取到KAPC_STATE,且所述KAPC_STATE中包括所述多个内核APC时,所述驱动模块将所述测试线程作为所述目标线程;
所述驱动模块,用于通过更改所述KAPC_STATE的地址结构中指定字段的字段值,将所述目标线程的状态更改为Alertable状态。
14.根据权利要求12所述的装置,其特征在于,所述驱动模块,用于将所述IdrLoadlibrary函数的内存值更改为真实值,当所述IdrLoadlibrary函数的内存值为真实值时,shellcode中的钩子函数失效,所述驱动模块能够将所述待注入模块加载到所述Windows任务管理器进程中。
15.根据权利要求9所述的装置,其特征在于,所述待注入模块,用于根据类名及窗口名,确定出所述Windows任务管理器的图形绘制窗口,并与所述Windows任务管理器的图形绘制窗口进行挂钩。
16.根据权利要求9所述的装置,其特征在于,所述待注入模块,用于截获所述图形绘制窗口的操作指令;基于所截获的操作指令,通过创建所述图形绘制窗口的子窗口,绘制界面元素。
17.一种终端,其特征在于,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由所述处理器加载并执行以实现如权利要求1至8中任一项所述的界面显示方法。
18.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由处理器加载并执行以实现如权利要求1至8中任一项所述的界面显示方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810758955.1A CN108984259B (zh) | 2018-07-11 | 2018-07-11 | 界面显示方法、装置及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810758955.1A CN108984259B (zh) | 2018-07-11 | 2018-07-11 | 界面显示方法、装置及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108984259A CN108984259A (zh) | 2018-12-11 |
CN108984259B true CN108984259B (zh) | 2020-09-18 |
Family
ID=64536856
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810758955.1A Active CN108984259B (zh) | 2018-07-11 | 2018-07-11 | 界面显示方法、装置及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108984259B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110223682B (zh) * | 2019-04-29 | 2022-01-11 | 阿波罗智联(北京)科技有限公司 | 一种语音指令仲裁方法和装置 |
CN111857929B (zh) * | 2020-07-23 | 2023-05-30 | 杭州海康威视数字技术股份有限公司 | 应用程序界面显示的方法、装置及计算机设备 |
CN114296816B (zh) * | 2021-12-16 | 2024-05-31 | 珠海豹趣科技有限公司 | 一种稳定运行的Windows系统主题的更改方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102890641A (zh) * | 2012-08-30 | 2013-01-23 | 北京奇虎科技有限公司 | 一种进程行为控制的方法和装置 |
CN104020973A (zh) * | 2014-05-19 | 2014-09-03 | 广州酷狗计算机科技有限公司 | 信息显示方法及装置 |
US20150319183A1 (en) * | 2009-04-22 | 2015-11-05 | Trusted Knight Corporation | System and method for protecting against point of sale malware using memory scraping |
CN106326113A (zh) * | 2016-08-16 | 2017-01-11 | 腾讯科技(深圳)有限公司 | 一种游戏数据监控方法和装置 |
CN107239679A (zh) * | 2017-04-28 | 2017-10-10 | 浙江华途信息安全技术股份有限公司 | 程序窗口信息保护方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8943423B2 (en) * | 2009-07-07 | 2015-01-27 | International Business Machines Corporation | User interface indicators for changed user interface elements |
CN103365530B (zh) * | 2012-04-09 | 2018-05-25 | 腾讯科技(深圳)有限公司 | 一种提供快速启动入口的方法及装置 |
CN104978195A (zh) * | 2015-06-26 | 2015-10-14 | 浪潮软件集团有限公司 | 一种界面配置装置及方法 |
CN106708556B (zh) * | 2016-07-19 | 2019-04-16 | 腾讯科技(深圳)有限公司 | 数据显示方法及装置 |
-
2018
- 2018-07-11 CN CN201810758955.1A patent/CN108984259B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150319183A1 (en) * | 2009-04-22 | 2015-11-05 | Trusted Knight Corporation | System and method for protecting against point of sale malware using memory scraping |
CN102890641A (zh) * | 2012-08-30 | 2013-01-23 | 北京奇虎科技有限公司 | 一种进程行为控制的方法和装置 |
CN104020973A (zh) * | 2014-05-19 | 2014-09-03 | 广州酷狗计算机科技有限公司 | 信息显示方法及装置 |
CN106326113A (zh) * | 2016-08-16 | 2017-01-11 | 腾讯科技(深圳)有限公司 | 一种游戏数据监控方法和装置 |
CN107239679A (zh) * | 2017-04-28 | 2017-10-10 | 浙江华途信息安全技术股份有限公司 | 程序窗口信息保护方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108984259A (zh) | 2018-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110308956B (zh) | 一种应用界面显示方法、装置及移动终端 | |
CN110602321B (zh) | 应用程序切换方法、装置、电子装置及存储介质 | |
CN111752666B (zh) | 窗口显示方法、装置和终端 | |
CN108762881B (zh) | 界面绘制方法、装置、终端及存储介质 | |
CN110837378B (zh) | 软件开发工具包sdk功能的调用方法及装置 | |
CN111191224B (zh) | 虚拟机检测的对抗方法、装置及计算机可读存储介质 | |
CN113127130B (zh) | 页面跳转方法、装置及存储介质 | |
CN110362366B (zh) | 一种应用界面显示方法及装置 | |
CN110837473A (zh) | 应用程序调试方法、装置、终端及存储介质 | |
CN108984259B (zh) | 界面显示方法、装置及终端 | |
CN109828915B (zh) | 一种调试应用程序的方法、装置、设备和存储介质 | |
CN111897465B (zh) | 弹窗显示方法、装置、设备及存储介质 | |
CN111191227B (zh) | 阻止恶意代码执行的方法和装置 | |
CN113051015A (zh) | 页面渲染方法、装置、电子设备及存储介质 | |
CN109783176B (zh) | 切换页面的方法和装置 | |
CN107943484B (zh) | 执行业务功能的方法和装置 | |
CN112015612B (zh) | 一种获取卡顿信息的方法及装置 | |
CN110502708B (zh) | 基于JSBridge进行通信的方法、装置及存储介质 | |
CN112612539A (zh) | 数据模型卸载方法、装置、电子设备及存储介质 | |
CN108647127B (zh) | 应用耗电监控方法及装置 | |
CN111258683A (zh) | 检测方法、装置、计算机设备及存储介质 | |
CN111464829B (zh) | 切换媒体数据的方法、装置、设备及存储介质 | |
CN110941458B (zh) | 启动应用程序的方法、装置、设备及存储介质 | |
CN112596810A (zh) | 加载提示信息显示方法、装置、电子设备及存储介质 | |
CN112000576A (zh) | 代码数据的检测方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |