JP5945074B2 - Apiインターセプト関連のアプリケーションのための方法、デバイス、およびモバイル端末 - Google Patents

Apiインターセプト関連のアプリケーションのための方法、デバイス、およびモバイル端末 Download PDF

Info

Publication number
JP5945074B2
JP5945074B2 JP2015521964A JP2015521964A JP5945074B2 JP 5945074 B2 JP5945074 B2 JP 5945074B2 JP 2015521964 A JP2015521964 A JP 2015521964A JP 2015521964 A JP2015521964 A JP 2015521964A JP 5945074 B2 JP5945074 B2 JP 5945074B2
Authority
JP
Japan
Prior art keywords
api
function
identifier
virtual machine
class
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
Application number
JP2015521964A
Other languages
English (en)
Other versions
JP2015525931A (ja
Inventor
リチュン・ジャン
Original Assignee
テンセント・テクノロジー・(シェンジェン)・カンパニー・リミテッド
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by テンセント・テクノロジー・(シェンジェン)・カンパニー・リミテッド filed Critical テンセント・テクノロジー・(シェンジェン)・カンパニー・リミテッド
Publication of JP2015525931A publication Critical patent/JP2015525931A/ja
Application granted granted Critical
Publication of JP5945074B2 publication Critical patent/JP5945074B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3093Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/006Identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Telephone Function (AREA)

Description

本出願は、その全体が参照により組み込まれる、2012年7月20日に出願された「METHOD、DEVICE、AND MOBILE TERMINAL FOR API INTERCEPTION」という名称の中国特許出願第201210252551.8号の優先権を主張する。
開示された実装形態は、一般に、モバイル端末の分野に関し、より詳細には、アプリケーションプログラミングインターフェース(API)インターセプションの方法およびデバイス、ならびにモバイル端末に関する。
Android(アンドロイド)システムの開発が急速に進むにつれて、ますます多くの端末がAndroidシステムを使用している。Androidシステムは、オープンソースコードのシステムである。アプリケーションは、Androidシステムを使用する端末にインストールされ得、Androidシステムは、アプリケーションの実行環境を提供する。
現在、ベンダーがAndroidシステムを使用する端末を製造するとき、アプリケーションは、その端末に直接組み込まれ得る。ユーザは、ユーザの必要に従って、端末に他のアプリケーションをインストールすることもできる。これらのアプリケーションはすべて、対応するベンダーによって提供され、各アプリケーションが開発された後、各アプリケーションの機能は固定され、アプリケーションの機能は、拡張したり修正することができない。
アプリケーションの機能を拡張または修正するために、本発明は、機能インターセプションの方法およびデバイスを提供する。技術的なソリューションは、以下の通り記載されている。
アプリケーションプログラミングインターフェース(API)インターセプションの方法が提供され、方法は、
APIプロセスのプロセス識別子に基づいて、システムに対応する仮想マシンにおけるAPIプロセスをリアルタイムに監視するステップと、
APIプロセスが起動されると、APIプロセスのプロセス識別子に従ってメモリからAPIプロセスに対応する仮想マシンインスタンスを取得するステップと、
インターセプトされるAPIの識別子情報に従って、第1のコンピュータ言語で記述されている第1のAPIのアドレスを、第2のコンピュータ言語で記述されており、APIプロセスに対応する仮想マシンインスタンスからの第1のAPIに対応する第2のAPIの記憶されたアドレスと置き換えるステップであり、第2の言語が第1の言語とは異なる、ステップと、
第2の機能を介してAPIプロセスの制御を実施するステップと
を含む。
APIプロセスのプロセス識別子に基づいて、システムに対応する仮想マシンにおけるAPIプロセスをリアルタイムに監視するステップは、システムに対応する仮想マシンがAPIプロセスのプロセス識別子に対応するAPIプロセスを実行し始めることが検出されると、APIプロセスが起動されたことを検出するステップを含む。
インターセプトされるAPIの識別子情報は、少なくとも、インターセプトされるAPIが属するクラスのクラス識別子およびインターセプトされるAPIの機能の機能識別子を含む。
インターセプトされるAPIの識別子情報に従って、第1のコンピュータ言語で記述されている第1のAPIのアドレスを、第2のコンピュータ言語で記述されており、APIプロセスに対応する仮想マシンインスタンスからの第1のAPIに対応する第2のAPI(または置換機能)の記憶されたアドレスと置き換えるステップは、クラス識別子に従って、APIプロセスに対応する仮想マシンインスタンスから第1のAPIが属するクラスに対応するクラス構造を取得するステップと、第1のAPIの機能識別子に従って、クラス構造から第1のAPIに対応する機能構造を取得するステップと、機能構造に記憶された第1のAPIのアドレスを第2のAPI(または置換機能)の記憶されたアドレスと置き換えるステップとを含む。
第2のコンピュータ言語は、C言語またはC++言語である。
アプリケーションプログラミングインターフェース(API)インターセプションのデバイスが提供され、デバイスは、APIプロセスのプロセス識別子に基づいて、システムに対応する仮想マシンにおけるAPIプロセスをリアルタイムに監視するように構成されたモニタモジュールと、APIプロセスが起動されると、APIプロセスのプロセス識別子に従ってメモリからAPIプロセスに対応する仮想マシンインスタンスを取得するように構成された取得モジュールと、インターセプトされるAPIの識別子情報に従って、第1のコンピュータ言語で記述されている第1のAPIのアドレスを、第2のコンピュータ言語で記述されており、APIプロセスに対応する仮想マシンインスタンスからの第1のAPIに対応する第2のAPI(置換機能)の記憶されたアドレスと置き換え、第2の言語が第1の言語とは異なり、第2の機能を介してAPIプロセスの制御を実施するように構成された置換モジュールとを含む。
モニタモジュールは、具体的には、システムに対応する仮想マシンがAPIプロセスのプロセス識別子に対応するAPIプロセスを実行し始めることが検出されると、APIプロセスが起動されたことを検出するように構成される。
インターセプトされるAPIの識別子情報は、少なくとも、インターセプトされるAPIが属するクラスのクラス識別子およびインターセプトされるAPIの機能の機能識別子を含む。
置換モジュールは、クラス識別子に従って、APIプロセスに対応する仮想マシンインスタンスから第1のAPIが属するクラスに対応するクラス構造を取得するように構成された第1の取得ユニットと、第1のAPIの機能識別子に従って、クラス構造から第1のAPIに対応する機能構造を取得するように構成された第2の取得ユニットと、機能構造に記憶された第1のAPIのアドレスを第2のAPI(または置換機能)の記憶されたアドレスと置き換えるように構成された置換ユニットとを含む。
本発明の実施形態では、APIプロセスのプロセス識別子に従って、システムに対応する仮想マシンにおいて、APIプロセスがリアルタイムに監視され、APIプロセスが起動されたことが検出されると、APIプロセスに対応する仮想マシンインスタンスがAPIプロセスのプロセス識別子に従ってメモリから取得され、第1のAPIの識別子情報に従って、インターセプトされる機能のアドレスが、APIプロセスに対応する仮想マシンインスタンスからの第2のAPI(置換機能)に対応する記憶されたアドレスと置き換えられて、APIがインターセプトされるようにする。
いくつかの実施形態によれば、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行される1つまたは複数のプログラムを記憶するためのメモリとを有するモバイル通信端末で実行されるアプリケーションプログラミングインターフェース(API)インターセプションの方法は、APIのプロセス識別子に基づいて仮想マシンにおけるAPIのプロセスのステータスを監視するステップと、APIのプロセスが起動されると、APIのプロセス識別子に基づいてメモリからAPIのプロセスに対応する仮想マシンインスタンスを取得するステップと、APIのプロセス識別子に基づいて仮想マシンインスタンスにおけるAPIの機能の第1のアドレスを識別するステップと、第1のアドレスを置換機能の第2のアドレスと置き換えるステップであり、APIが第1のコンピュータ言語で記述されており、置換機能が第2のコンピュータ言語で記述されている、ステップと、置換機能を実行するステップとを含む。
いくつかの実施形態によれば、モバイルデバイスは、プロセッサと、メモリと、メモリに記憶され、プロセッサによって実行される1つまたは複数のプログラムであり、1つまたは複数のプログラムが、APIのプロセス識別子に基づいて仮想マシンにおけるAPIのプロセスのステータスを監視するための命令と、APIのプロセスが起動されると、APIのプロセス識別子に基づいてメモリからAPIのプロセスに対応する仮想マシンインスタンスを取得するための命令と、APIのプロセス識別子に基づいて仮想マシンインスタンスにおけるAPIの機能の第1のアドレスを識別するための命令と、第1のアドレスを置換機能の第2のアドレスと置き換えるための命令であり、APIが第1のコンピュータ言語で記述されており、置換機能が第2のコンピュータ言語で記述されている、命令と、置換機能を実行するための命令とを含むプログラムとを含む。
いくつかの実施形態によれば、ハンドヘルドコンピュータは、1つまたは複数のプロセッサと、1つまたは複数のプログラムを記憶するメモリとを備え、1つまたは複数のプログラムは、1つまたは複数のプロセッサによって実行されると、ハンドヘルドコンピュータに、APIのプロセス識別子に基づいて仮想マシンにおけるAPIのプロセスのステータスを監視させ、APIのプロセスが起動されると、APIのプロセス識別子に基づいてメモリからAPIプロセスに対応する仮想マシンインスタンスを取得させ、データベースに記憶された第1の組の基準に基づいて、APIがインターセプトされるべきかどうかを判断させ、APIがインターセプトされるべきである場合、データベースに記憶された第2の組の基準に基づいて置換機能を選択させ、APIのプロセス識別子に基づいて仮想マシンインスタンスにおけるAPIの機能の第1のアドレスを識別させ、第1のアドレスを置換機能が配置される第2のアドレスと置き換えさせ、APIが第1のコンピュータ言語で記述されており、置換機能が第2のコンピュータ言語で記述されており、置換機能を実行させて、APIがインターセプトされるようにする。
本発明の上述した実装形態ならびに追加の実装形態は、図面を併せ読めば、本発明の様々な態様の以下の詳細な説明の結果として、より明らかに理解される。類似の参照番号は、図面のいくつかの図にわたって対応する部分を指す。
いくつかの実施形態による、APIインターセプションの方法のフローチャートである。 いくつかの実施形態による、APIインターセプションの方法のフローチャートである。 いくつかの実施形態による、第1のAPIインターセプションのデバイスの概略構造図である。 いくつかの実施形態による、第2のAPI(または置換機能)インターセプションのデバイスの概略構造図である。 いくつかの実施形態による、APIインターセプションの方法のフローチャートである。 いくつかの実施形態による、モバイルコンピューティングデバイス(たとえば、ラップトップまたはスマートフォン)の例示的な実装形態の図である。
本発明の目的、技術的ソリューション、および利点をより理解できるようにするために、以下は、添付の図面を参照して本発明の実施形態をさらに詳しく説明する。
Androidシステムで実行されるアプリケーションは、1つまたは複数のクラスを含み、各クラスは、1つまたは複数のAPIを含む。アプリケーションによって実施される機能は、複数のステップに分割され得、各ステップは、1つまたは複数のAPIによって実施される。Androidシステムにおけるアプリケーションは、Androidシステムに対応する仮想マシンにおいて実行される。アプリケーションが起動されると、Androidシステムは、アプリケーションを実行するために使用されるプロセスを作成し、プロセスのために端末のメモリにおいて仮想マシンインスタンスを確立する。仮想マシンインスタンスは構造体であり、仮想マシンインスタンスは、プロセスのプロセス識別子を使用することによって識別され、仮想マシンインスタンスは、少なくとも、アプリケーションに含まれる各クラスに対応するクラス構造を含み、パラメータのタイプおよびアプリケーションに含まれるパラメータの数をさらに含むことができる。各クラスに対応するクラス構造は、各クラスのクラス識別子を使用することによって識別される。任意のクラスについて、クラスに対応するクラス構造は、少なくとも、クラスに含まれる各APIに対応する機能構造を含む。各APIに対応する機能構造は、各APIの機能識別子を使用することによって識別される。任意のAPIについて、APIに対応する機能構造は、少なくとも、APIのアドレスを含む。アドレスは記憶スペースに対応し、記憶スペースは、APIを実施する特定のコードを記憶するために使用され、記憶スペースは、端末の磁気ディスク上のスペースである。
プロセスが起動され、あるAPIが実行される必要が生じた後、プロセスは、APIが属するクラスのクラス識別子に従って、プロセスに対応する仮想マシンインスタンスからクラスに対応するクラス構造を取得し、APIの機能の機能識別子に従って、クラスに対応するクラス構造から、APIに対応する機能構造を取得し、機能構造からAPIのアドレスを取得し、アドレスに従って、APIを実施するコードを呼び出し、APIを実施するコードを実行して、APIが実行されるようにする。
アプリケーションによって実施される機能は、複数のステップに分割され得、各ステップは、1つまたは複数のAPIによって実施される。アプリケーションの機能が修正または拡張される必要があるとき、アプリケーションに含まれる特定のステップまたはいくつかの特定のステップが修正されて、アプリケーションの機能が修正または拡張されるようにし得る。これらのステップは対応するAPIによって実施され、これらのステップを実施するAPIが修正され、したがって、これらのステップが修正され得る。説明の便宜上、これらのステップを実施するAPIは、第1のAPIと呼ばれ、第1のAPIは、第1のコンピュータ言語で記述されているAPIであり、第1のコンピュータ言語は、Java(登録商標)言語でもよい。
実施形態において、技術者は、前もって第2のAPI(または置換機能)を開発することができる。第2のAPI(または置換機能)は、修正されたステップを実施することができる。置換機能は、API、または第1のAPIもしくは第1のAPIの機能を置き換えるために開発される任意の他の機能とすることができる。次いで、第1のAPIは、アプリケーションを実行するために使用されるプロセスによって呼び出され、本発明における方法によってインターセプトされ、技術者によって開発される第2のAPI(または置換機能)は、アプリケーションを実行するために使用されるプロセスによって呼び出されて、アプリケーションの機能が修正または拡張されるようにする。第2のAPI(または置換機能)は、第2のコンピュータ言語で記述されているAPIであり、第2のコンピュータ言語は、C言語、C++言語などである。
Androidシステムにおいて実行されるアプリケーションに含まれるクラスはJavaクラスでもよく、クラスに含まれるAPIはJava APIでもよいことに留意されたい。
図1は、いくつかの実施形態による、APIインターセプションの方法のフローチャートである。
図1に示されるように、本発明の一実施形態は、APIインターセプションの方法を提供し、この方法は、以下を含む。
ステップ101: APIプロセスのプロセス識別子に基づいて、システムに対応する仮想マシンにおけるAPIプロセスをリアルタイムに監視する。
ステップ102: APIプロセスが起動されると、APIプロセスのプロセス識別子に従ってメモリからAPIプロセスに対応する仮想マシンインスタンスを取得する。
ステップ103: インターセプトされるAPIの識別子情報に従って、APIプロセスに対応する仮想マシンインスタンスにおける第1のコンピュータ言語で記述されている第1のAPIのコードを指すアドレスを、第1のAPIに対応し、第2のコンピュータ言語で記述されている第2のAPI(または置換機能)のコードを指す記憶されたアドレスと置き換えることであり、第2の言語は第1の言語と異なる。
第2の機能を介してAPIプロセスの制御が実施される。
本発明の実施形態では、APIプロセスのプロセス識別子に従って、システムに対応する仮想マシンにおいて、APIプロセスがリアルタイムに監視され、APIプロセスが起動されたことが検出されると、APIプロセスに対応する仮想マシンインスタンスがAPIプロセスのプロセス識別子に従ってメモリから取得され、第1のAPIの識別子情報に従って、インターセプトされる機能のアドレスが、APIプロセスに対応する仮想マシンインスタンスからの第2のAPI(置換機能)に対応する記憶されたアドレスと置き換えられて、APIがインターセプトされるようにする。
図2は、いくつかの実施形態による、APIインターセプションの方法のフローチャートである。
本発明の一実施形態は、機能インターセプションの方法を提供する。
ターゲットアプリケーションとは、機能の拡張または機能の修正が実行される必要があるアプリケーションである。ターゲットアプリケーションに含まれる特定のステップまたはいくつかの特定のステップが修正されて、ターゲットアプリケーションの機能が拡張または修正されるようにし得る。これらのステップを実施するために使用されるAPIは、第1のAPIである。さらに、技術者は、前もって第2のAPI(または置換機能)を開発する。第2のAPI(または置換機能)は、1つまたは複数の修正されたステップを実施するために使用される。ターゲットアプリケーションを実行するために使用されるAPIプロセスによって呼び出されるインターセプトされる機能が本実施形態で提供される方法によってインターセプトされ、技術者によって前もって開発される第2のAPI(または置換機能)がAPIプロセスによって呼び出されて、ターゲットアプリケーションの機能が拡張または修正されるようにする。図2を参照すると、方法は以下を含む。
ステップ201: APIプロセスのプロセス識別子に基づいて、Androidシステムに対応する仮想マシンにおいてターゲットアプリケーションを実行するAPIプロセスをリアルタイムに監視し、APIプロセスが起動されたことが検出されると、ステップ202を実行する。
Androidシステムにおけるアプリケーションは、Androidシステムに対応する仮想マシンを介して実行される。ターゲットアプリケーションが起動されると、Androidシステムは、ターゲットアプリケーションを実行するために使用されるAPIプロセスを作成し、APIプロセスのための仮想マシンインスタンスを確立する。仮想マシンインスタンスは構造体であり、仮想マシンインスタンスは、APIプロセスのプロセス識別子を使用することによって識別され、APIプロセスに対応する仮想マシンインスタンスは、少なくとも、ターゲットアプリケーションに含まれる各クラスに対応するクラス構造を含む。各クラスに対応するクラス構造は、各クラスのクラス識別子を使用することによって識別される。任意のクラスについて、クラスに対応するクラス構造は、少なくとも、クラスに含まれる各APIに対応する機能構造を含む。各APIに対応する機能構造は、各APIの機能識別子を使用することによって識別される。任意のAPIについて、APIに対応する機能構造は、少なくとも、APIのアドレスを含む。次いで、APIプロセスが起動され、APIプロセスは、Androidシステムに対応する仮想マシンに配置され、仮想マシンはAPIプロセスを実行する。
APIプロセスのプロセス識別子は、前もって技術者によって構成され、APIプロセスのプロセス識別子は、APIプロセスの名前でもよく、APIプロセスの名前は、ターゲットアプリケーションの名前でもよい。
このステップは、具体的には、前もって構成されたAPIプロセスのプロセス識別子に従って、Androidシステムに対応する仮想マシンをリアルタイムに監視し、Androidシステムに対応する仮想マシンがAPIプロセスのプロセス識別子に対応するAPIプロセスを実行し始めたことが検出されると、APIプロセスが起動されたことを検出するステップであり得る。
たとえば、電話の呼出しに使用されるアプリケーションは、Androidシステムによって提供されるアプリケーションであり、呼出しに使用されるアプリケーションは、被呼番号に従ってダイヤル呼出しする第1のステップと、発呼者を被呼者に接続する第2のステップとの2つのステップを含む。第1のステップは、ダイヤル呼出しを実施するために使用されるAPIによって実施され得、第2のステップは、呼出しを接続するために使用されるAPIによって実施され得る。さらに、呼出しに使用されるアプリケーションが呼出しに使用されるクラスを含み、呼出しに使用されるクラスは、ダイヤル呼出しを実施するために使用されるAPI、および呼出しを接続するために使用されるAPIを含むことに留意されたい。
本実施形態では、ユーザが被呼番号をダイヤルするために呼出しに使用されるアプリケーションを使用すると、被呼者の地理的位置が表示され得るように、呼出しに使用されるアプリケーションによって実施される機能が拡張される必要があると仮定される。したがって、呼出しに使用されるアプリケーションは、ターゲットアプリケーションであり、ターゲットアプリケーションに含まれる第1のステップは、修正される必要があり、第1のAPIは、第1のステップを実施するダイヤル呼出しを実施するために使用されるAPIである。技術者は、前もって第2のAPI(または置換機能)を開発する。第2のAPI(または置換機能)は、修正された第1のステップを実施するために使用され、すなわち、第2のAPI(または置換機能)は、被呼番号がダイヤルされると、被呼者の地理的な位置を表示することができる。
Androidシステムにおけるターゲットアプリケーションが起動されると、Androidシステムは、ターゲットアプリケーションを実行するために使用されるAPIプロセスを作成し、APIプロセスのために端末のメモリにおいてTable1(表1)に示される仮想マシンインスタンスを確立する。仮想マシンインスタンスは、APIプロセスのプロセス識別子ProcessID1を使用して識別され、仮想マシンインスタンスは、呼出しに使用されるクラスに対応するクラス構造を含む。クラス構造は、呼出しに使用されるクラスのクラス識別子ClassID1を使用して識別され、クラス構造は、ダイヤル呼出しを実施するために使用されるAPIに対応する機能構造、および呼出しを接続するために使用されるAPIに対応する機能構造を含む。ダイヤル呼出しを実施するために使用されるAPIに対応する機能構造は、ダイヤル呼出しを実施するために使用されるAPIの機能識別子FunctionID1を使用して識別され、機能構造は、ダイヤル呼出しを実施するために使用されるAPIに対応するアドレスAddress1を含む。呼出しを接続するために使用されるAPIに対応する機能構造は、呼出しを接続するために使用されるAPIの機能識別子FunctionID2を使用して識別され、機能構造は、呼出しを接続するために使用されるAPIに対応するアドレスAddress2を含む。
Figure 0005945074
技術者は、前もって第2のAPI(または置換機能)を開発し、第2のAPI(または置換機能)のアドレスは、Address2である。それに対応して、Androidシステムに対応する仮想マシンは、APIプロセスのプロセス識別子ProcessID1に従って、リアルタイムに監視され、APIプロセスが仮想マシンにおいて実行し始めたことが検出されると、APIプロセスが起動されると決定される。
ステップ202: APIプロセスのプロセス識別子に従ってモバイル端末におけるメモリからAPIプロセスに対応する仮想マシンインスタンスを取得する。
たとえば、APIプロセスに対応し、Table1(表1)に示される仮想マシンインスタンスは、APIプロセスのプロセス識別子ProcessID1に従って端末におけるメモリから取得される。
ステップ203: 第1のAPIの識別子情報に従って、APIプロセスに対応する仮想マシンインスタンスから第1のAPIに関連したアドレスを取得し、第1のAPIの識別子情報が、第1のAPIが属するクラスのクラス識別子および第1のAPIの機能の機能識別子を含む。
技術者は、前もって、第1のAPIの識別子情報が、第1のAPIが属するクラスのクラス識別子および第1のAPIの機能識別子を含むように構成する。具体的には、第1のAPIが属するクラスのクラス識別子に従って、第1のAPIが属するクラスに対応するクラス構造は、APIプロセスに対応する仮想マシンインスタンスから取得され、第1のAPIに対応する機能構造は、第1のAPIの機能識別子に従って取得されたクラス構造から取得され、第1のAPIに対応するアドレスは、第1のAPIに対応する機能構造から取得される。
たとえば、本実施形態では、技術者は、前もって、第1のAPIの識別子情報が、第1のAPIが属するクラスのクラス識別子ClassID1および第1のAPIの機能識別子FunctionID1を含むように構成する。
第1のAPIが属するクラスのクラス識別子ClassID1に従って、第1のAPIが属するクラスに対応するクラス構造は、APIプロセスに対応し、Table1(表1)に示される仮想マシンインスタンスから取得され、第1のAPIの機能識別子FunctionID1に従って、第1のAPIに対応する機能構造は、第1のAPIが属するクラスに対応するクラス構造から取得され、第1のAPIに対応するAddress1は、機能構造から取得される。
ステップ204: APIプロセスに対応する仮想マシンインスタンスにおける第1のAPIのコードを指すアドレスを、第1のAPIに対応する第2のAPIのコードを指す記憶されたアドレスと置き換える。
APIプロセスが第1のAPIを実行する必要があるとき、第1のAPIが属するクラスのクラス識別子および第1の機能識別子に従って、コードが仮想マシンインスタンスから取得される。次いで、コードは、第2のAPI(または置換機能)のアドレスにジャンプする。その結果、APIプロセスは、第2のAPI(または置換機能)を実施するコードを呼び出し、そのアドレスに従って第2のAPI(または置換機能)を実施するコードを実行して、ターゲットアプリケーションが修正または拡張されるようにする。
たとえば、APIプロセスに対応し、Table1(表1)に示される仮想マシンインスタンスにおいて、第1のAPIのAddress1が第2のAPI(または置換機能)のAddress2と置き換えられて、APIプロセスに対応し、Table2(表2)に示される仮想マシンインスタンスが取得されるようにする。
Figure 0005945074
APIプロセスがインターセプトされる第1のAPI(またはその機能のうちの1つ)を実行する必要があるとき、第1のAPIが属するクラスのクラス識別子ClassID1およびインターセプトされる第1のAPI(またはその機能のうちの1つ)の機能識別子FunctionID1に従って、Table2(表2)に示される仮想マシンインスタンスから取得されるアドレスはAddress1であり、したがって、APIプロセスは、第2のAPI(または置換機能)を実施するコードを呼び出し、Address2に従って第2のAPI(または置換機能)を実施するコードを実行し、被呼番号がダイヤルされると、被呼者の地理的位置が表示されるようにする。
本発明の実施形態では、APIプロセスのプロセス識別子に従って、Androidシステムに対応する仮想マシンにおいて、APIプロセスがリアルタイムに監視され、APIプロセスが起動されたことが検出されると、APIプロセスに対応する仮想マシンインスタンスがAPIプロセスのプロセス識別子に従ってメモリから取得され、第1のAPIの識別子情報に従って、第1のAPIのアドレスが、APIプロセスに対応する仮想マシンインスタンスからの第2のAPI(または置換機能)に対応する記憶されたアドレスと置き換えられ、第1のAPIがインターセプトされるようにする。このようにして、ターゲットアプリケーションを実行するために使用されるAPIプロセスは、置き換えられたアドレスに従って第2のAPI(または置換機能)を実施するコードを呼び出し、実行し、ターゲットアプリケーションを修正または拡張する機能を実施するために、第2のAPI(または置換機能)が使用され、ターゲットアプリケーションの機能が修正または拡張されるようにする。
図3は、いくつかの実施形態による、第1のAPIインターセプションのデバイスの概略構造図である。
図3に示されるように、本発明の一実施形態は、APIインターセプションのデバイスを提供し、このデバイスは、
APIプロセスのプロセス識別子に基づいて、システムに対応する仮想マシンにおけるAPIプロセスをリアルタイムに監視するように構成されたモニタモジュール301と、
APIプロセスが起動されると、APIプロセスのプロセス識別子に従ってメモリからAPIプロセスに対応する仮想マシンインスタンスを取得するように構成された取得モジュール302と、
インターセプトされるAPIの識別子情報に従って、APIプロセスに対応する仮想マシンインスタンスにおける第1のコンピュータ言語で記述されている第1のAPIのコードを指すアドレスを、第1のAPIに対応し、第2のコンピュータ言語で記述されている第2のAPI(または置換機能)のコードを指す記憶されたアドレスと置き換え、第2の言語が第1の言語とは異なり、第2の機能を介してAPIプロセスの制御を実施するように構成された置換モジュール303と
を含む。
モニタモジュール301は、具体的には、仮想マシンがAPIのプロセス識別子に対するAPIプロセスを実行し始めることを検出すると、APIプロセスが起動されたことを検出するように構成される。
インターセプトされるAPIの識別子情報は、少なくとも、インターセプトされるAPIが属するクラスのクラス識別子およびインターセプトされるAPIの機能の機能識別子を含む。
図4は、本発明の実施形態4による、第2のAPI(または置換機能)インターセプションのデバイスの概略構造図である。
置換モジュール303は、
クラス識別子に従って、APIプロセスに対応する仮想マシンインスタンスから第1のAPIが属するクラスに対応するクラス構造を取得するように構成された第1の取得ユニット3031と、
第1のAPIの機能識別子に従って、クラス構造から第1のAPI(またはその機能のうちの1つ)に対応する機能構造を取得するように構成された第2の取得ユニット3032と、
機能構造に記憶された第1のAPIのアドレスを第2のAPI(または置換機能)の機能の記憶されたアドレスと置き換えるように構成された置換ユニット3033と
を含む。
本発明の実施形態では、APIプロセスのプロセス識別子に従って、Androidシステムに対応する仮想マシンにおいて、APIプロセスがリアルタイムに監視され、APIプロセスが起動されたことが検出されると、APIプロセスに対応する仮想マシンインスタンスがAPIプロセスのプロセス識別子に従ってメモリから取得され、第1のAPIの識別子情報に従って、第1のAPIのアドレスが、APIプロセスに対応する仮想マシンインスタンスからの第2のAPI(または置換機能)に対応する記憶されたアドレスと置き換えられて、第1のAPIがインターセプトされるようにする。このようにして、ターゲットアプリケーションを実行するために使用されるAPIプロセスは、置き換えられたアドレスに従って第2のAPI(または置換機能)を実施するコードを呼び出し、実行し、ターゲットアプリケーションを修正または拡張する機能を実施するために、第2のAPI(または置換機能)が使用されて、ターゲットアプリケーションの機能が修正または拡張されるようにする。
本発明の一実施形態は、実施形態3におけるデバイスを含むモバイル端末を提供する。
図5は、いくつかの実施形態による、APIインターセプションの方法のフローチャートである。この方法は、1つまたは複数のプロセッサと、1つまたは複数のプログラムを記憶するメモリとを有するコンピュータ、ハンドヘルドコンピューティングデバイス、またはハンドヘルドコンピュータにおいて実行され得る。1つまたは複数のプログラムは、デバイス上にインストールされ得、1つまたは複数のプロセッサによって実行されると、デバイスは方法を実行する。ハンドヘルドコンピューティングデバイスまたはハンドヘルドコンピュータは、人の手で持つのにぴったりな任意のコンピューティングデバイスとすることができる。昨今人気のハンドヘルドコンピューティングデバイスまたはハンドヘルドコンピュータは、スマートフォンを含む。いくつかの実施形態では、1つまたは複数のプログラムは、セキュリティソフトウェアアプリケーションの一部である。
ステップS501で、コンピュータ、ハンドヘルドコンピューティングデバイス、またはハンドヘルドコンピュータは、APIのプロセス識別子に基づいて仮想マシンにおけるAPIのプロセスのステータスを監視する。
ステップS502で、APIのプロセスが起動されると、APIのプロセス識別子に基づいてメモリからAPIプロセスに対応する仮想マシンインスタンスを取得する。
ステップS503で、デバイスは、データベースに記憶された第1の組の基準に基づいて、APIがインターセプトされるべきかどうかを判断する。第1の組の基準は、ソフトウェアアプリケーションで呼び出されるAPI、ソフトウェアはAPIを呼び出すための事前の許可があるかどうかなど、データベースにおけるソフトウェアアプリケーションの登録された情報に関する考慮すべき事項を含み得る。いくつかの実施形態では、第1の組の基準は、データベースにおけるソフトウェアアプリケーションの登録された情報がソフトウェアアプリケーションで呼び出されるAPIと互換性を持つかどうかを含み得る。登録された情報は、ソフトウェアのタイプおよび目的、ソフトウェアに関係するユーザからの許可、ならびにソフトウェアの前歴を含むことができる。たとえば、気象サービスとして登録されているソフトウェアアプリケーションが事前のユーザ許可のない電子メール管理のためにAPIを呼び出そうとしている場合、ソフトウェアは、APIがインターセプトされるべきであると決定することができる。データベースは、APIがウィルスによって起動されると、APIがインターセプトされるように、ウィルスデータベースを含み得る。
APIがインターセプトされるべきではないことをデバイスが決定した場合、APIは続いて中断なく実行される。
APIまたはAPIの機能のうちの1つがインターセプトされるべきであることをデバイスが決定した場合、データベースに記憶された第2の組の基準に基づいて置換機能を選択する(ステップS503)。第2の組の基準は、APIが呼び出されるソフトウェアアプリケーション、ソフトウェアの挙動、およびソフトウェアがAPIを起動させる環境など、登録された情報に関する考慮すべき事項を含む。たとえば、電話の呼出しのAPIがユーザ対話アプリケーションによって起動されると、デバイスは、APIをインターセプトし、ユーザの事前の指示に従って置換としてネットワーク電話API機能を選択することができる。APIの電話の呼出しがウィルスによって行われたとき、デバイスは、APIをインターセプトし、警告サインをユーザに表示するように警告機能を選択することができる。
ステップS504で、デバイスは、APIの機能が配置される第1のアドレスを、APIのプロセス識別子に基づいて仮想マシンインスタンスから見つける。第1のアドレスを見つけるプロセスは、APIが属するクラスのクラス構造を、クラス識別子に基づいて仮想マシンインスタンスから取得するステップと、APIの機能識別子に基づいてAPIの機能の機能構造を取得するステップとを含む。プロセスのより詳細な説明は、段落[0047]〜[0054]で見つけることができ、ここでは繰り返さない。
ステップS505で、デバイスは、第1のアドレスを置換機能が配置される第2のアドレスと置き換える。いくつかの実施形態では、APIは、第1のコンピュータ言語で記述されており、置換機能は、第2のコンピュータ言語で記述されている。たとえば、第1のコンピュータ言語はJava(登録商標)であり、APIはJavaメソッドで記述されている。置換機能は、たとえば、CまたはC++言語によって、ネイティブメソッドで記述され得る。
ステップS506で、APIの機能のアドレスが置換機能のアドレスと置き換えられるので、置換機能が実行される。
図6は、いくつかの実施形態による、モバイルコンピューティングデバイス602(たとえば、ラップトップまたはスマートフォン)の例示的な実装形態の図である。いくつかの特定の特徴が例示されているが、当業者であれば、簡潔さのために、および本明細書に開示された実装形態のより関連する態様を不明瞭にしないように、様々な他の特徴が例示されていないことを本開示から諒解されよう。そのために、モバイルデバイス600は、1つまたは複数の処理ユニット(CPU)602と、1つまたは複数のネットワークまたは他の通信インターフェース608と、ディスプレイ601と、メモリ606と、これらおよび様々な他の構成要素を相互接続するための1つまたは複数の通信バス604とを含む。通信バスは、システム構成要素間の通信を相互接続し、制御する回路(時としてチップセットと呼ばれる)を含み得る。メモリ606は、高速ランダムアクセスメモリ、たとえばDRAM、SRAM、DDR RAM、または他のランダムアクセス固体メモリデバイスを含み、たとえば1つもしくは複数の磁気ディスク記憶装置、光ディスク記憶装置、フラッシュメモリ装置、または他の不揮発性固体記憶装置などの不揮発メモリを含むことができる。メモリ606は、CPU602から離れて配置される1つまたは複数の記憶装置を随意に含むことができる。メモリ606内に不揮発性および揮発性メモリ装置を含むメモリ606は、非一時的コンピュータ可読記憶媒体を含む。
いくつかの実装形態では、メモリ606またはメモリ606の非一時的コンピュータ可読記憶媒体は、オペレーティングシステム616、ネットワーク通信モジュール618、仮想マシン620、1つまたは複数の置換機能630、およびアプリケーションプログラム632を含めて、プログラム、モジュール、およびデータ構造、またはそのサブセットを記憶する。
オペレーティングシステム616は、様々な基本的なシステムサービスを処理し、ハードウェア依存のタスクを実行するための手順を含む。
ネットワーク通信モジュール618は、1つまたは複数の通信ネットワークインターフェース608(有線またはワイヤレス)、および1つまたは複数の通信ネットワーク、たとえばインターネット、他の広域ネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワークなどを介して他のデバイスとの通信を容易にする。
仮想マシン620は、たとえば、アプリケーションプログラム632のうちの1つによって呼び出される各APIプロセスの仮想マシンインスタンス622を含み、仮想マシンインスタンス622は、たとえばプロセス識別子などAPIプロセスと関連した情報をさらに含む。いくつかの実施形態では、仮想マシン620は、図3および図4に関連して上述したように、モニタモジュール301、取得モジュール302、および置換モジュール303をさらに含む。モニタモジュール301、取得モジュール302、および置換モジュール303のうちのいずれかが別々にメモリ606内に、しかし仮想マシン620の外部に存在してもよいことは、当業者には明らかである。
置換機能630は、異なるアプリケーションプログラム632と関連したプロセスをインターセプトするために、事前に生成される。一般的に、それらは、仮想マシンインスタンス622を書くために使用されるものとは異なるコンピュータ言語で記述されている。上述したように、仮想マシンインスタンス622は、仮想マシンインスタンス622に関連付けられたAPIプロセス情報622-aを調べることに基づいて置換機能630のうちの1つを呼び出すように構成される。
前述の実施形態のステップの全部または一部がハードウェアを介して実施され得る、または関連したハードウェアに指示するプログラムによって実施され得ることを、当業者であれば理解されよう。プログラムは、コンピュータ可読媒体に記憶され得る。記憶媒体は、読取り専用メモリ、磁気ディスク、光ディスクなどとすることができる。
前述の説明は、単に本発明の例示的な実施形態にすぎず、本発明を制限するためのものではない。本発明の意図および原理内で行われる任意の変更、等価の置換、または改良は、本発明の保護範囲内に含まれるものとする。
特定の実施形態が上述されているが、本発明をこれらの特定の実施形態に限定するためのものではないことを理解されよう。これに対して、本発明は、添付の特許請求の範囲の意図および範囲内である変形、変更、および均等物を含む。多数の特定の詳細は、本明細書において提示される主題の完全な理解を提供するために記載される。しかし、主題がこれらの特定の詳細なしに実施され得ることは、当業者にとって明らかである。他の例では、周知の方法、手順、構成要素、および回路は、実施形態の態様を不必要に不明瞭にしないように、詳述されていない。
第1の、第2のなどの用語は、本明細書では様々な要素を記載するために使用され得るが、これらの要素は、これらの用語によって制限されないものとする。これらの用語は、ある要素と別の要素とを区別するために使用されているにすぎない。たとえば、本発明の意図を逸脱することなく、第1位の基準は第2位の基準と呼ばれ得、同様に、第2位の基準は第1位の基準と呼ばれ得る。第1位の基準と第2位の基準の両方は順位の基準であるが、それらは同じ順位の基準でない。
本明細書における本発明の説明において使用される用語は、特定の実施形態を説明するためのものにすぎず、本発明を制限するものではない。本発明の説明および添付の特許請求の範囲において使用される際、状況が別段明らかに示さない限り、単数形「a」、「an」および「the」は複数形も含むものとする。本明細書で使用される「および/または」という用語は、関連の列挙された項目のうちの1つまたは複数の任意のおよびすべての可能な組み合わせを指し、含むことも理解されよう。用語「含む」、「含んでいる」、「備える」、および/または「備えている」という用語は、本明細書で使用される際、述べられた特徴、動作、要素、および/または構成要素の存在を特定するが、1つまたは複数の他の特徴、動作、要素、構成要素および/またはそのグループの存在または追加を排除するものではないことをさらに理解されよう。
本明細書で使用される際、「〜場合」という用語は、「〜とき」もしくは「〜すると」、または状況に応じて、述べられた先行条件が真であることを「決定することに応答して」、もしくは「決定に従って」、もしくは「検出に応答して」を意味すると解釈され得る。同様に、句「[述べられた先行条件が真であること]が決定された場合」、または「[述べられた先行条件が真である]場合」、または「[述べられた先行条件が真である]とき」は、状況に応じて、述べられた先行条件が真であることを「決定すると」、または「決定することに応答して」、または「決定に従って」、または「検出すると」、または「検出することに応答して」を意味すると解釈され得る。
様々な図面のいくつかは、特定の順序でいくつかの論理的段階を示しているが、順序に依存していない段階は、並び替えられてもよく、他の段階は、結合されたり切り離されたりしてもよい。いくつかの並び替えまたは他のグループ化が具体的に言及されているが、他も当業者には明らかであるので、変形形態の完全なリストを提示しない。さらに、段階は、ハードウェア、ファームウェア、ソフトウェアまたはそれらの任意の組合せでも実施され得ることを認識されたい。
前述の説明は、説明上、特定の実装形態に関して記載されている。しかしながら、上記の例示的な説明は、網羅的ではなく、または本発明を開示される正確な形に制限するものではない。上記の教示に鑑みて、多くの変更および変形が可能である。実装形態は、本発明の原理およびその実際の適用を最もよく説明するために選択され、記載されており、それによって、当業者は、本発明および様々な実装形態を、企図される特定の使用に適する様々な変更で最もよく使用することができる。実装形態は、添付の特許請求の範囲の意図および範囲内である変形、変更、および均等物を含む。多数の特定の詳細は、本明細書において提示される主題の完全な理解を提供するために記載される。しかし、主題がこれらの特定の詳細なしに実施され得ることは、当業者にとって明らかである。他の例では、周知の方法、手順、構成要素、および回路は、実装形態の態様を不必要に不明瞭にしないように、詳述されていない。
301 モニタモジュール
302 取得モジュール
303 置換モジュール
600 モバイルデバイス
601 ディスプレイ
602 モバイルコンピューティングデバイス
604 通信バス
606 メモリ
608 通信インターフェース
616 オペレーティングシステム
618 ネットワーク通信モジュール
620 仮想マシン
622 仮想マシンインスタンス
622-a APIプロセス情報
630 置換機能
632 アプリケーションプログラム
3031 第1の取得ユニット
3032 第2の取得ユニット
3033 置換ユニット

Claims (20)

1つまたは複数のプロセッサと、前記1つまたは複数のプロセッサによって実行される1つまたは複数のプログラムを記憶するためのメモリとを有するモバイル通信端末で実行されるアプリケーションプログラミングインターフェース(API)インターセプションの方法であって、
プロセスのプロセス識別子に基づいて仮想マシンにおけるAPIの前記プロセスのステータスを監視するステップと、
前記APIの前記プロセスが起動されると、前記プロセスの前記プロセス識別子に基づいて前記メモリから前記APIの前記プロセスに対応する仮想マシンインスタンスを取得するステップと、
前記APIの識別子情報に基づいて前記仮想マシンインスタンスにおける前記APIの機能の第1のアドレスを識別するステップと、
前記第1のアドレスを置換機能の第2のアドレスと置き換えるステップであり、前記APIが第1のコンピュータ言語で記述されており、前記置換機能が第2のコンピュータ言語で記述されている、ステップと、
前記置換機能を実行するステップと
を含むアプリケーションプログラミングインターフェース(API)インターセプションの方法。
前記プロセスの前記プロセス識別子に基づいて仮想マシンにおける前記プロセスのステータスを監視するステップが、
前記仮想マシンが前記プロセス識別子に関連付けられたプロセスを実行し始めることを検出すると、前記プロセスの起動を検出するステップ
を含む、請求項1に記載の方法。
前記APIの前記識別子情報が、前記APIが属するクラスのクラス識別子と、前記APIの前記機能の機能識別子とを含む、請求項1に記載の方法。
前記APIの前記識別子情報に基づいて前記仮想マシンインスタンスにおける前記APIの機能の第1のアドレスを識別するステップが、
前記APIが属するクラスのクラス構造を、前記クラス識別子に基づいて前記仮想マシンインスタンスから取得するステップと、
前記APIの前記機能の前記機能識別子に基づいて前記APIの前記機能の機能構造を取得するステップと
を含む、請求項3に記載の方法。
前記第1のアドレスが、前記APIの前記機能の前記機能構造に記憶される、請求項4に記載の方法。
前記第2のコンピュータ言語がCまたはC++である、請求項1に記載の方法。
プロセッサと、
メモリと、
前記メモリに記憶され、前記プロセッサによって実行される1つまたは複数のプログラムであり、前記1つまたは複数のプログラムが、
プロセスのプロセス識別子に基づいて仮想マシンにおけるAPIの前記プロセスのステータスを監視するための命令と、
前記APIの前記プロセスが起動されると、前記プロセスの前記プロセス識別子に基づいて前記メモリから前記APIの前記プロセスに対応する仮想マシンインスタンスを取得するための命令と、
前記APIの識別子情報に基づいて前記仮想マシンインスタンスにおける前記APIの機能の第1のアドレスを識別するための命令と、
前記第1のアドレスを置換機能の第2のアドレスと置き換えるための命令であり、前記APIが第1のコンピュータ言語で記述されており、前記置換機能が第2のコンピュータ言語で記述されている、命令と、
前記置換機能を実行するための命令と
を含むプログラムと
を含むモバイルデバイス。
前記プロセスの前記プロセス識別子に基づいて仮想マシンにおける前記プロセスのステータスを監視するための命令が、
前記仮想マシンが前記プロセス識別子に関連付けられたプロセスを実行し始めることを検出すると、前記プロセスの起動を検出するための命令
を含む、請求項7に記載のモバイルデバイス。
前記APIの前記識別子情報が、前記APIが属するクラスのクラス識別子と、前記APIの前記機能の機能識別子とを含む、請求項7に記載のモバイルデバイス。
前記APIの前記識別子情報に基づいて前記仮想マシンインスタンスにおける前記APIの機能の第1のアドレスを識別するための命令が、
前記APIが属するクラスのクラス構造を、前記APIが属するクラスのクラス識別子に従って前記仮想マシンインスタンスから取得するための命令と、
前記APIの前記機能の機能識別子に従って前記APIの前記機能の機能構造を取得するための命令と
を含む、請求項8に記載のモバイルデバイス。
前記第1のアドレスが、前記APIの前記機能の前記機能構造に記憶される、請求項10に記載のモバイルデバイス。
前記第2のコンピュータ言語がCまたはC++である、請求項7に記載のモバイルデバイス。
ハンドヘルドコンピュータであって、
1つまたは複数のプロセッサと、
1つまたは複数のプログラムを記憶するメモリであり、前記1つまたは複数のプログラムが前記1つまたは複数のプロセッサによって実行されると、前記ハンドヘルドコンピュータに、
プロセスのプロセス識別子に基づいて仮想マシンにおけるAPIの前記プロセスのステータスを監視させ、
前記APIの前記プロセスが起動されると、前記プロセスの前記プロセス識別子に基づいて前記メモリから前記APIプロセスに対応する仮想マシンインスタンスを取得させ、
データベースに記憶された第1の組の基準に基づいて、前記APIがインターセプトされるべきかどうかを判断させ、
前記APIがインターセプトされるべきである場合、前記データベースに記憶された第2の組の基準に基づいて置換機能を選択させ、
前記APIの識別子情報に基づいて前記仮想マシンインスタンスにおける前記APIの機能の第1のアドレスを識別させ、
前記第1のアドレスを前記置換機能の第2のアドレスと置き換えさせ、前記APIが第1のコンピュータ言語で記述されており、前記置換機能が第2のコンピュータ言語で記述されており、
前記置換機能を実行させる
メモリと
を含むハンドヘルドコンピュータ。
前記1つまたは複数のプログラムがコンピュータセキュリティソフトウェアアプリケーションの一部分である、請求項13に記載のハンドヘルドコンピュータ。
前記データベースがウィルスデータベースを含む、請求項13に記載のハンドヘルドコンピュータ。
前記第1の組の基準が、前記データベースにおけるソフトウェアアプリケーションの登録された情報が前記ソフトウェアアプリケーションで呼び出される前記APIと互換性を持つかどうかを含む、請求項13に記載のハンドヘルドコンピュータ。
前記第2の組の基準が、前記APIが呼び出されるソフトウェアアプリケーションの登録された情報を含む、請求項13に記載のハンドヘルドコンピュータ。
前記APIの前記識別子情報が、前記APIが属するクラスのクラス識別子と、前記APIの前記機能の機能識別子とを含む、請求項13に記載のハンドヘルドコンピュータ。
前記APIの前記識別子情報に基づいて前記仮想マシンインスタンスにおける前記APIの前記機能の前記第1のアドレスを識別させることが、
前記APIが属する前記クラスのクラス構造を、前記クラス識別子に基づいて前記仮想マシンインスタンスから取得させることと、
前記APIの前記機能識別子から前記APIの前記機能の機能構造を取得させることと
を含む、請求項18に記載のハンドヘルドコンピュータ。
前記第1のアドレスが、前記APIの前記機能の前記機能構造に記憶される、請求項19に記載のハンドヘルドコンピュータ。
JP2015521964A 2012-07-20 2013-07-18 Apiインターセプト関連のアプリケーションのための方法、デバイス、およびモバイル端末 Active JP5945074B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201210252551.8 2012-07-20
CN201210252551.8A CN102855138B (zh) 2012-07-20 2012-07-20 一种api的拦截方法、装置及移动终端
PCT/CN2013/079600 WO2014012504A1 (en) 2012-07-20 2013-07-18 Method, device, and mobile terminal for api interception

Publications (2)

Publication Number Publication Date
JP2015525931A JP2015525931A (ja) 2015-09-07
JP5945074B2 true JP5945074B2 (ja) 2016-07-05

Family

ID=47401749

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015521964A Active JP5945074B2 (ja) 2012-07-20 2013-07-18 Apiインターセプト関連のアプリケーションのための方法、デバイス、およびモバイル端末

Country Status (5)

Country Link
US (1) US8863157B2 (ja)
JP (1) JP5945074B2 (ja)
CN (1) CN102855138B (ja)
SG (1) SG11201500252RA (ja)
WO (1) WO2014012504A1 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102855138B (zh) * 2012-07-20 2015-12-09 腾讯科技(深圳)有限公司 一种api的拦截方法、装置及移动终端
CN103914637B (zh) * 2013-01-07 2017-06-09 北京洋浦伟业科技发展有限公司 一种安卓平台的可执行程序加密方法
CN105893000A (zh) * 2014-10-28 2016-08-24 北京确安科技股份有限公司 防止测试机系统时间被非法修改的方法
CN104462879B (zh) * 2014-11-28 2018-04-17 北京奇虎科技有限公司 应用程序免Root运行控制方法与装置
CN104484176B (zh) * 2014-12-16 2018-01-19 北京奇虎科技有限公司 一种安卓系统窗口对象获取方法和装置
US9582298B2 (en) * 2015-03-20 2017-02-28 Amazon Technologies, Inc. Executing commands within virtual machine instances
EP3332321B1 (en) 2015-09-24 2023-06-07 Hewlett Packard Enterprise Development LP Process and thread launch features
US10387209B2 (en) * 2015-09-28 2019-08-20 International Business Machines Corporation Dynamic transparent provisioning of resources for application specific resources
CN105653980B (zh) * 2015-12-30 2019-06-11 福建联迪商用设备有限公司 一种虚拟内存数据的保护方法及其系统
CN105786524B (zh) * 2016-03-23 2019-03-12 福建正孚软件有限公司 软件钩子设置方法及装置
CN106055385B (zh) * 2016-06-06 2019-04-16 四川大学 监控虚拟机进程的系统和方法、过滤page fault异常的方法
US11916994B1 (en) * 2016-12-15 2024-02-27 Blue Yonder Group, Inc. Extending RESTful web service resources in a JAVA-component-driven-architecture application
CN106844148B (zh) * 2016-12-30 2020-01-14 清华大学 一种虚拟机启动进度监控方法及装置
CN108959061B (zh) * 2017-05-19 2023-04-25 腾讯科技(深圳)有限公司 应用功能管理方法、终端以及装置
CN109992328B (zh) * 2019-03-14 2023-05-12 北京椒图科技有限公司 一种函数重定向方法及装置
CN112416470B (zh) * 2019-08-22 2023-08-25 腾讯科技(深圳)有限公司 命令的执行方法和装置、存储介质及电子装置
CN113391874A (zh) * 2020-03-12 2021-09-14 腾讯科技(深圳)有限公司 一种虚拟机检测对抗方法、装置、电子设备及存储介质
JP7428973B2 (ja) * 2020-09-28 2024-02-07 住友電装株式会社 コネクタ
CN114625434B (zh) * 2020-12-10 2024-04-23 华为技术有限公司 地址获取方法和设备
CN113176926B (zh) * 2021-04-06 2023-09-05 中国科学院信息工程研究所 一种基于虚拟机自省技术的api动态监控方法及系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974549A (en) * 1997-03-27 1999-10-26 Soliton Ltd. Security monitor
GB0017201D0 (en) * 2000-07-14 2000-08-30 Ibm Generalised program hooks
US7865528B2 (en) * 2001-01-09 2011-01-04 Nextair Corporation Software, devices and methods facilitating execution of server-side applications at mobile devices
CN100349126C (zh) * 2003-11-13 2007-11-14 华为技术有限公司 一种在Python中实现API钩子测试的方法
US8490070B2 (en) * 2005-11-16 2013-07-16 Myriad Group Ag Unified mobile platform
CN102147845A (zh) * 2011-04-18 2011-08-10 北京思创银联科技股份有限公司 进程监控方法
CN102855138B (zh) * 2012-07-20 2015-12-09 腾讯科技(深圳)有限公司 一种api的拦截方法、装置及移动终端

Also Published As

Publication number Publication date
CN102855138B (zh) 2015-12-09
US20140053167A1 (en) 2014-02-20
CN102855138A (zh) 2013-01-02
WO2014012504A1 (en) 2014-01-23
US8863157B2 (en) 2014-10-14
JP2015525931A (ja) 2015-09-07
SG11201500252RA (en) 2015-02-27

Similar Documents

Publication Publication Date Title
JP5945074B2 (ja) Apiインターセプト関連のアプリケーションのための方法、デバイス、およびモバイル端末
CA2942619C (en) Host device coupled to a mobile phone and method of operating the same
US20160232374A1 (en) Permission control method and apparatus
TW201640342A (zh) 應用程式頁面快速存取方法及應用其的行動終端
CN110780930B (zh) 启动Android系统的方法、装置、电子设备及存储介质
WO2016033966A1 (zh) 应用数据的保护方法及装置
JP2014523022A5 (ja)
JP5832954B2 (ja) タグ付与装置及びタグ付与方法
KR102586628B1 (ko) 전자 장치 및 전자 장치의 메모리 관리 방법
US20120185879A1 (en) Dynamic service discovery
US11392694B2 (en) Electronic apparatus and controlling method thereof
CN106681813B (zh) 一种系统管理方法及装置
US10628188B2 (en) Disabling just-in-time translation for application functions
JP5410471B2 (ja) 複数のアプリケーションを連携起動する通信端末、連携起動方法及びコンピュータプログラム
US10063558B2 (en) Method for blocking unauthorized data access and computing device with feature of blocking unauthorized data access
CN105653948B (zh) 一种阻止恶意操作的方法及装置
JP2013182500A (ja) Api実行制御装置およびプログラム
US10452838B2 (en) Providing joint access to an isolated computer object by both an isolated computer application and a non-isolated computer application
CN105787359A (zh) 进程守护方法和装置
US9819725B1 (en) System, method, and computer program for remotely controlling mobile web applications installed on a mobile device
JP5828457B2 (ja) Api実行制御装置およびプログラム
WO2018049941A1 (zh) 数据迁移方法及相关产品
CN104572199B (zh) 一种禁止启动项启动的方法和装置
US20140283132A1 (en) Computing application security and data settings overrides
US20170230328A1 (en) Communication apparatus, dns processing method, and non-transitory computer-readable recording medium

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160330

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160426

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160526

R150 Certificate of patent or registration of utility model

Ref document number: 5945074

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250