JP7391983B2 - プログラム論理の表現を生成する方法、逆コンパイル装置、再コンパイルシステムおよびコンピュータプログラム製品 - Google Patents
プログラム論理の表現を生成する方法、逆コンパイル装置、再コンパイルシステムおよびコンピュータプログラム製品 Download PDFInfo
- Publication number
- JP7391983B2 JP7391983B2 JP2021552541A JP2021552541A JP7391983B2 JP 7391983 B2 JP7391983 B2 JP 7391983B2 JP 2021552541 A JP2021552541 A JP 2021552541A JP 2021552541 A JP2021552541 A JP 2021552541A JP 7391983 B2 JP7391983 B2 JP 7391983B2
- Authority
- JP
- Japan
- Prior art keywords
- code
- program
- intermediate language
- language
- terminal symbols
- 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
- 238000004590 computer program Methods 0.000 title claims description 75
- 238000000034 method Methods 0.000 title claims description 31
- 230000009467 reduction Effects 0.000 claims description 7
- 230000001419 dependent effect Effects 0.000 claims description 6
- 238000000638 solvent extraction Methods 0.000 claims 1
- 230000014509 gene expression Effects 0.000 description 21
- 238000006243 chemical reaction Methods 0.000 description 12
- 238000005457 optimization Methods 0.000 description 10
- 238000013459 approach Methods 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 6
- 230000014616 translation Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000005086 pumping Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241000283726 Bison Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- 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/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/4552—Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
第1のプロセッサアーキテクチャのための低水準プログラミング言語での第1のプログラムコードを捕捉するステップであって、第1のプログラムコードは、プログラム論理を実装し、高水準言語で定義されたプログラム論理をコンパイラでコンパイルすることによって生成されている、捕捉するステップと、
検出された第1のプログラムコードを、コンパイラに特有の少なくとも部分的にパラメータ化されたコードパターンの所定のセットに基づいてコードセクションのシーケンスに分割するステップであって、各コードセクションに対して、対応するパラメータ化されたコードパターンの各パラメータに対する特定のパラメータ値が捕捉され、中間言語の対応する終端記号は、各コードセクションに割り当られる、分割するステップと、
コードセクションのシーケンスに割り当てられた終端記号を、中間言語の文脈自由文法に基づいて中間言語の非終端記号に割り当てるステップであって、割り当てられた非終端記号の全体が、中間言語における第1のプログラムコードの前記プログラム論理を記述する、割り当てるステップと、
中間言語の関連する非終端記号および捕捉されたパラメータ値に基づいて、第1のプロセッサアーキテクチャから独立したプログラム論理の表現を生成するステップと、を含む。
少なくとも1つの実施形態によれば、ツリー表現のリーフは、分割するステップにおいて捕捉されたパラメータ値が記憶される第1の属性を含む。
少なくとも1つの実施形態によれば、ツリー表現のノードは、捕捉されたパラメータ値から導出されたパラメータ値が、割り当てるステップにおいて記憶される第2の属性を含む。
Claims (11)
- 中間言語におけるプログラム論理の表現を生成するための方法であって、
第1のプロセッサアーキテクチャのための低水準プログラミング言語での第1のプログラムコードを捕捉するステップであって、前記第1のプログラムコードは、プログラム論理を実装し、高水準言語で定義された前記プログラム論理をコンパイラでコンパイルすることによって生成されている、捕捉するステップと、
前記捕捉された第1のプログラムコードを、前記コンパイラに特有の少なくとも部分的にパラメータ化されたコードパターンの所定のセットに基づいてコードセクションのシーケンスに分割するステップであって、前記コードパターンは、前記コンパイラが前記高水準言語の既知の原子要素を前記第1のプログラムコードにおいて実装するために使用されており、各コードセクションに対して、対応するパラメータ化されたコードパターンの各パラメータに対する特定のパラメータ値が捕捉され、前記中間言語の終端記号は、各コードセクションに割り当られる、分割するステップと、
前記コードセクションのシーケンスに割り当てられた前記終端記号を、前記中間言語の文脈自由文法に基づいて前記中間言語の非終端記号に割り当てるステップであって、前記割り当てられた非終端記号の全体が、前記中間言語における前記第1のプログラムコードの前記プログラム論理を記述する、割り当てるステップと、
前記中間言語の前記割り当てられた非終端記号および前記捕捉されたパラメータ値に基づいて、前記第1のプロセッサアーキテクチャから独立した前記プログラム論理の表現を生成するステップと、を含む、方法。 - 前記分割するステップにおいて、前記第1のプログラムコードの前記コードセクションは、パターンマッチングによって、前記コンパイラに特有の少なくとも部分的にパラメータ化されたコードパターンの前記所定のセットと比較され、検査されたコードセクションに対して、対応するパラメータ化されたコードパターンの各パラメータに対するパラメータ値の一貫した割り当てが可能である場合にのみ、対応する終端記号が割り当てられる、請求項1に記載の方法。
- 前記割り当てるステップにおいて、前記中間言語の非終端記号に少なくとも1つのコンテキスト依存条件が、前記分割するステップで捕捉された前記パラメータ値に基づいてチェックされ、前記少なくとも1つのコンテキスト依存条件が、前記対応するコードセクションの前記捕捉されたパラメータ値によって満たされない場合、前記非終端記号への可能な割り当てが不正確であるとして拒否される、請求項1または2に記載の方法。
- 前記割り当てステップにおいて、前記コードセクションのシーケンスに割り当てられた終端記号のシーケンスが、パーサ、特にボトムアップパーサによって、前記プログラム論理の階層的表現に変換され、前記階層的表現の上位要素は、前記中間言語の前記非終端記号に対応し、前記階層的表現の下位要素は、前記中間言語の前記終端記号にのみ対応する、請求項1~3のいずれか一項に記載の方法。
- 前記生成するステップにおいて、第2のプログラムコードが、前記中間言語の関連する前記非終端記号に基づいて第2のプロセッサアーキテクチャのための低水準プログラミング言語で生成され、前記第2のプロセッサアーキテクチャを有するプロセッサ上で前記第2のプログラムコードを実行すると、プログラムステップが、前記高水準言語で定義された前記プログラム論理にしたがって実行される、請求項1~4のいずれか一項に記載の方法。
- 逆コンパイル装置であって、
第1のプロセッサアーキテクチャのプロセッサのために捕捉された第1のプログラムコードを、少なくとも部分的にパラメータ化されたコードパターンの所定のセットに基づいてコードセクションのシーケンスに分割するための照合器であって、前記第1のプログラムコードは、プログラム論理を実装し、コンパイラによって高水準言語で定義されたコンピュータプログラムをコンパイルすることによって生成されており、前記コードパターンは、前記コンパイラが前記高水準言語の既知の原子要素を前記第1のプログラムコードにおいて実装するために使用されており、前記照合器は、対応するパラメータ化されたコードパターンの各パラメータに対して各コードセクションの特定のパラメータ値について捕捉し、各コードセクションに中間言語の終端記号を割り当てる、照合器と、
前記コードセクションのシーケンスに割り当てられた終端記号のシーケンスを前記中間言語の非終端記号に縮小するためのパーサ、特にボトムアップパーサであって、縮小によって前記パーサによって生成された前記非終端記号の全体が、前記中間言語における前記コンピュータプログラムの前記プログラム論理を記述する、パーサと、を含む、逆コンパイル装置。 - 前記照合器が、さらに、前記第1のプロセッサアーキテクチャのためのバイナリコードまたはアセンブリコードを捕捉し、そこに含まれる前記第1のプログラムコードの機械コードを抽出するように適合された、請求項6に記載の逆コンパイル装置。
- 前記パーサは、非終端記号に縮小するときに、少なくとも1つの文脈条件とのコンプライアンスをチェックし、前記少なくとも1つの文脈条件が、前記対応するコードセクションの前記捕捉されたパラメータ値によって満たされない場合、前記非終端記号への可能な縮小を不正確として拒否するように適合された、請求項6または7に記載の逆コンパイル装置。
- 前記少なくとも部分的にパラメータ化されたコードパターンの所定のセットの定義を有する少なくとも1つのテキストファイル内で読み取るためのパターンパーサをさらに含む、請求項6~8のいずれか一項に記載の逆コンパイル装置。
- 請求項6~9のいずれか一項に記載の逆コンパイル装置と、前記中間言語で表現された前記プログラム論理を、第2のプロセッサアーキテクチャのための前記コンピュータプログラムに対応する機械コードに変換するための少なくとも1つのコード生成装置と、を含む、再コンパイルシステム。
- コンピュータシステムのプロセッサに、
第1のプロセッサアーキテクチャのプロセッサのための捕捉された第1のプログラムコードを、少なくとも部分的にパラメータ化されたコードパターンの所定のセットに基づいてコードセクションのシーケンスに分割するステップであって、前記第1のプログラムコードは、プログラム論理を実装し、コンパイラによって高水準言語で定義されたコンピュータプログラムをコンパイルすることによって生成されており、前記コードパターンは、前記コンパイラが前記高水準言語の既知の原子要素を前記第1のプログラムコードにおいて実装するために使用されており、対応するパラメータ化されたコードパターンの各パラメータに対する特定のパラメータ値が、各コードセクションに対する前記分割中に捕捉され、中間言語の終端記号が、各コードセクションに割り当てられる、分割するステップと、
前記コードセクションの分割されたシーケンスに割り当てられた前記終端記号を、前記中間言語の文脈自由文法に基づいて前記中間言語の非終端記号に割り当てるステップであって、前記割り当てられた非終端記号の全体が、前記中間言語で前記コンピュータプログラムの前記プログラム論理を記述する、割り当てるステップと、を実行させるためのプログラムコード。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102019105418.4 | 2019-03-04 | ||
DE102019105418.4A DE102019105418B3 (de) | 2019-03-04 | 2019-03-04 | Verfahren zum Erzeugen einer Darstellung einer Programmlogik, Dekompiliervorrichtung, Rekompiliersystem und Computerprogrammprodukte |
PCT/EP2020/053637 WO2020177994A1 (de) | 2019-03-04 | 2020-02-12 | Verfahren zum erzeugen einer darstellung einer programmlogik, dekompiliervorrichtung, rekompiliersystem und computerprogrammprodukt |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022522880A JP2022522880A (ja) | 2022-04-20 |
JP7391983B2 true JP7391983B2 (ja) | 2023-12-05 |
Family
ID=69699831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021552541A Active JP7391983B2 (ja) | 2019-03-04 | 2020-02-12 | プログラム論理の表現を生成する方法、逆コンパイル装置、再コンパイルシステムおよびコンピュータプログラム製品 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11748076B2 (ja) |
EP (1) | EP3935489A1 (ja) |
JP (1) | JP7391983B2 (ja) |
DE (1) | DE102019105418B3 (ja) |
WO (1) | WO2020177994A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114327497A (zh) * | 2020-09-30 | 2022-04-12 | 华为技术有限公司 | 一种代码处理方法、装置及设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007249991A (ja) | 2003-05-02 | 2007-09-27 | Transitive Ltd | プログラム・コード変換用の中間表現を生成するための改善されたアーキテクチャ |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05134880A (ja) | 1991-06-05 | 1993-06-01 | Fujitsu Ltd | デイジタル計算機 |
US5860008A (en) | 1996-02-02 | 1999-01-12 | Apple Computer, Inc. | Method and apparatus for decompiling a compiled interpretive code |
US5916305A (en) * | 1996-11-05 | 1999-06-29 | Shomiti Systems, Inc. | Pattern recognition in data communications using predictive parsers |
US7363310B2 (en) * | 2001-09-04 | 2008-04-22 | Timebase Pty Limited | Mapping of data from XML to SQL |
EP1910923A2 (en) * | 2005-07-25 | 2008-04-16 | Hercules Software, LLC | Direct execution virtual machine |
EP2008200B1 (en) * | 2006-04-06 | 2017-09-27 | Yale University | Framework of hierarchical sensory grammars for inferring behaviors using distributed sensors |
US7818311B2 (en) * | 2007-09-25 | 2010-10-19 | Microsoft Corporation | Complex regular expression construction |
US20100037213A1 (en) * | 2008-08-07 | 2010-02-11 | Microsoft Corporation | Grammar-based generation of types and extensions |
CN107908955B (zh) * | 2017-11-30 | 2019-11-12 | 华中科技大学 | 一种基于中间语言分析的控制流完整性保护方法及系统 |
-
2019
- 2019-03-04 DE DE102019105418.4A patent/DE102019105418B3/de active Active
-
2020
- 2020-02-12 JP JP2021552541A patent/JP7391983B2/ja active Active
- 2020-02-12 US US17/436,409 patent/US11748076B2/en active Active
- 2020-02-12 EP EP20706972.5A patent/EP3935489A1/de active Pending
- 2020-02-12 WO PCT/EP2020/053637 patent/WO2020177994A1/de unknown
-
2023
- 2023-07-12 US US18/220,863 patent/US20230367569A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007249991A (ja) | 2003-05-02 | 2007-09-27 | Transitive Ltd | プログラム・コード変換用の中間表現を生成するための改善されたアーキテクチャ |
Non-Patent Citations (1)
Title |
---|
NOLAN, Godfrey,"デコンパイリングJava",初版,株式会社オライリー・ジャパン,2010年06月,p.135-136,143-144,ISBN: 978-4-87311-449-1 |
Also Published As
Publication number | Publication date |
---|---|
EP3935489A1 (de) | 2022-01-12 |
US20220147329A1 (en) | 2022-05-12 |
WO2020177994A1 (de) | 2020-09-10 |
US11748076B2 (en) | 2023-09-05 |
US20230367569A1 (en) | 2023-11-16 |
JP2022522880A (ja) | 2022-04-20 |
DE102019105418B3 (de) | 2020-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
USRE38104E1 (en) | Method and apparatus for resolving data references in generated code | |
Grimm | Better extensibility through modular syntax | |
US5586328A (en) | Module dependency based incremental compiler and method | |
Fraser et al. | Engineering a simple, efficient code-generator generator | |
US5230049A (en) | Program source code translator | |
US7992140B2 (en) | Compiler supporting programs as data objects | |
US20030088860A1 (en) | Compiler annotation for binary translation tools | |
US5838980A (en) | Compilation and virtual machine arrangement and process for source code including pre-runtime executable language structure constructs | |
JPH06501583A (ja) | 多言語最適化コンパイラ内のフォールディングメカニズムを構成する方法 | |
EP1672488A2 (en) | Compile time linking via hashing technique | |
US20230367569A1 (en) | Method of generating a representation of a program logic, decompilation apparatus, recompilation system and computer program products | |
CN112379917A (zh) | 浏览器兼容性提升方法、装置、设备及存储介质 | |
US6625807B1 (en) | Apparatus and method for efficiently obtaining and utilizing register usage information during software binary translation | |
Aaby | Compiler construction using flex and bison | |
Biboudis et al. | Recaf: Java dialects as libraries | |
US7152223B1 (en) | Methods and systems for compiling and interpreting one or more associations between declarations and implementations in a language neutral fashion | |
US7207036B2 (en) | Preprocessing of interfaces to allow fast call through | |
Sah et al. | An introduction to the Rush language | |
CN110110299B (zh) | 文本变换方法、装置以及服务器 | |
Brady | Cross-platform compilers for functional languages | |
Nguyen | Compiler design and implementation in OCaml with LLVM framework | |
Pammer | Fast Machine-code generation for stack-based languages | |
Flatt | The Racket Reference | |
JP3596570B2 (ja) | クラスの主記憶装置への配置方法 | |
Louden et al. | Compilers and Interpreters. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20211102 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20211102 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20221125 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230110 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20230309 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230407 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230725 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231024 |
|
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: 20231107 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20231122 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7391983 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |