CN114385525A - 一种并发访问usb设备的方法及系统 - Google Patents
一种并发访问usb设备的方法及系统 Download PDFInfo
- Publication number
- CN114385525A CN114385525A CN202111491834.3A CN202111491834A CN114385525A CN 114385525 A CN114385525 A CN 114385525A CN 202111491834 A CN202111491834 A CN 202111491834A CN 114385525 A CN114385525 A CN 114385525A
- Authority
- CN
- China
- Prior art keywords
- function
- trampoline
- usb
- instructions
- target
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- 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/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0042—Universal serial bus [USB]
Abstract
本发明公开了一种并发访问USB设备的方法及系统,属于计算机应用技术领域。本发明方法,包括:向系统中原USB打开设备的目标函数注入代码,通过所述注入的代码将原USB打开设备的目标函数初始的若干条指令替换为一个无条件的跳转指令;当系统执行USB打开设备的目标函数时,通过所述跳转指令将控制流程跳转至旁路函数;通过所述旁路函数控制系统USB设备的并发访问。本发明无需多台机器,在单台机器就可以支持多个USB设备的访问,降低了成本和资源消耗。
Description
技术领域
本发明涉及计算机应用技术领域,并且更具体地,涉及一种并发访问USB设备的方法及系统。
背景技术
市面上存在部分USB设备,当多个相同类型的设备同时加载于WINDOWS系统时,仅支持随机访问其中的单个设备,而不支持指定访问特定的单个设备实例,无法应用在高并发的场景之下。
发明内容
针对上述问题,本发明提出了一种并发访问USB设备的方法,包括:
向系统中原USB打开设备的目标函数注入代码,通过所述注入的代码将原USB打开设备的目标函数初始的若干条指令替换为一个无条件的跳转指令;
当系统执行USB打开设备的目标函数时,通过所述跳转指令将控制流程跳转至旁路函数;
通过所述旁路函数控制系统USB设备的并发访问。
可选的,向系统中原USB打开设备的目标函数注入代码的过程是动态加载的。
可选的,目标函数初始的若干条指令被替换后,被替换掉的指令保存至蹦床函数中,所述蹦床函数包括:目标函数移除的指令和无条件跳转到目标函数的剩余部分的指令。
可选的,目标函数在被执行时,控制流程跳转至旁路函数中,旁路函数将控制流程跳转至源函数或蹦床函数。
可选的,目标函数是通过重写进程中的二进制映像的方式,注入的代码,对每一个目标函数,重写两个函数,一个是对应的子目标函数,另一个是蹦床函数。
可选的,蹦床函数是动态分配的,在目标函数注入代码前,蹦床函数仅含有单个跳转到目标函数的指令。
本发明还提出了一种并发访问USB设备的系统,包括:
注入代码单元,向系统中原USB打开设备的目标函数注入代码,通过所述注入的代码将原USB打开设备的目标函数初始的若干条指令替换为一个无条件的跳转指令;
跳转单元,当系统执行USB打开设备的目标函数时,通过所述跳转指令将控制流程跳转至旁路函数;
访问单元,通过所述旁路函数控制系统USB设备的并发访问。
可选的,向系统中原USB打开设备的目标函数注入代码的过程是动态加载的。
可选的,目标函数初始的若干条指令被替换后,被替换掉的指令保存至蹦床函数中,所述蹦床函数包括:目标函数移除的指令和无条件跳转到目标函数的剩余部分的指令。
可选的,目标函数在被执行时,控制流程跳转至旁路函数中,旁路函数将控制流程跳转至源函数或蹦床函数。
可选的,目标函数是通过重写进程中的二进制映像的方式,注入的代码,对每一个目标函数,重写两个函数,一个是对应的子目标函数,另一个是蹦床函数。
可选的,蹦床函数是动态分配的,在目标函数注入代码前,蹦床函数仅含有单个跳转到目标函数的指令。
本发明无需多台机器,在单台机器就可以支持多个USB设备的访问,降低了成本和资源消耗。
附图说明
图1为本发明方法的流程图;
图2为本发明系统的结构图。
具体实施方式
现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。
除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。
本发明提出了一种并发访问USB设备的方法,如图1所示,包括:
向系统中原USB打开设备的目标函数注入代码,通过所述注入的代码将原USB打开设备的目标函数初始的若干条指令替换为一个无条件的跳转指令;
当系统执行USB打开设备的目标函数时,通过所述跳转指令将控制流程跳转至旁路函数;
通过所述旁路函数控制系统USB设备的并发访问。
其中,向系统中原USB打开设备的目标函数注入代码的过程是动态加载的。
其中,目标函数初始的若干条指令被替换后,被替换掉的指令保存至蹦床函数中,所述蹦床函数包括:目标函数移除的指令和无条件跳转到目标函数的剩余部分的指令。
其中,目标函数在被执行时,控制流程跳转至旁路函数中,旁路函数将控制流程跳转至源函数或蹦床函数。
其中,目标函数是通过重写进程中的二进制映像的方式,注入的代码,对每一个目标函数,重写两个函数,一个是对应的子目标函数,另一个是蹦床函数。
其中,蹦床函数是动态分配的,在目标函数注入代码前,蹦床函数仅含有单个跳转到目标函数的指令。
其中,注入的代码是动态加载的,注入的代码将原“打开设备”目标函数的初始若干条指令替换为一个无条件的跳转指令,由此跳转到我们自定义的旁路函数。目标函数的指令被保存在“蹦床函数”中。“蹦床函数”由目标函数所移除的指令和无条件跳转到目标函数的剩余部分的指令所组成。
当执行到目标函数时,控制流程跳转到我们自定义的“旁路函数”中。首先会执行注入的预处理工作。“旁路函数”可以将流程跳转到源函数或是跳转到“蹦床函数”,当再次调用目标函数时是无注入的。当目标函数执行完成,控制流程返回到旁路函数。旁路函数执行注入的后处理并将控制流返回给源函数。
注入目标函数是通过重写进程中的二进制映像完成的。对每一个目标函数,实际上需要重写两个函数,一个是对应的目标函数,另一个是其所匹配的蹦床函数。蹦床函数是动态分配的。在注入前,蹦床函数仅含有单个跳转到目标函数的指令。在注入之后,蹦床函数包含目标函数的初始若干指令和跳转到其剩余部分的指令。
本发明还提出了一种并发访问USB设备的系统200,如图2所示,包括:
注入代码单元201,向系统中原USB打开设备的目标函数注入代码,通过所述注入的代码将原USB打开设备的目标函数初始的若干条指令替换为一个无条件的跳转指令;
跳转单元202,当系统执行USB打开设备的目标函数时,通过所述跳转指令将控制流程跳转至旁路函数;
访问单元203,通过所述旁路函数控制系统USB设备的并发访问。
其中,向系统中原USB打开设备的目标函数注入代码的过程是动态加载的。
其中,目标函数初始的若干条指令被替换后,被替换掉的指令保存至蹦床函数中,所述蹦床函数包括:目标函数移除的指令和无条件跳转到目标函数的剩余部分的指令。
其中,目标函数在被执行时,控制流程跳转至旁路函数中,旁路函数将控制流程跳转至源函数或蹦床函数。
其中,目标函数是通过重写进程中的二进制映像的方式,注入的代码,对每一个目标函数,重写两个函数,一个是对应的子目标函数,另一个是蹦床函数。
其中,蹦床函数是动态分配的,在目标函数注入代码前,蹦床函数仅含有单个跳转到目标函数的指令。
本发明无需多台机器,在单台机器就可以支持多个USB设备的访问,降低了成本和资源消耗。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (12)
1.一种并发访问USB设备的方法,所述方法包括:
向系统中原USB打开设备的目标函数注入代码,通过所述注入的代码将原USB打开设备的目标函数初始的若干条指令替换为一个无条件的跳转指令;
当系统执行USB打开设备的目标函数时,通过所述跳转指令将控制流程跳转至旁路函数;
通过所述旁路函数控制系统USB设备的并发访问。
2.根据权利要求1所述的方法,所述向系统中原USB打开设备的目标函数注入代码的过程是动态加载的。
3.根据权利要求1所述的方法,所述目标函数初始的若干条指令被替换后,被替换掉的指令保存至蹦床函数中,所述蹦床函数包括:目标函数移除的指令和无条件跳转到目标函数的剩余部分的指令。
4.根据权利要求3所述的方法,所述目标函数在被执行时,控制流程跳转至旁路函数中,旁路函数将控制流程跳转至源函数或蹦床函数。
5.根据权利要求1所述的方法,所述目标函数是通过重写进程中的二进制映像的方式,注入的代码,对每一个目标函数,重写两个函数,一个是对应的子目标函数,另一个是蹦床函数。
6.根据权利要求5所述的方法,所述蹦床函数是动态分配的,在目标函数注入代码前,蹦床函数仅含有单个跳转到目标函数的指令。
7.一种并发访问USB设备的系统,所述系统包括:
注入代码单元,向系统中原USB打开设备的目标函数注入代码,通过所述注入的代码将原USB打开设备的目标函数初始的若干条指令替换为一个无条件的跳转指令;
跳转单元,当系统执行USB打开设备的目标函数时,通过所述跳转指令将控制流程跳转至旁路函数;
访问单元,通过所述旁路函数控制系统USB设备的并发访问。
8.根据权利要求7所述的系统,所述向系统中原USB打开设备的目标函数注入代码的过程是动态加载的。
9.根据权利要求7所述的系统,所述目标函数初始的若干条指令被替换后,被替换掉的指令保存至蹦床函数中,所述蹦床函数包括:目标函数移除的指令和无条件跳转到目标函数的剩余部分的指令。
10.根据权利要求9所述的系统,所述目标函数在被执行时,控制流程跳转至旁路函数中,旁路函数将控制流程跳转至源函数或蹦床函数。
11.根据权利要求7所述的系统,所述目标函数是通过重写进程中的二进制映像的方式,注入的代码,对每一个目标函数,重写两个函数,一个是对应的子目标函数,另一个是蹦床函数。
12.根据权利要求11所述的系统,所述蹦床函数是动态分配的,在目标函数注入代码前,蹦床函数仅含有单个跳转到目标函数的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111491834.3A CN114385525A (zh) | 2021-12-08 | 2021-12-08 | 一种并发访问usb设备的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111491834.3A CN114385525A (zh) | 2021-12-08 | 2021-12-08 | 一种并发访问usb设备的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114385525A true CN114385525A (zh) | 2022-04-22 |
Family
ID=81195697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111491834.3A Pending CN114385525A (zh) | 2021-12-08 | 2021-12-08 | 一种并发访问usb设备的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114385525A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115718922A (zh) * | 2022-11-28 | 2023-02-28 | 暨南大学 | 一种高可用的智能合约字节码重写方法、介质及装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030217254A1 (en) * | 2002-05-09 | 2003-11-20 | Page James W. | Method and apparatus for programming non-volatile, programmable, electrically erasable memory using a USB interface |
CN1475909A (zh) * | 2002-08-16 | 2004-02-18 | 华为技术有限公司 | 一种嵌入式系统软件补丁的实现和控制方法 |
US20070283331A1 (en) * | 2006-06-02 | 2007-12-06 | Microsoft Corporation | Arbitrary Runtime Function Call Tracing |
US20080126650A1 (en) * | 2006-09-21 | 2008-05-29 | Swanson Robert C | Methods and apparatus for parallel processing in system management mode |
US20080177922A1 (en) * | 2000-01-06 | 2008-07-24 | Chow David Q | Mass production testing of usb flash cards with various flash memory cells |
CN103218335A (zh) * | 2011-10-18 | 2013-07-24 | 联发科技股份有限公司 | Usb多功能装置及用于usb多功能装置的方法 |
CN109828793A (zh) * | 2019-01-28 | 2019-05-31 | 山东超越数控电子股份有限公司 | 基于国产操作系统的usb管控方法及系统 |
WO2019130041A1 (en) * | 2017-12-29 | 2019-07-04 | Vandelay | Method for controlling access to a data storage peripheral device |
CN112905242A (zh) * | 2021-03-23 | 2021-06-04 | 浙江大华技术股份有限公司 | 分支路径跳转方法、装置、存储介质及电子装置 |
-
2021
- 2021-12-08 CN CN202111491834.3A patent/CN114385525A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080177922A1 (en) * | 2000-01-06 | 2008-07-24 | Chow David Q | Mass production testing of usb flash cards with various flash memory cells |
US20030217254A1 (en) * | 2002-05-09 | 2003-11-20 | Page James W. | Method and apparatus for programming non-volatile, programmable, electrically erasable memory using a USB interface |
CN1475909A (zh) * | 2002-08-16 | 2004-02-18 | 华为技术有限公司 | 一种嵌入式系统软件补丁的实现和控制方法 |
US20070283331A1 (en) * | 2006-06-02 | 2007-12-06 | Microsoft Corporation | Arbitrary Runtime Function Call Tracing |
US20080126650A1 (en) * | 2006-09-21 | 2008-05-29 | Swanson Robert C | Methods and apparatus for parallel processing in system management mode |
CN103218335A (zh) * | 2011-10-18 | 2013-07-24 | 联发科技股份有限公司 | Usb多功能装置及用于usb多功能装置的方法 |
WO2019130041A1 (en) * | 2017-12-29 | 2019-07-04 | Vandelay | Method for controlling access to a data storage peripheral device |
CN109828793A (zh) * | 2019-01-28 | 2019-05-31 | 山东超越数控电子股份有限公司 | 基于国产操作系统的usb管控方法及系统 |
CN112905242A (zh) * | 2021-03-23 | 2021-06-04 | 浙江大华技术股份有限公司 | 分支路径跳转方法、装置、存储介质及电子装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115718922A (zh) * | 2022-11-28 | 2023-02-28 | 暨南大学 | 一种高可用的智能合约字节码重写方法、介质及装置 |
CN115718922B (zh) * | 2022-11-28 | 2023-05-26 | 暨南大学 | 一种高可用的智能合约字节码重写方法、介质及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4006337B2 (ja) | 共有ライブラリを使用して実行可能ファイルの実行を修正する方法 | |
JP6474398B2 (ja) | コードスタック管理 | |
DE102011005209B4 (de) | Programmanweisungsgesteuerte Instruktionsflusskontrolle | |
CN103927187B (zh) | 嵌入式系统程序执行方法 | |
TWI424354B (zh) | 程式碼轉換期間之執行控制 | |
EP2942727B1 (en) | Return-oriented programming as an obfuscation technique | |
US20040015972A1 (en) | Executing native code in place of non-native code | |
CN104517044A (zh) | 一种防止二进制文件被反编译的方法和装置 | |
CN104603755A (zh) | 循环向量化方法和设备 | |
CN114385525A (zh) | 一种并发访问usb设备的方法及系统 | |
CN106020905A (zh) | 一种微控制器固件开发与更新的方法及系统 | |
CN108469960B (zh) | 一种版本管理方法和装置 | |
JP2022511170A (ja) | 動的メモリ保護 | |
US10459851B2 (en) | Method and apparatus for executing a process on a device using memory privileges | |
CN115510430A (zh) | 一种函数指针及其数据依赖的识别与保护方法、装置 | |
CN110618824B (zh) | 一种软件升级方法、装置、介质和设备 | |
US10867032B2 (en) | Generating and executing protected items of software | |
JP2004240953A (ja) | コンピュータシステム、その同時多重スレッディング方法およびキャッシュコントローラシステム。 | |
WO2020095295A1 (en) | Return-oriented programming protection | |
JP6295914B2 (ja) | プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ | |
CN116166377A (zh) | 一种提升k8s任务处理效率的方法及系统 | |
CN103744641A (zh) | 禁止已翻译指令序列执行的方法、装置和虚拟机 | |
CN101464791A (zh) | 代码插入系统及方法 | |
WO2018041342A1 (en) | Method for avoiding a return oriented programming attempt on a computer and respective devices | |
CN103984531A (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 |