JP2006236327A - コードモーフィング - Google Patents
コードモーフィング Download PDFInfo
- Publication number
- JP2006236327A JP2006236327A JP2006015454A JP2006015454A JP2006236327A JP 2006236327 A JP2006236327 A JP 2006236327A JP 2006015454 A JP2006015454 A JP 2006015454A JP 2006015454 A JP2006015454 A JP 2006015454A JP 2006236327 A JP2006236327 A JP 2006236327A
- Authority
- JP
- Japan
- Prior art keywords
- code
- morphing
- morphed
- local
- instructions
- 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
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B24—GRINDING; POLISHING
- B24C—ABRASIVE OR RELATED BLASTING WITH PARTICULATE MATERIAL
- B24C9/00—Appurtenances of abrasive blasting machines or devices, e.g. working chambers, arrangements for handling used abrasive material
- B24C9/003—Removing abrasive powder out of the blasting machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B24—GRINDING; POLISHING
- B24C—ABRASIVE OR RELATED BLASTING WITH PARTICULATE MATERIAL
- B24C7/00—Equipment for feeding abrasive material; Controlling the flowability, constitution, or other physical characteristics of abrasive blasts
- B24C7/0046—Equipment for feeding abrasive material; Controlling the flowability, constitution, or other physical characteristics of abrasive blasts the abrasive material being fed in a gaseous carrier
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B24—GRINDING; POLISHING
- B24C—ABRASIVE OR RELATED BLASTING WITH PARTICULATE MATERIAL
- B24C9/00—Appurtenances of abrasive blasting machines or devices, e.g. working chambers, arrangements for handling used abrasive material
- B24C9/006—Treatment of used abrasive material
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mechanical Engineering (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
- Investigating Strength Of Materials By Application Of Mechanical Stress (AREA)
- Special Wing (AREA)
- Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)
- Devices For Executing Special Programs (AREA)
- Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
- Storage Device Security (AREA)
Abstract
【解決手段】コードモーフィングは、既知のコードの意図されたコンテキストに影響を及ぼさずに、このコードの少なくとも1つの基礎的な制御構造を書き換えることを含む。
【選択図】図2
Description
205 コード
210 ジェネレータ
215 サンプラ
220 モーファ
225 ターゲットコンポーネント
Claims (18)
- コードをサンプリングするステップと、
前記コードを穏やかな方法でモーフィングするステップと、
前記モーフィングされたコードを処理するステップと、
前記コードに関する既知の処理結果を、前記モーフィングされたコードに関する処理結果と比較するステップと
を備えたことを特徴とする方法。 - 前記コードは、アプリケーションと、プログラムと、メソッドと、関数と、実行可能コードの集合とのうちの1つの一部を少なくとも含むことを特徴とする請求項1に記載の方法。
- 前記サンプリングするステップは、前記コードに属する構文の特質および構成の特性のうち少なくとも1つを解読するステップを含むことを特徴とする請求項1に記載の方法。
- 前記モーフィングするステップは、前記コードのコンテキストを維持しながら前記コードの少なくとも1つの基礎的な構成を書き換えるステップを含むことを特徴とする請求項1に記載の方法。
- 前記コードをモーフィングするステップは、パラメータを追加するステップと、プリミティブ型の幅を拡張するステップと、パラメータの順序を変更するステップと、ローカル変数の順序を変更するステップと、ローカル変数を追加するステップと、外部変数を余分に使用するステップと、余分なループを追加するステップと、制御フロー中でステッチングするステップと、定数を展開するステップと、メソッドを定数と置き換えるステップと、偽のスタック深度を導入するステップと、定数を畳み込むステップと、ループをロールアップするステップと、共通の部分式を導入するステップと、型ローカルを介して変換するステップと、ローカルを別の記憶空間に変換するステップとのうちの少なくとも1つを含むことを特徴とする請求項1に記載の方法。
- 前記モーフィングするステップは、マネージ実行環境において実行されることを特徴とする請求項1に記載の方法。
- 前記処理するステップは、前記コードをコンパイルするステップを含むことを特徴とする請求項1に記載の方法。
- 読み込まれると、1つまたは複数のプロセッサに、
既知のコードをモーフィングしてモーフィングされたコードを作成するステップと、
前記モーフィングが穏やかかどうかテストするステップと
を行わせる1つまたは複数の実行可能命令を有するコンピュータ読取可能な媒体。 - 前記既知のコードをモーフィングするステップを行わせる1つまたは複数の命令は、前記既知のコードの少なくとも一部を構文的と構造的との少なくとも一方で書き換えるステップを前記1つまたは複数のプロセッサに行わせることを特徴とする請求項8に記載のコンピュータ読取可能な媒体。
- 前記既知のコードをモーフィングするステップを行わせる1つまたは複数の命令は、前記既知のコードに対して、パラメータを追加するステップと、プリミティブ型の幅を拡張するステップと、パラメータの順序を変更するステップと、ローカル変数の順序を変更するステップと、ローカル変数を追加するステップと、外部変数を余分に使用するステップと、余分なループを追加するステップと、制御フロー中でステッチングするステップと、定数を展開するステップと、メソッドを定数と置き換えるステップと、偽のスタック深度を導入するステップと、定数を畳み込むステップと、ループをロールアップするステップと、共通の部分式を導入するステップと、型ローカルを介して変換するステップと、ローカルを別の記憶空間に変換するステップとのうちの少なくとも1つを、前記1つまたは複数のプロセッサに行わせることを特徴とする請求項8に記載のコンピュータ読取可能な媒体。
- 前記モーフィングが穏やかかどうかテストするステップを行わせる1つまたは複数の命令は、
前記モーフィングされたコードをコンパイルするステップと、
前記モーフィングされたコードをコンパイルすることに関する結果を、前記既知のコードをコンパイルすることに関する既知の結果と比較するステップと
を含むことを特徴とする請求項8に記載のコンピュータ読取可能な媒体。 - 前記モーフィングが穏やかかどうかテストするステップを行わせる1つまたは複数の命令は、前記モーフィングされたコードと前記既知のコードとを処理するターゲットオブジェクトが同じ結果を生じることになるかどうか判定するステップを含むことを特徴とする請求項8に記載のコンピュータ読取可能な媒体。
- 前記1つまたは複数のプロセッサは、前記1つまたは複数の命令をマネージ実行環境において実行することを特徴とする請求項8に記載のコンピュータ読取可能な媒体。
- 入力されたコードの基礎的な制御構造をサンプリングするサンプラと、
前記基礎的な制御構造の少なくとも1つを書き換えるモーファと、
前記モーファが前記基礎的な制御構造を穏やかな方法で書き換えたかどうか検証するためのオブジェクトと
を備えたことを特徴とするシステム。 - 前記入力されたコードは、アプリケーションと、プログラムと、メソッドと、関数と、実行可能コードの集合とのうちの1つの一部を少なくとも含むことを特徴とする請求項14に記載のシステム。
- 前記サンプラは、前記入力されたコードの元のコンテキストをなお維持しながらも構文的と構造的との少なくとも一方で書き換えることのできる、前記入力されたコードの部分の識別を可能にすることを特徴とする請求項14に記載のシステム。
- 前記モーファは、前記入力されたコードの元のコンテキストをなお維持しながらも前記入力されたコードを構文的に変換することを特徴とする請求項14に記載のシステム。
- 前記モーファは、前記入力されたコードに関する処理結果に影響を及ぼさずに、前記入力されたコードを構造的に変換することを特徴とする請求項14に記載のシステム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/064,865 US8020152B2 (en) | 2005-02-24 | 2005-02-24 | Code morphing |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006236327A true JP2006236327A (ja) | 2006-09-07 |
Family
ID=36693571
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006015454A Pending JP2006236327A (ja) | 2005-02-24 | 2006-01-24 | コードモーフィング |
Country Status (5)
Country | Link |
---|---|
US (1) | US8020152B2 (ja) |
EP (1) | EP1696316B1 (ja) |
JP (1) | JP2006236327A (ja) |
KR (1) | KR101219874B1 (ja) |
CN (1) | CN1825277B (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012012861A1 (en) * | 2010-07-29 | 2012-02-02 | Irdeto Canada Corporation | System and method for efficiently deploying massively diverse program instances to resist differential attacks |
US8683452B1 (en) * | 2010-12-21 | 2014-03-25 | Emc Corporation | Dynamically obfuscated javascript |
US10459717B2 (en) * | 2013-08-07 | 2019-10-29 | Sap Se | Observing evolution of software development artifacts |
CN105677318A (zh) * | 2015-12-28 | 2016-06-15 | 心动网络股份有限公司 | 一种防止游戏被内存修改器修改的方法 |
US10248545B2 (en) * | 2016-02-17 | 2019-04-02 | Parasoft Corporation | Method for tracking high-level source attribution of generated assembly language code |
US11200151B1 (en) | 2021-03-12 | 2021-12-14 | Sas Institute Inc. | Graphical user interface and debugger system for selecting and testing alterations to source code for software applications |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4739465B2 (ja) * | 1997-06-09 | 2011-08-03 | インタートラスト テクノロジーズ コーポレイション | ソフトウェアセキュリティを増強するための混乱化技術 |
EP0991994A4 (en) * | 1997-06-25 | 2001-11-28 | Transmeta Corp | IMPROVED MICROPROCESSOR |
US5903761A (en) * | 1997-10-31 | 1999-05-11 | Preemptive Solutions, Inc. | Method of reducing the number of instructions in a program code sequence |
US7089541B2 (en) * | 2001-11-30 | 2006-08-08 | Sun Microsystems, Inc. | Modular parser architecture with mini parsers |
US20030145190A1 (en) * | 2001-12-07 | 2003-07-31 | Paolo Faraboschi | Compiler algorithm to implement speculative stores |
EP1347373A3 (en) | 2002-03-20 | 2005-02-02 | Seiko Epson Corporation | Apparatus for processing instructions of different instruction set architectures |
US7228426B2 (en) * | 2002-04-03 | 2007-06-05 | Microsoft Corporation | Integrity ordainment and ascertainment of computer-executable instructions with consideration for execution context |
US20040172637A1 (en) * | 2003-02-28 | 2004-09-02 | Sap Ag | Code morphing manager |
US7669188B2 (en) * | 2004-12-03 | 2010-02-23 | Palo Alto Research Center Incorporated | System and method for identifying viable refactorings of program code using a comprehensive test suite |
-
2005
- 2005-02-24 US US11/064,865 patent/US8020152B2/en not_active Expired - Fee Related
-
2006
- 2006-01-05 KR KR1020060001231A patent/KR101219874B1/ko active IP Right Grant
- 2006-01-20 EP EP06100646.6A patent/EP1696316B1/en active Active
- 2006-01-24 JP JP2006015454A patent/JP2006236327A/ja active Pending
- 2006-01-24 CN CN2006100043233A patent/CN1825277B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP1696316A3 (en) | 2006-10-04 |
EP1696316A2 (en) | 2006-08-30 |
US20060190937A1 (en) | 2006-08-24 |
CN1825277A (zh) | 2006-08-30 |
US8020152B2 (en) | 2011-09-13 |
KR20060094457A (ko) | 2006-08-29 |
CN1825277B (zh) | 2012-10-10 |
KR101219874B1 (ko) | 2013-01-09 |
EP1696316B1 (en) | 2019-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Sridharan et al. | F4F: taint analysis of framework-based web applications | |
Arzt et al. | Stubdroid: automatic inference of precise data-flow summaries for the android framework | |
US8615750B1 (en) | Optimizing application compiling | |
Heizmann et al. | Termination analysis by learning terminating programs | |
US10528363B2 (en) | Conservative class preloading for real time java execution | |
US10209968B2 (en) | Application compiling | |
WO2014062950A1 (en) | Code dependency calculation | |
US9645800B2 (en) | System and method for facilitating static analysis of software applications | |
EP1899859B1 (en) | Translating expressions in a computing environment | |
JP2006236327A (ja) | コードモーフィング | |
Vasilakis et al. | Supply-chain vulnerability elimination via active learning and regeneration | |
Kim et al. | Reuse-oriented reverse engineering of functional components from x86 binaries | |
Binkley et al. | Tree-oriented vs. line-oriented observation-based slicing | |
US20060193342A1 (en) | System and method for testing a protocol using targeted variant input | |
KR20210045122A (ko) | 기호 실행을 사용하는 소프트웨어 테스트 입력 생성 장치 및 방법 | |
US11537372B2 (en) | Generating compilable machine code programs from dynamic language code | |
US20230052827A1 (en) | Automated synthesis of reference policies for runtime microservice protection | |
Schippers et al. | An implementation substrate for languages composing modularized crosscutting concerns | |
Schiffl et al. | Formal analysis of smart contracts: applying the KeY system | |
Strickland et al. | Contracts for domain-specific languages in Ruby | |
Schippers et al. | A graph-based operational semantics for context-oriented programming | |
Sun et al. | Model-based testing of web service with EFSM | |
Kim et al. | Static dalvik bytecode optimization for Android applications | |
KR101029334B1 (ko) | Api 로깅 장치 및 방법 | |
Hai et al. | Multi-threaded on-the-fly model generation of malware with hash compaction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090107 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110830 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111130 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111220 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120319 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120410 |