JP2018523218A - コンパイルされたソフトウェア内の機械命令を修正する方法およびシステム - Google Patents

コンパイルされたソフトウェア内の機械命令を修正する方法およびシステム Download PDF

Info

Publication number
JP2018523218A
JP2018523218A JP2017566147A JP2017566147A JP2018523218A JP 2018523218 A JP2018523218 A JP 2018523218A JP 2017566147 A JP2017566147 A JP 2017566147A JP 2017566147 A JP2017566147 A JP 2017566147A JP 2018523218 A JP2018523218 A JP 2018523218A
Authority
JP
Japan
Prior art keywords
binary
software application
modification
software
modifying
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
Application number
JP2017566147A
Other languages
English (en)
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 JP2018523218A publication Critical patent/JP2018523218A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

ソフトウェアアプリケーションの機能性を高めるために、付加的なソフトウェアコードを実行するため、コンパイルされたソフトウェアアプリケーションを修正するためのシステムおよび方法。システムおよび方法は、ソフトウェアアプリケーションバイナリ(601)、メタデータ(602)、および、修正オプション(603)を受信する工程、受信した構成要素を分析する工程、ソフトウェアアプリケーションバイナリを修正に基づいて分析する工程、および、修正されたソフトウェアアプリケーションバイナリ(610)を返す工程、を含む。
【選択図】 図6

Description

本発明は、コンパイルされたソフトウェア内の機械命令を修正するためのシステムおよび方法に関する。
ウェブおよびモバイルのアプリケーション会社は、しばしばそれらの製品に機能性を追加するサードパーティサービスに依存する。これらのサードパーティサービスは、一般に、実行がソフトウェア開発者キット(SDK)、アプリケーションプログラムインターフェイス(API)、ソフトウェアライブラリまたは他のソフトウェアコードの形式で、ソフトウェアのコードの実行を必要とする。これらのサードパーティサービスがユーザのウェブまたはモバイルのアプリケーションの楽しみを劇的に増すことができ、かつ、それら(すなわち、広告収入、改善したユーザ機能性、増強されたカスタマーサポート)を実行する会社に対する重要な価値を生成することができる一方、サードパーティコードをインストールする負担はウェブおよびモバイルのアプリケーション会社自体に降りかかる。会社の社員(典型的には、会社内の開発者)が単一のサードパーティSDKの手動の実装を正確に行うために、多数の時間または日数さえもかかる場合がある。会社内の開発者は、まず、無数の選択肢から(例えば多数の競合するモバイルの広告ネットワークから)自分が利用したい適切なサードパーティサービスを識別し、未知のサードパーティSDKを使用するためのインストールガイドを提供する関連するサポートマニュアルを読み、次に、ウェブまたはモバイルのアプリケーションソースコードにSDKを直接インストールしなければならない。このプロセスは管理上厄介で、インストールプロセスが正確に行われ、意図せずにウェブまたはモバイルのアプリケーションを害していないことを保証するために退屈な品質保証および試験の手順を必要とする。例えば、オンライン広告によって収入を生み出したいが、自分自身の広告ネットワークシステムを構築する資源または時間がないウェブまたはモバイルの会社が、そのウェブまたはモバイルのアプリにサードパーティ広告ネットワークSDKをインストールしなければならないだろう。そのSDKは、ウェブまたはモバイルのアプリケーション中に広告を出し、会社に広告収入を供給するだろう。
サードパーティサービスプロバイダは規則的にそれらのSDKを更新する。会社がサードパーティサービスの最新の特徴および機能性を利用したければ、会社はそのウェブまたはモバイルのアプリケーションへとアップグレードされたSDKを実行しなければならない。これは単純かつ迅速なプロセスではない。ウェブまたはモバイルのアプリケーションは、熟練した開発者によって作業されなければならず、潜在的にビジネスオペレーションを混乱させる。古いSDKは取り除かれなければならず、かつ、アップグレードされたSDKは、要求されたスキルおよび経験を持った誰かによってインストールされ、テストされねばならない。多数のサードパーティSDKを有する成功した会社は、このプロセスを管理するのに、社内の開発者のチームをフルタイムで雇用しなければならないことがある。この理由から、多くのウェブおよびモバイルのアプリケーション開発者が、そうでなければ望ましいサードパーティのサービスを使用することをただ避ける。最良のサードパーティサービスを識別し、様々な初めてのSDKインストールを管理し、SDKアップデートが利用可能な時に追跡し、かつ、次に、困難なインストールおよびテストのプロセスを再度行うことの負担は、小企業にとっては圧倒的なものになる可能性がある。実際、新規SDKおよびアップデートされたSDKの氾濫を管理するために新しい言葉が作られた。すなわち、「SDK疲労」。
特に開発者のニーズに適するものを選ぶ前に、開発者が評価しなければならないであろう多くのサードパーティサービスを考慮する場合、サードパーティシステムの実行に関連したコストは開発者にとって極端に高くなる可能性がある。例えば、開発者は、カジュアルゲームまたはソーシャルネットワーキングアプリケーションなどの開発者の特定のアプリケーションのために最も良く機能するものを見つける前に、1ダースのサードパーティ広告ネットワークをテストする必要とすることがある。SDK実行および進行中の管理プロセスは、非常に時間がかかり、かつ、多くのウェブおよびモバイルのアプリケーション会社にとって非常に難しいため、これらの価値のあるサードパーティサービスの使用がただ制限されてしまうだけとなる。この結果は、これらの会社が、顧客に提示しえたであろう貴重な増分収益機会、および、革新的な新しいサービスを失うということである。
したがって、コンパイルされたソフトウェアアプリケーションを採用し、開発者が自分のWebまたはモバイルのアプリケーションに最も適した最良のサードパーティサービスを評価する必要なく修正し、かつ、自分のウェブまたはモバイルのアプリケーションのソースコードへとサードパーティソフトウェアコード(SDK、API)を手動で挿入する負担なく上記を行う方法の必要性がある。同様に、開発者が、各サービスのSDKを手動で実装することに通常伴う課題および業務の中断なしに、労せずして、潜在的に価値のある多数のサードパーティサービスをテストすることができ、公告、分析、ユーザ調査、クラッシュ報告、開発者ツール、ライブラリ、アプリレーティングプロンプト、革新的販促オファー、アプリ内購入、などの領域における自社の製品およびサービスの機能性を高めるために、無数のサードパーティサービスを迅速に評価し実装でき、かつ、顧客のデバイス上でハードウェアが適切に使用できるようにアプリケーションを修正する方法の必要性がある。さらに、ウェブまたはモバイルのアプリケーションに以前インストールされたSDKによって行なわれた既存の機能が、新しい目的またはより適した目的へ再び向けられるようにできる方法の必要性がある。さらに、iOS、アンドロイド、HTML5、CおよびC+およびフラッシュなどの様々なフォーマット、オペレーティングシステム、プログラミング言語でのこれらの修正を行なうことができる方法の必要性がある。
本発明は、ソフトウェアアプリケーションの機能性を高める追加のソフトウェアコードを実行するためにコンパイルされたソフトウェアアプリケーションを修正するためのシステムおよび方法に関する。このシステムと方法は、ソフトウェアアプリケーションバイナリおよび修正オプションを受信する工程、ソフトウェアアプリケーションバイナリを修正オプションに基づいて修正する工程、ソフトウェアアプリケーションバイナリをコンパイルする工程、および、使用可能なフォーマットにおいて修正したソフトウェアアプリケーションバイナリを返す工程、を含む。
本発明の目的は、機械命令の修正がバイナリレベル、アセンブリレベルおよび/またはソースコードレベルで必要かを判断するために、かつ、修正プロセスを効率化するために必要なレベルで修正を自動的に行なうために、ソフトウェアアプリケーションバイナリ、修正オプション、およびメタデータを分析することである。
図1は、本開示の実施形態に係るウェブサービスおよび修正サービスを含むソフトウェア修正システムのコールフロー図(call diagram)である。 図2は、ソフトウェア修正システムの実施形態によって修正される前にコンピューティングデバイス上で作動するソフトウェアアプリケーションを示す。 図3は、ソフトウェア修正システムの実施形態によって修正された後にコンピューティングデバイス上で作動するソフトウェアアプリケーションを示す。 図4は、本開示の実施形態に係るウェブサービスのコンピュータ実行例を示す。 図5は、本開示の実施形態に係るウェブサービス上で提供される修正オプションのコンピュータ実行例を示す。 図6は、本開示の実施形態に係るソフトウェア修正サービスプロセスの典型的なフローチャートを示す。 図7は、本開示の実施形態に係るソフトウェア修正システムプロセスの典型的なフローチャートを示す。 図8は、本開示の実施形態に係るソフトウェア修正システムプロセスの典型的なフローチャートを示す。 図9は、本開示の実施形態に係るソフトウェア修正システムプロセスの典型的なフローチャートを示す。 図10は、特定の実施形態における本開示の様々な態様を実行するために使用されてもよいコンピュータのハイレベルダイアグラムを示す。
添付された図面と合わせて下に開示される詳細な説明は、本発明の現在の好ましい実施形態の説明として意図されるものであり、本発明を構成または利用してもよいただ一つの形式を表わすことは意図されていない。この説明は、例証される実施形態と合わせて発明の構築および操作のための機能および工程の順序を開示する。しかし、本発明の精神および範囲内に包含されることを意図した異なる実施形態によって、同じまたは同等の機能および順序が達成され得ることが理解されるべきである。
第1、第2などの用語は、様々な要素を記載するために本明細書で使用されてもよいが、これらの要素はこれらの用語によって制限されるべきでない、ということが理解されるだろう。これらの用語は、1つの要素と別の要素を区別するために使用されるにすぎない。例えば、本発明の範囲から逸脱せずに、第1のジェスチャーを第2のジェスチャーと名付けてもよく、同様に、第2のジェスチャーを第1のジェスチャーと名付けてもよい。
本明細書で本発明の説明において使用される用語は、特別の実施形態だけを記載することを目的としており、本発明を制限することを意図していない。本発明の明細書および付属の請求項において使用されるように、単数形「1つ(a)」、「1つ(an)」、および「その(the)」は、文脈上明らかに他の意味を示すものでない限り、同様に複数形を含むことを意図している。本明細書で使用される用語「および/または」は、関連する列挙された項目の1つ以上の任意かつ全ての可能な組み合わせを参照し、包含することも理解されるだろう。用語「含む(comprises)」および/または「含むこと(comprising)」は、本明細書中で使用される時、述べられている特徴、整数、工程、動作、要素、および/または、構成要素、の存在を明記するが、しかし1つまたは複数の他の特徴、整数、工程、動作、要素、構成要素、および/またはそれらの群の存在または追加を排除するものではないことが、さらに理解されるだろう。
用語「ソフトウェアアプリケーションバイナリ」は、バイナリフォーマット中のコンピュータアプリケーションを意味する。ソフトウェアアプリケーションバイナリは適切なプログラムを使用して、読まれてもよく、または、アセットを明らかにするために抽出されてもよい。ソフトウェアアプリケーションバイナリ、ソフトウェアアプリケーション、コンパイルされたソフトウェアアプリケーションおよびコンピュータアプリケーションはほとんど同じ意味で使用されてもよいことを理解されたい。
コンパイルされたソフトウェア内の機械命令を修正するための方法およびシステムは、所望の修正オプションを備えたコンピュータアプリケーションを受信し、コンピュータアプリケーションを修正するレベルを決定するためにコンピュータアプリケーションを分析し、決定されたレベルでコンピュータアプリケーションを修正し、かつ、修正されたコンピュータアプリケーションを返すためのソフトウェアモジュールを含む。この方法は、直接ソースコード内に修正を埋め込むプログラマに対立するものとして、必要に応じてアセンブリコードやソースコード中で修正を、バイナリレベルで開始し、修正を行うだけで、修正プロセスを効率化する。
図は、コンパイルされたソフトウェア内の機械命令を修正するための方法およびシステムの実施形態を描写する。描写された実施形態が、本発明の様々な機能について説明するために、ウェブサービス(100)および修正サービス(101)を含んでいる一方、単一のコンピューティングデバイス、または、公衆および/または私設ネットワーク上の複数のコンピューティングデバイスなどの、任意の数の構成において、本発明が実行されてもよいことを理解されたい。例示的な実施形態では、ウェブサービス(100)などのユーザインターフェースは、ソフトウェアアプリケーションバイナリ(102)を収集し格納すること、修正およびメタデータに関係する情報などのリクエスト情報(103)を収集し格納すること、修正されたアプリケーションおよびメタデータ(107)を格納すること、および、ユーザ(108)へ修正されたアプリケーションを返すことに使用される。修正サービス(101)はアプリケーションを修正し、これは、ソフトウェアアプリケーション(104)を分析し、ソフトウェアアプリケーション(105)上で修正を行い、アプリケーション(106)にサインし/終了させることを含む。
いくつかの実施形態では、ウェブサービス(100)などのユーザインターフェースは、クライアントのシステムとの相互作用のためのゲートウェイとして機能する公的にアクセス可能な1つ以上のウェブサーバ上に格納されてもよい。公的にアクセス可能な1つ以上のウェブサーバは、仮想コンピューティングおよび/またはストレージリソースを含んでもよく、かつ、多数のサービスを提供することができる。例えば、1つ以上のサーバーは、ユーザがコンピュータアプリケーションを修正するシステムを登録する/アクセスするためのセキュリティ機能性を提供することができる。いくつかの実施形態では、ユーザはまた、システムにコンピュータアプリケーションを提出するため、または、システムがコンピュータアプリケーションにアクセスし、および/またはコンピュータアプリケーションを置き換えるためにGoogle(登録商標)StoreまたはApple(登録商標)AppStoreなどのマーケットプレイスへアクセスするため、追加のセキュリティ証明書を提出することを要求される場合がある。1つ以上のサーバーはまた、ネットワーク接続を介したスマートフォン、タブレット、ラップトップまたはデスクトップなどの、クライアントコンピュータ上のウェブブラウザおよび/またはアプリケーションへ、ユーザインターフェースおよび/または拡張子を供給することができる。
工程(102)に示されるように、ウェブサービスは、ソフトウェアアプリケーションをシステムに提出するようユーザに促してもよい。ウェブサービス(100)を使用するユーザは、1つ以上の方法でコンピュータアプリケーションを収集し格納するよう、ウェブサービスに指示することができる。いくつかの実施形態では、ウェブサービス(100)は、ユーザがウェブサービス(100)にソフトウェアアプリケーションバイナリをアップロードしてもよい、ユーザインターフェースを提供する。ソフトウェアアプリケーションバイナリは既にアプリストア、マーケットプレイスまたは他の場所へアップロードされるいくつかの実施形態では、ユーザは、ウェブサービスがソフトウェアアプリケーションにアクセスしダウンロードしてもよい場所に、ウェブサービス(100)を供給してもよい。いくつかの実施形態では、ウェブサービスは、ウェブサービスがソフトウェアアプリケーションマーケットプレイスにアクセスできるようにするセキュリティ証明書を提供することをユーザに要求する。
工程(103)では、ウェブサービス(100)はまた、ユーザからリクエスト情報を収集し格納する。いくつかの実施形態では、ウェブサービス(100)は、どのタイプの修正およびどのタイプの情報を、ユーザがウェブサービス(100)に供給するかを決定するためにユーザが選ぶオプションを提供する。例えば、リクエスト情報は、ユーザがサービスに要求している修正、アプリケーションについて記載するメタデータ、および、アプリケーションサイン情報、の詳細を含んでもよい。
メタデータは、アプリケーションの操作プラットフォームおよびコード構造を供給することなどにより、修正サービス(101)がどの修正をするかを決定するのを支援するのに役に立つことができる。また、メタデータは、アプリケーションのバージョン番号またはカテゴリーを供給することなどにより、構成または他の使用のためのコンパイルされたアプリケーションへと含められるように使用されてもよい。いくつかの実施形態では、メタデータは必要ではなく、収集されない。例えば、いくつかの実施形態では、システムはユーザのかわりに修正を自動的に選択し、したがって、メタデータは関連していないかまたは必要ではなく、収集されない。いくつかの実施形態では、メタデータはユーザによって提供されてもよく、または自動的にソフトウェアアプリケーションから抽出されてもよい。メタデータには、限定されないが、バイナリのターゲットオペレーティングプラットフォーム、アプリケーションのタイトル、バージョン番号、バージョンコード、視覚的なアイコン、識別文字列(例えばパッケージ名、バンドルIDなど)、オリエンテーション設定、コンピュータデバイス互換性、電流コード構造、既存のコードクラスのリスト、コード構造、方法、文字列、定数、インポートまたはアプリケーション内で使用される他の構築物、アプリケーションのカテゴリー、アプリケーションのサブカテゴリー、ジャンル、コンテンツ(成熟度)レーティング、アプリケーションの説明、アプリケーションに関連した説明タグ、アプリケーション識別子、SDK、APIまたはライブラリーメタデータセッティング、アイコン、バイナリアセット、画像、テキストのアセット、XML、および他のそのような情報が含まれている可能性がある。さらに、アプリケーション内の機械命令を修正する方法を規定する情報は、限定されないが、特定のSDK、ライブラリ、コード断片、テキストまたはAPIを、包含し、相互作用し、除去し、無効化し、または、修正するかどうかに関わりなく、含んでいてもよい。
いくつかの実施形態では、ウェブサービス(100)はさらに、アプリケーションがどのようにデジタル署名されるべきかを規定する情報を受け入れる。ソフトウェアアプリケーションにデジタル署名を追加する機能は、ユーザが他のサービスやシステムが機能するために必要となる場合があるアプリケーションの所有権を証明するのに役立つ。デジタル署名を可能にする実施形態では、ユーザは、その後、一旦修正がなされたらアプリケーションに署名するために使用することができる、署名する「キー」または「証明書」をアップロードしてもよい。いくつかの実施形態では、ウェブサービス(100)は、署名のためにユーザが以前に用いたキーまたは証明書を選択できるようにする。いくつかの実施形態では、ウェブサービス(100)は、ユーザが、特にデバッグのために予め生成された証明書の使用を選択できるようにする。いくつかの実施形態では、ウェブサービス(100)は署名されないアプリケーションを提供する。いくつかの実施形態では、ウェブサービス(100)は、ユーザがそれらのアプリケーションに署名するための新しい証明書またはキーを生成できるようにすることができる。その後、新しいキーはユーザに関連し、後で使用するために安全なストレージメカニズム内に置かれる。
一旦ウェブサービス(100)がソフトウェアアプリケーションバイナリおよび任意の関連情報を収集すれば、ウェブサービス(100)は、ソフトウェアアプリケーションバイナリを修正するために、ソフトウェアアプリケーションバイナリおよび任意の関連情報を修正サービス(101)に転送してもよい。いくつかの実施形態では、修正サービス(101)は、ウェブサービス(100)と通信する、1つ以上の個人のコンピューティングシステム上に格納される。多くの個人のコンピュータシステムの配列(array)上に修正サービス(101)を格納させることで、パブリックシステムに内在するセキュリティリスクにさらされることから、ソフトウェアアプリケーションと修正ツールを保護する追加のセキュリティレイヤを提供することができる。いくつかの実施形態では、ウェブサービス(100)および修正サービス(101)が単一のサーバー上にあってもよい。
工程(104)では、修正サービス(101)は、要求された修正をする方法を決定するためにアプリケーションを分析する。広告サービス、レーティングサービスおよび分析サービスなどの様々なタイプの修正は、バイナリレベル、アセンブリレベルまたはソースコードレベルなどの様々なコーディングレベルでソフトウェアアプリケーションバイナリの修正を必要とすることがある。例えば、ユーザが、ソフトウェアアプリケーションが最初にオンになるたびにポップアップとして広告サービスの追加を要求すると、広告サービスは、バイナリコードをアセンブリコードへと逆アセンブルすること、またはアセンブリコードをソースコードへと逆コンパイルすることを必要とすることなく、バイナリレベルで実行されてもよい。しかしながら、ユーザが広告サービスおよび分析サービスの両方を要求する場合、修正サービス(101)がバイナリレベル、アセンブリレベルおよびソースコードレベルなどの多数のレベルでソースコードを修正するように要求されてもよい。修正サービス(101)は、修正がソフトウェアアプリケーションバイナリの各レベルのそれぞれをどのように修正するかを決定する。
次に、工程(105)では、修正サービス(101)は修正をソフトウェアアプリケーション上で行う。この工程の間、修正プロセスに関連する情報はソフトウェアアプリケーションから抽出される。この抽出過程は、限定されないが、圧縮バイナリーファイルの抽出、コンパイルされたバイナリーコード(バイトコード、機械語)の他のフォーマットへの逆アセンブル、アセンブリコードのソースコードへの逆コンパイル、および、バイナリアセットの他のフォーマットへのデコードまたは変換を含んでもよい。コードがその様々なフォーマットである間、修正が機械命令のためになされる。ここで、命令は、バイナリコード、バイトコード、または逆アセンブルされたコード、またはアセンブリコード、および未コンパイル/逆コンパイルされたコードまたはソースコードを指す場合がある。命令の修正は様々な方法で達成されうるが、これには、命令の修正、補足の命令の追加、既存の命令の削除、および、メタデータ、アセット(画像を含む)およびバイナリーファイルの修正、包含、または削除、が含まれる。
工程(106)で、修正されたアプリケーションは完成され、例えば、ビルドされ、コンパイルされ、圧縮され、整列され、アセンブルされ、または使用可能なアプリケーションが作成されるその他の方法などが行われる。適用可能な場合、修正されるアプリケーションはまた、ユーザによるアプリケーションの所有権を確認するために利用可能な信任状/証明書を使用して署名される。工程(107)では、その後、修正されたアプリケーションおよびメタデータが返され、ウェブサービス(100)で格納される。
工程(108)で、アプリケーションはユーザに返される。いくつかの実施形態では、修正されたアプリケーションはユーザがダウンロードするために利用可能になる。いくつかの実施形態では、修正されたアプリケーションを利用可能にする方法は、限定されないが、ダウンロードのためのソフトウェアの提示、ソフトウェアのサービス上への保存、デバッグやサービス改善のための内部アクセスの許可、または、ソフトウェアの第三者または内部公開サービスへの送信、が含まれうる。
図2は、修正がなされる前の例示的ソフトウェアアプリケーション(203)を示す。描写されるように、ソフトウェアアプリケーション(203)はコンピューティングデバイス(201)のディスプレイ(202)上に表示される。示されるように、ソフトウェアアプリケーション(203)には視覚的要素および非視覚的要素などのコンテンツ(204)がある。ほんの一例として、これらは画像、テキスト、マップ、ゲームコンテンツ、および他のマルチメディアまたはユーザインターフェース要素を含んでもよい。
図3は、修正がなされた後の修正された例示的ソフトウェアアプリケーション(301)を示す。示されるように、修正されるソフトウェアアプリケーション(301)には、依然として、そのオリジナルコンテンツ(204)があってもよい。それはまた、視覚的なコンテンツおよび非視覚的なコンテンツを含む可能性のある、修正されたコンテンツを有する。この例では、新しいサービス(303)および広告(304)は修正されるソフトウェアアプリケーション(301)に追加された。既存のアプリになされた修正は、これらの追加の特徴をサポートする。
図4は、コンピュータアプリケーションおよび他の関連データを収集し格納するためにユーザと接続するためのウェブブラウザ(400)から見ることができる例示的ウェブサイト(401)を提供する。この例示的ウェブサイト(401)は、ブラウザのユーザがソフトウェアアプリケーションをアップロードするために、アップロードモジュール(402)を提供する。ウェブサイト(401)は、プログレスバー(403)を使用して、アップロードの進行を示すことができる。ウェブサイトはさらに、ユーザが追加情報を提供することができる追加のフィールド(404)を提供することができる。例示的ウェブサイト(401)では、ユーザは、カテゴリー、ジャンル、および、アプリケーションのスクリーンオリエンテーションなどの他の情報に関係する情報を提供することができる。
図5は、ウェブブラウザ(500)からアクセス可能な修正オプションを選択するための例示的ウェブサイト(501)を提供する。修正オプションメニュー(502)は、修正されるソフトウェアアプリケーションにどのタイプのサービスを含めるかをユーザが選択することを可能にする。この例では、ユーザは、サービスをオンまたはオフにするためにトグルボックス(503)を選択してもよく、選択された修正に構成メタデータを供給するために入力ボックス(504)に追加情報を入力してもよい。
図6は、本開示の実施形態に係るソフトウェア修正フローチャートを描写する。示されるように、コンピューティングデバイス(600)上のユーザは、ソフトウェアアプリケーションバイナリ(601(a))を、ウェブサイト(605(a))などのソフトウェア修正サービスに供給する。ユーザはまた、メタデータ(602)および修正選択肢(603)をウェブサイトに提供してもよく、および/または、ソフトウェア修正サービスは、ソフトウェアアプリケーションバイナリ(601(a))上でさらなるメタデータ抽出(604)を行なってもよい。ソフトウェアアプリケーションバイナリ(601(b))および修正選択肢メタデータ(606)を含む、すべての関連データが収集されると、アプリケーションを修正するために必要な工程を決定するためにソフトウェアアナライザ(607)に提供される。その後、修正が工程(608)で行なわれ、次に、工程(609)で、修正されるアプリケーションバイナリ(610(a))として使用可能なフォーマットへとコンパイルされる。その後、ウェブサイトは、修正されるアプリケーションへのアクセスを可能にし、これは、工程(610(b))でユーザコンピューティングデバイスに提供されることができ、または、デバッグおよびサービス改善のための内部アクセスを可能にすること、またはサードパーティまたは内部公開サービスへソフトウェアを送信することなどの他の方法でユーザに提供することができる。
図7−9は、ソフトウェアアプリケーションを修正するために必要だとソフトウェアアナライザ(607)が判断したものに基づいて変化する修正システム(608)の様々なフローチャートを描写する。図7は、バイナリ命令への修正、アセンブリ命令への修正およびソースコードへの修正が必要であると判断したソフトウェア修正システム(700)を描写する。示されるように、ソフトウェアアプリケーションバイナリ(701)および任意の修正選択肢およびメタデータ(702)は、ソフトウェア修正システム(700)に供給される。適用可能な場合、エクストラクタ(extractor)(703)は、アセットを明らかにするためにアプリケーションバイナリを抽出し、次に、バイナリパッチャー(binary patcher)(704)は、修正選択肢およびメタデータ(702)に基づいてバイナリ命令を修正する。次に、逆アセンブラ(705)はアプリケーションバイナリファイルをアセンブリ命令へ逆アセンブルし、アセンブリインジェクタ(assembly injector)(706)は、修正選択肢およびメタデータ(702)に基づいてアセンブリ命令を修正する。次に、逆コンパイラ(707)はアセンブリ命令をソースコードへ逆コンパイルし、ソース修飾子(source modifier)(708)は、修正選択肢およびメタデータ(702)に基づいてソースコードを修正する。次に、ファイルインジェクタ(file injector)(709)は、ファイルまたはメタデータを分解されたアプリケーションにインジェクトするかまたはパッチを適用する。コンパイラ(710)は、様々なラウンドのアプリケーションを使用可能なフォーマットへコンパイルする。次に、適用可能な場合、サイナー(711)は、ユーザへのアプリケーションの所有権を確認するために修正されたアプリケーションに署名する。そして、修正されたアプリケーションバイナリ(712)はユーザが利用できるようになる。
いくつかの実施形態では、特定のタイプの修正が必要でない場合、それらは飛ばされる。図8は、ソースコードへの修正が必要でないソフトウェア修正システムを描写する。代わりに、その修正はバイナリレベル(エクストラクタ(703)およびバイナリパッチャー(704))およびアセンブリレベル(逆アセンブラ(705)およびアセンブリインジェクタ(706))で行なわれる。図9は、ソースコードまたはアセンブリコードの修正が必要でないソフトウェア修正システムの実施形態を描写する。代わりに、修正はすべてバイナリレベル(エクストラクタ(703)およびバイナリパッチャー(704))でなされる。
様々な実施形態では、本明細書に記載された方法の工程は、図1および図6−9に記載される方法の工程を含め、記載された、または図示された特定の順序と異なる順序で行なわれてもよい。他の実施形態では、他の工程が、記載された方法から提供されてもよく、または、そこから取り除かれてもよい。
本明細書に記載されたシステム、装置、および方法は、デジタル回路を用いて、または、公知のコンピュータプロセッサと、メモリユニットと、ストレージデバイスと、コンピュータソフトウェアとおよび他の構成要素とを使用する1つ以上のコンピュータを用いて、実施されてもよい。典型的には、コンピュータは、命令を実行するためのプロセッサと、および、命令とデータとを格納するための1つ以上のメモリと、を含む。コンピュータはさらに、1枚以上の磁気ディスク、内部ハードディスクおよびリムーバブルディスク、光ディスクなどの1つ以上のストレージデバイスを含んでもよく、または、それに連結していてもよい。
本明細書に記載されたシステム、装置、および方法は、ネットワークベースのクラウドコンピューティングシステム内で使用されてもよい。そのようなネットワークベースのクラウドコンピューティングシステムでは、ネットワークに接続されるサーバーまたは別のプロセッサは、ネットワークを経由して1台以上のクライアントコンピュータと通信する。例えば、クライアントコンピュータは、クライアントコンピュータ上に存在し作動するネットワークブラウザアプリケーションを介してサーバーと通信してもよい。クライアントコンピュータはサーバー上にデータを格納し、ネットワークを介してデータにアクセスしてもよい。クライアントコンピュータは、ネットワークを介してサーバーに、データのリクエスト、またはオンラインサービスのリクエストを送信してもよい。図1および図6−9の工程の1つ以上を含む、本明細書中に記載される方法のある特定の工程は、ネットワークベースのクラウドコンピューティングシステム中のサーバー、または別のプロセッサによって実行されてもよい。図1および図6−9の工程の1つ以上を含む、本明細書中に記載される方法のある特定の工程は、ネットワークベースのクラウドコンピューティングシステム中のクライアントコンピュータによって実行されてもよい。図1および図6−9の工程の1つ以上を含む、本明細書中に記載される方法の特定の工程は、任意の組み合わせで、ネットワークベースのクラウドコンピューティングシステム中のサーバーおよび/またはクライアントコンピュータによって、実行されてもよい。
本明細書に記載される、システム、装置、および方法を実施するために使用されてもよい、典型的なコンピュータ(1000)のハイレベルブロック図は、図10に例証される。コンピュータ(1000)は、データストレージデバイスとメモリに動作可能につながれたプロセッサ(1010)を含む。プロセッサ(1010)は、コンピュータ(1000)の全体的な動作を定義するコンピュータプログラム命令を実行することよりそのような動作を制御する。コンピュータプログラム命令は、データストレージデバイス(1020)、または他の非一時的なコンピュータ可読媒体に格納されてもよく、かつ、コンピュータプログラム命令の実行が望まれる時、メモリ(1030)へとロードされてもよい。したがって、図1および図6−9の方法の工程は、メモリ(1030)および/またはデータストレージデバイス(1020)に格納され、かつ、コンピュータプログラム命令を実行するプロセッサ(1010)によって制御される、コンピュータプログラム命令によって定義することができる。
例えば、コンピュータプログラム命令は、図1および図6−9の方法の工程によって定義されるアルゴリズムを行うように当業者によりプログラムされたコンピュータ実行可能なコードとして、実施することができる。コンピュータ(1000)はさらに、ネットワークを介して他のデバイスと通信するための1つ以上のネットワークインターフェイス(1040)を含む。コンピュータ(1000)はさらに、コンピュータ(1000)とユーザの相互作用を可能にする1つ以上の入出力デバイス(1050)(例えばディスプレイ、キーボード、タッチパッド、マウス、スピーカー、ボタンなど)を含んでもよい。
プロセッサ(1010)は、とりわけ、プロセッサ設計に組み込まれたソフトウェア命令を有する専用プロセッサと、ストレージデバイス(1020)またはメモリ(1030)内の命令を有する汎用プロセッサとを、プロセッサ(1010)を制御するために含むことができ、かつ、コンピュータ(1000)の単一プロセッサまたは複数プロセッサのうちの1つであってもよい。プロセッサ(1010)は、複数のコアまたはプロセッサ、バス、メモリコントローラ、キャッシュなどを含む自己完結型のコンピューティングシステムであってもよい。マルチコアプロセッサは対称であってもよく、または非対称であってもよい。プロセッサ(1010)、データストレージデバイス(1020)、および/またはメモリ(1030)は、1つ以上の特定用途向け集積回路(ASIC)および/または1つ以上のフィールドプログラマブルゲートアレイ(FPGA)を含み、これらによって補完され、または、これらに組み込まれてもよい。本開示は、より大きい処理能力を提供するために、1つ以上のプロセッサ(1010)を備えるコンピュータ(1000)、または、一緒にネットワーク接続されたコンピュータの一群または集団で動作してもよいことが認識されうる。
データストレージデバイス(1020)およびメモリ(1030)はそれぞれ、明確な非一時的なコンピュータ可読ストレージ媒体を含む。一例として、限定しないが、そのような非一時的なコンピュータ可読ストレージ媒体には、ランダムアクセスメモリ(RAM)、高速ランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、ダブルデータレートシンクロナスダイナミックランダムアクセスメモリ(DDRRAM)、リードオンリーメモリ(ROM)、消去可能プログラマブルリードオンリーメモリ(EPROM)、電気的消去可能プログラマブルリードオンリーメモリ(EEPROM)、フラッシュメモリ、コンパクトディスクリードオンリーメモリ(CD−ROM)、デジタル多用途ディスクリードオンリーメモリ(DVD−ROM)ディスク、または他の光学ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、または、コンピュータ実行可能命令、データ構造あるいはプロセッサチップ設計の形式で所望のプログラムコード手段を実行または格納するために使用することができる他の任意の媒体、が含まれる。情報が、ネットワークまたは他の通信接続(有線、無線、またはそれらの組み合わせのいずれか)上でコンピュータに転送または提供されるとき、コンピュータは、適切に、その接続をコンピュータ可読媒体とみなす。したがって、そのような任意の接続は、コンピュータ可読媒体と適切に名付けられる。上記の組み合わせも、コンピュータ可読媒体の範囲内に含まれるべきである。
ネットワーク/通信インターフェース(1040)により、コンピュータ(1000)は、インターネットなどのネットワークと通信することができ、このインターネットはまた、ワールドワイドウェブ(WWW)、携帯電話ネットワークなどのイントラネットおよび/または無線ネットワーク、無線ローカルエリアネットワーク(LAN)および/またはメトロポリタンエリアネットワーク(MAN)、および任意の適切な通信規格、プロトコル、および技術を使用する他のデバイスと称される。一例として、限定されないが、そのような適切な通信規格、プロトコルおよび技術には、イーサネット(登録商標)、Wi−Fi(例えばIEEE 802.11)、Wi−MAX(登録商標)(例えば802.16)、Bluetooth(登録商標)、近距離無線通信(NFC)、無線周波数システム、赤外線、GSM、EDGE、HS−DPA、CDMA、TDMA、クワッドバンド、VoIP、IMAP、POP、XMPP、SIMPLE、IMPS、SMSまたは他の任意の適切な通信プロトコルが含まれうる。一例として、限定されないが、ネットワークインタフェース(1040)により、コンピュータ(1000)は、データを転送し、情報を同期させ、ソフトウェアを更新し、または他の適切な操作をすることが可能になる。
入出力デバイス(1050)は周辺機器を含んでもよい。入出力デバイス(1050)はまた、タッチスクリーン、スピーカーおよびボタンを有するスマートフォンなどのコンピューティングデバイスの一部を含んでもよい。例えば、入出力デバイス(1050)には、ユーザへ情報を表示するための液晶ディスプレイ(LCD)モニター、ユーザがコンピュータ(1000)に入力することができるキーボードおよびマウス、または、入出力両用のタッチスクリーンなどのディスプレイデバイスが含まれてもよい。
本明細書中で議論されたシステムおよび装置のうちのいずれかまたはその全てには、パーソナルコンピュータ、タブレットコンピュータ、携帯端末、携帯電話、サーバー、データベース、クラウドコンピューティング環境およびその構成要素が含まれるが、これはコンピュータ(1000)などのコンピュータを使用して実行されてもよい。
実際のコンピュータまたはコンピュータシステムの実施が、他の構造を有することがあり、同様に他の構成要素を含んでもよく、そして図10が、そのようなコンピュータのいくつかの構成要素の、例証を目的とするハイレベルな表現であることを、当業者は認識するだろう。
本発明の好ましい実施形態の前述の説明は、例示および説明のために提示されたものである。包括的であること、または、開示された正確な形態に本発明を限定することを意図するものではない。上記教示に照らして、多くの修正および変形が可能である。本発明の範囲は、この詳細な説明に限定されるものではなく、添付の特許請求の範囲および添付の特許請求の範囲の均等物によって限定されることが意図される。

Claims (15)

  1. ソフトウェアを修正する方法であって、該方法は:
    コンピューティングデバイスにおいて、
    a.ソフトウェアアプリケーションバイナリを受信する工程と;
    b.バイナリ命令への修正が必要かどうか判断するために、ソフトウェアアプリケーションバイナリを分析する工程と;
    c.バイナリ命令への修正が必要な場合に、バイナリ命令を修正する工程と;
    d.ソフトウェアに新しいメタデータをインジェクトする工程と;
    e.修正されたソフトウェアアプリケーションバイナリをコンパイルする工程と;および、
    f.修正されたソフトウェアアプリケーションバイナリを返す工程と、を含むことを特徴とする、ソフトウェアを修正する方法。
  2. 1つ以上の修正オプションを受信する工程をさらに含み、ソフトウェアアプリケーションバイナリを分析する工程は、1つ以上の修正オプションを分析する工程をさらに含み、バイナリ命令を修正する工程は、さらに1つ以上の修正オプションに基づく、ことを特徴とする、請求項1に記載のソフトウェアを修正する方法。
  3. アセンブリ命令への修正が必要かどうか判断するために、ソフトウェアアプリケーションバイナリおよび1つ以上の修正オプションを分析する工程をさらに含み、アセンブリ命令への修正が必要な場合、次に、バイナリ命令をアセンブリ命令へ逆アセンブルする工程、およびアセンブリ命令を修正する工程を含むことを特徴とする、請求項2に記載のソフトウェアを修正する方法。
  4. ソースコードへの修正が必要かどうか判断するために、ソフトウェアアプリケーションバイナリおよび1つ以上の修正オプションを分析する工程をさらに含み、ソースコードへの修正が必要な場合、次に、アセンブリ命令をソースコード命令へ逆コンパイルする工程、および、ソースコード命令を修正する工程を含むことを特徴とする、請求項3に記載のソフトウェアを修正する方法。
  5. ソフトウェアアプリケーションバイナリのメタデータを受信する工程をさらに含み、ソフトウェアアプリケーションバイナリを分析する工程は、メタデータを分析する工程をさらに含み、バイナリ命令を修正する工程はさらに、メタデータに基づく、ことを特徴とする、請求項4に記載のソフトウェアを修正する方法。
  6. ソフトウェアアプリケーションバイナリを返す前にデジタルキーを使用して、修正されるソフトウェアアプリケーションバイナリに署名する工程をさらに含む、ことを特徴とする、請求項5に記載のソフトウェアを修正する方法。
  7. ソフトウェアアプリケーションバイナリを受信する工程は、ユーザからアプリケーションバイナリを受信する工程、アプリケーションバイナリをアップロードする工程、またはアプリケーションバイナリをオンラインアプリケーションマーケットプレイスからダウンロードする工程、からなる群から選択されることを特徴とする、請求項6に記載のソフトウェアを修正する方法。
  8. ソフトウェアアプリケーションバイナリを返す工程は、ダウンロードのためにソフトウェアアプリケーションバイナリを提供する工程、デバッグおよびサービス改善のためにソフトウェアアプリケーションへのアクセスを提供する工程、および、アプリケーションバイナリをオンラインアプリケーションマーケットプレイスに公開する工程、からなる群から選択されることを特徴とする、請求項7に記載のソフトウェアを修正する方法。
  9. 非一時的なコンピューター可読ストレージ媒体であって、その中に命令を格納し、命令がコンピューティングデバイスによって実行された時、コンピューティングデバイスに:
    a.ソフトウェアアプリケーションバイナリを受信させ;
    b.バイナリ命令への修正が必要かどうか判断するために、ソフトウェアアプリケーションバイナリを分析させ;
    c.バイナリ命令への修正が必要な場合に、バイナリ命令を修正させ;
    d.ソフトウェアアプリケーションバイナリに新しいメタデータをインジェクトさせ;
    e.修正されたソフトウェアアプリケーションバイナリをコンパイルさせ;かつ、
    f.修正されたソフトウェアアプリケーションバイナリを返させる、ことを特徴とする、非一時的なコンピューター可読ストレージ媒体。
  10. 1つ以上の修正オプションを受信することをさらに含み、バイナリ命令への修正がさらに必要かどうか判断するためのソフトウェアアプリケーションバイナリの分析は、1つ以上の修正オプションの分析を含み、バイナリ命令の修正はさらに、1つ以上の修正に基づく、ことを特徴とする、請求項9に記載の非一時的なコンピューター可読ストレージ媒体。
  11. アセンブリ命令への修正が必要かどうか判断するために、ソフトウェアアプリケーションバイナリおよび1つ以上の修正オプションを分析する命令をさらに含み、アセンブリ命令への修正が必要な場合、次に、アプリケーションバイナリ命令をアセンブリ命令へ逆アセンブルし、およびアセンブリ命令を修正することを特徴とする、請求項10に記載の非一時的コンピューター可読ストレージ媒体。
  12. ソースコードへの修正が必要かどうか判断するために、ソフトウェアアプリケーションバイナリおよび1つ以上の修正を分析する命令をさらに含み、ソースコードへの修正が必要な場合、次に、アセンブリ命令をソースコード命令へ逆コンパイルし、および、ソースコード命令を修正することを特徴とする、請求項11に記載の非一時的コンピューター可読ストレージ媒体。
  13. ソフトウェアアプリケーションバイナリのメタデータを受信する命令をさらに含み、ソフトウェアアプリケーションバイナリの分析は、メタデータの分析をさらに含むことを特徴とする、請求項12に記載の非一時的コンピューター可読ストレージ媒体。
  14. デジタルキーを使用して、修正されるソフトウェアアプリケーションバイナリに署名する命令をさらに含むことを特徴とする、請求項13に記載の非一時的コンピューター可読ストレージ媒体。
  15. ユーザインターフェースをさらに含み、ユーザインターフェースは、ユーザが1つ以上の修正オプションを選択するために、複数の修正オプションを提供することを特徴とする、請求項14に記載の非一時的コンピューター可読ストレージ媒体。
JP2017566147A 2015-07-17 2016-07-13 コンパイルされたソフトウェア内の機械命令を修正する方法およびシステム Pending JP2018523218A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562194180P 2015-07-17 2015-07-17
US62/194,180 2015-07-17
PCT/US2016/042139 WO2017015036A1 (en) 2015-07-17 2016-07-13 A method and system for modifying machine instructions within compiled software

Publications (1)

Publication Number Publication Date
JP2018523218A true JP2018523218A (ja) 2018-08-16

Family

ID=57834988

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017566147A Pending JP2018523218A (ja) 2015-07-17 2016-07-13 コンパイルされたソフトウェア内の機械命令を修正する方法およびシステム

Country Status (7)

Country Link
US (2) US10310831B2 (ja)
EP (1) EP3311266A4 (ja)
JP (1) JP2018523218A (ja)
KR (1) KR101935847B1 (ja)
CN (1) CN107924302B (ja)
IL (1) IL256382B (ja)
WO (1) WO2017015036A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10310831B2 (en) 2015-07-17 2019-06-04 Enhance, Inc. Method and system for modifying machine instructions within compiled software
US10228936B2 (en) * 2016-12-16 2019-03-12 EntIT Software, LLC Software delivery pipeline management
CN109308183A (zh) * 2018-07-30 2019-02-05 南阳理工学院 一种面向vliw芯片可执行代码的逆向工具方法
US11055105B2 (en) * 2018-08-31 2021-07-06 Micron Technology, Inc. Concurrent image measurement and execution
US20220237300A1 (en) * 2021-01-22 2022-07-28 Microsoft Technology Licensing, Llc Firmware component identification and vulnerability assessment
US11977868B2 (en) * 2022-01-04 2024-05-07 Xerox Corporation Search based approach for generating controller models

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7934211B2 (en) * 2005-06-30 2011-04-26 Oracle International Corporation Multi-level patching operation
US7901752B2 (en) * 2006-06-16 2011-03-08 Albany International Corp. Advanced battery paster belt
US8418122B2 (en) * 2006-10-13 2013-04-09 Oracle America, Inc. Incorporating functionality from an object file into an existing binary file
US9280337B2 (en) * 2006-12-18 2016-03-08 Adobe Systems Incorporated Secured distribution of software updates
TWM325778U (en) * 2007-06-23 2008-01-21 Shuen Huang Attachment structure for a seat back
EP2248366A4 (en) * 2008-01-29 2014-04-09 Qualcomm Inc SECURE APPLICATION SIGNATURE
CN102459791A (zh) * 2009-04-10 2012-05-16 关卡系统公司 推销式安全装置
US20100333079A1 (en) * 2009-06-30 2010-12-30 Computer Associates Think, Inc. Binary Code Modification System and Method for Implementing Identity and Access Management or Governance Policies
US8627303B2 (en) * 2009-11-30 2014-01-07 International Business Machines Corporation Memory optimization of virtual machine code by partitioning extraneous information
US9256401B2 (en) * 2011-05-31 2016-02-09 Microsoft Technology Licensing, Llc Editor visualization of symbolic relationships
US8856724B2 (en) * 2011-06-20 2014-10-07 Ebay Inc. Systems and methods for incremental software development
US8527361B2 (en) * 2011-06-27 2013-09-03 Amazon Technologies, Inc. Service for adding in-application shopping functionality to applications
US20130019235A1 (en) * 2011-07-11 2013-01-17 Salesforce.Com, Inc. Mechanism for facilitating management of metadata and metada-based update of software
US8707289B2 (en) * 2011-07-20 2014-04-22 Google Inc. Multiple application versions
CN103034479A (zh) * 2011-10-09 2013-04-10 镇江雅迅软件有限责任公司 一种基于结构动态技术的数据生成系统
US8793337B2 (en) 2011-10-24 2014-07-29 Infosys Limited System and method for providing one or more updated files for a generated user personalized software application
US9027004B1 (en) * 2013-03-12 2015-05-05 Amazon Technologies, Inc. Injection of supplemental computer instructions
US20140282371A1 (en) * 2013-03-14 2014-09-18 Media Direct, Inc. Systems and methods for creating or updating an application using a pre-existing application
US10184494B2 (en) * 2013-06-28 2019-01-22 Hamilton Sundstrand Corporation Enhance motor cooling system and method
US20150040112A1 (en) * 2013-08-01 2015-02-05 Qualcomm Incorporated Enabling Interoperability Between Software Applications By Utilizing Partial Binaries
US10452370B2 (en) * 2015-01-09 2019-10-22 University Of Virginia Patent Foundation System, method and computer readable medium for space-efficient binary rewriting
US10310831B2 (en) 2015-07-17 2019-06-04 Enhance, Inc. Method and system for modifying machine instructions within compiled software

Also Published As

Publication number Publication date
US20180203677A1 (en) 2018-07-19
US20190272161A1 (en) 2019-09-05
KR20180017211A (ko) 2018-02-20
EP3311266A4 (en) 2018-09-12
CN107924302B (zh) 2021-03-30
US10747518B2 (en) 2020-08-18
CN107924302A (zh) 2018-04-17
EP3311266A1 (en) 2018-04-25
US10310831B2 (en) 2019-06-04
WO2017015036A1 (en) 2017-01-26
IL256382A (en) 2018-02-28
IL256382B (en) 2018-10-31
KR101935847B1 (ko) 2019-01-07

Similar Documents

Publication Publication Date Title
US10747518B2 (en) Method and system for modifying machine instructions within compiled software
US9454363B1 (en) Mobile application development system and method
US9959198B1 (en) Simulated testing of API
US8850424B2 (en) Processing, modification, distribution of installation packages
US9286040B2 (en) Software builder
US8584114B2 (en) Method of generating and distributing a computer application
CN107896244B (zh) 一种版本文件的分发方法、客户端及服务器
KR102122451B1 (ko) 애플리케이션의 개발을 지원하는 플랫폼의 동작 방법 및 플랫폼을 제공하는 서버
JP2014525092A (ja) サードパーティのコンテンツをオンライン文書署名に関連付けるための方法
US20120204160A1 (en) Managing Non-Common Features for Program Code Translation
US9678745B2 (en) Automatic submission of applications to applications stores
US20130339160A1 (en) Application marketplace for online advertising applications
WO2019029451A1 (zh) 发布移动应用的方法和电子设备
US20170097814A1 (en) Automatic multi-platform mobile application development
US20200285450A1 (en) System for providing instant preview of a mobile application under development
US8930575B1 (en) Service for automatically converting content submissions to submission formats used by content marketplaces
CN110806935B (zh) 应用程序构建方法、装置和系统
US20200293156A1 (en) Studio builder for interactive media
CN110196803B (zh) 一种软件缺陷培训方法和系统
US20150227302A1 (en) Deploying multi-channel or device agnostic applications
US20210334092A1 (en) System For Providing Instant Preview Of A Mobile Application Under Development
TW201606547A (zh) 用戶定義的動態事件
US10755321B1 (en) Techniques for dynamic utilization of advertising capabilities by applications on user devices
US11381940B1 (en) Tethering computer programs and user interfaces to selected targets
TWI628585B (zh) 基於辨識識別碼以執行操作的電子書閱讀器及其方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180105

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180118

A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20180131

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180620

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180627

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190621

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190710

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20200302