KR20180093529A - Method for preventing falsification of application based on interdependence between byte code and native code and apparatus therefor - Google Patents

Method for preventing falsification of application based on interdependence between byte code and native code and apparatus therefor Download PDF

Info

Publication number
KR20180093529A
KR20180093529A KR1020170019760A KR20170019760A KR20180093529A KR 20180093529 A KR20180093529 A KR 20180093529A KR 1020170019760 A KR1020170019760 A KR 1020170019760A KR 20170019760 A KR20170019760 A KR 20170019760A KR 20180093529 A KR20180093529 A KR 20180093529A
Authority
KR
South Korea
Prior art keywords
native code
bytecode
application
code
interdependency
Prior art date
Application number
KR1020170019760A
Other languages
Korean (ko)
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 한양대학교 에리카산학협력단
Priority to KR1020170019760A priority Critical patent/KR20180093529A/en
Publication of KR20180093529A publication Critical patent/KR20180093529A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Storage Device Security (AREA)

Abstract

Disclosed are a method and an apparatus for preventing forgery and falsification of an application based on interdependency between a bytecode and a native code. The method for preventing forgery and falsification of an application according to an embodiment of the present invention comprises: extracting a bytecode of an application; generating interdependency between the bytecode and the native code by implementing some of major components constituting the extracted bytecode as the native code; and preventing forgery and falsification of the application based on the generated interdependency.

Description

바이트코드와 네이티브코드 간의 상호 의존성에 기반한 어플리케이션 위변조 방지 방법 및 장치 {Method for preventing falsification of application based on interdependence between byte code and native code and apparatus therefor}FIELD OF THE INVENTION The present invention relates to a method and apparatus for preventing forgery and falsification of an application based on interdependency between a bytecode and a native code,

본 발명은 어플리케이션 위변조 방지 기술에 관한 것으로서, 보다 구체적으로 어플리케이션 예를 들어, 안드로이드 어플리케이션의 바이트코드와 네이티브코드 간의 상호 의존성에 기반하여 어플리케이션 위변조를 방지할 수 있는 방법 및 장치에 관한 것이다.The present invention relates to a technology for preventing forgery of applications, and more specifically, to a method and apparatus for preventing forgery of applications based on an application, for example, an interdependency between a bytecode of an Android application and a native code.

안드로이드 어플리케이션은 바이트코드 기반이므로, 네이티브코드로 이루어진 어플리케이션보다 이해하기 쉬우며, 또한 수정 및 재배포도 쉽다. 따라서 이를 방어하기 위해 난독화 기법이 많이 사용된다.Because Android applications are byte-code based, they are easier to understand and are easier to modify and redistribute than native code applications. Therefore, obfuscation techniques are often used to protect them.

난독화 기법은 코드의 원래 의미를 건들지 않는 범위 내에서, 더미 모드를 삽입하거나 프로그램의 구조를 수정하여 의미 파악을 힘들게 하는 접근법이다. 또 다른 접근법으로 코드의 무결성을 검사 즉, 코드의 수정 여부를 탐지하는 기법이 있다. 이는 코드의 이해를 방해하기 보다는 코드의 수정여부를 탐지하여 원본 코드가 수정되는 것을 방지하고자 하는데 목적이 있다.The obfuscation technique is an approach to inserting a dummy mode or modifying the structure of a program to the extent that it does not touch the original meaning of the code, making it difficult to grasp the meaning. Another approach is to check the integrity of the code, that is, to detect whether the code has been modified. Rather than interfere with the understanding of the code, it is intended to detect the modification of the code and to prevent the original code from being modified.

무결성(또는 위변조) 탐지는 크게 두 가지 접근법이 존재한다. 외부에서 대상 어플리케이션의 무결성 여부를 검증하는 방법과 어플리케이션 자체에서 무결성 여부를 검증하는 방법이 있다.There are two approaches to integrity (or forgery) detection. There is a method of verifying the integrity of the target application from the outside and a method of verifying the integrity of the application itself.

외부에서 무결성 여부를 검증하는 방식은 일반적으로 디바이스에 원본 어플리케이션이 설치되는지 검사하는 것에 그 목적이 있다. 내부에서 무결성 여부를 검증하는 방식은 코드 수정을 통한 재배포를 막거나, 디버깅을 차단하기 위한 한 부분으로 사용된다.The method of verifying the integrity from the outside generally aims at checking whether the original application is installed in the device. Internally, the method of verifying integrity is used as a part to prevent redistribution through code modification or to prevent debugging.

안드로이드 어플리케이션의 주 보호 대상이 되는 것은 바이트코드(DEX 파일)로, 바이트코드에 메인 코드가 담겨 있으며, 이것의 수정을 방지하고자 할 때 무결성(또는 위변조) 검사가 이루어진다. 이런 검사는 일반적으로 바이트코드 단에서 이뤄지지 않는데, 이는 바이트코드가 비록 소스코드보다는 하위 수준의 언어이지만, 사람이 이해하기 쉬운 수준이라 금방 분석될 수 있기 때문이다. 따라서, 최하위 수준의 언어인 네이티브코드 단에서 바이트코드의 해시 값을 비교하여 수정 여부를 검사한다.The primary protection for Android applications is bytecode (DEX file), which contains the main code in the bytecode, and integrity (or forgery) checking is done to prevent its modification. This check is not usually done at byte-code level because byte code is a lower-level language than source code, but it can be analyzed quickly because it is easy for people to understand. Therefore, the hash value of the bytecode is compared with the native code level, which is the lowest level language, to check whether or not the modification is made.

이와 같이, 기존 안드로이드 어플리케이션에서 사용되는 무결성 검증 기법은, 대상 파일의 해시 값을 저장하고 있다가 동작 시 이를 재계산하여 비교하는 것이 대다수이다. 하지만, 이런 방식은 검사하는 루틴만 제거하면 쉽게 우회할 수 있다. 또한 안드로이드 어플리케이션의 바이트코드(DEX 파일)를 구하려면, 반드시 ApplicationInfo 클래스의 publicSourceDir 메소드를 통해서 경로를 가져와야 하는데, 분석가가 이 함수를 후킹(hooking)할 경우 쉽게 검증 시점을 알 수 있으며, 이를 우회할 수도 있다.In this way, the integrity verification technique used in existing Android applications is to store the hash value of the target file, and then recalculate and compare the hash value in operation. However, this method can be easily bypassed by removing only the routines to be examined. In order to obtain the bytecode (DEX file) of the Android application, the path must be fetched through the publicSourceDir method of the ApplicationInfo class. When the analyst hooks this function, it is easy to know the verification time, have.

이런 문제점 때문에, 일반적으로 원본 바이트코드(DEX 파일)를 암호화하여 감추고, 동작 시 이를 복호화하여 로드하는 방식으로 원본 데이터의 무결성을 지키고 코드를 보호한다. 하지만, 이런 방식조차 원본 코드를 복호화하는 코드(스텁 코드)의 무결성은 보장하지 못하기 때문에 공격자가 스텁(stub) 코드를 수정하여 복호화하는 루틴을 쉽게 파악하고 원본 코드를 얻을 수 있다.Because of this problem, the original bytecode (DEX file) is generally encrypted and hidden, and it is decrypted and loaded during operation to protect the integrity of the original data and protect the code. However, even this approach does not guarantee the integrity of the code (the stub code) that decodes the original code, so the attacker can easily grasp the routine to modify and decode the stub code and get the original code.

따라서, 어플리케이션의 위변조를 방지할 수 있는 방법의 필요성이 요구된다.Therefore, there is a need for a method that can prevent forgery and falsification of the application.

본 발명의 실시예들은, 어플리케이션 예를 들어, 안드로이드 어플리케이션의 바이트코드와 네이티브코드 간의 상호 의존성에 기반하여 어플리케이션 위변조를 방지할 수 있는 방법 및 장치를 제공한다.Embodiments of the present invention provide a method and apparatus that can prevent application forgery based on an application, for example, an interdependency between a bytecode and a native code of an Android application.

본 발명의 일 실시예에 따른 어플리케이션 위변조 방지 방법은 어플리케이션의 바이트코드를 추출하는 단계; 상기 추출된 바이트코드를 구성하는 주요 구성들 중 일부 구성을 네이티브코드로 구현하여 상기 바이트코드와 상기 네이티브코드 간의 상호 의존성을 생성하는 단계; 및 상기 생성된 상호 의존성에 기반하여 상기 어플리케이션의 위변조를 방지하는 단계를 포함한다.According to an embodiment of the present invention, there is provided a method for preventing forgery of an application, comprising: extracting a bytecode of an application; Generating interdependencies between the bytecode and the native code by implementing some of the major components constituting the extracted bytecode with native code; And preventing forgery and falsification of the application based on the generated interdependency.

상기 어플리케이션의 위변조를 방지하는 단계는 상기 네이티브코드에 미리 설정된 난독화 기법 또는 보호 기법을 적용시킬 수 있다.In the step of preventing forgery and falsification of the application, the obfuscation technique or the protection technique preset in the native code may be applied.

상기 상호 의존성을 생성하는 단계는 상기 주요 구성들 중 메소드를 포함하는 기능을 상기 네이티브코드로 이전하여 구현함으로써, 상기 바이트코드와 상기 네이티브코드 간의 상호 의존성을 생성할 수 있다.The step of generating the interdependency may create an interdependency between the bytecode and the native code by transferring a function including the method among the main structures to the native code.

상기 상호 의존성을 생성하는 단계는 상기 네이티브코드에서 상기 바이트코드의 특성, 변수 및 기능 중 적어도 하나를 이용하여 상기 바이트코드와 상기 네이티브코드 간의 상호 의존성을 생성하고, 상기 특성은 클래스 정보와 필드 정보 중 적어도 하나를 포함하며, 상기 기능은 메소드를 포함할 수 있다.The generating of the interdependency may generate an interdependency between the bytecode and the native code using at least one of the characteristics, variables, and functions of the bytecode in the native code, And at least one of the functions may include a method.

상기 어플리케이션은 안드로이드 어플리케이션과 자바 어플리케이션을 포함할 수 있다.The application may include an Android application and a Java application.

본 발명의 일 실시예에 따른 어플리케이션 위변조 방지 장치는 어플리케이션의 바이트코드를 추출하는 추출부; 상기 추출된 바이트코드를 구성하는 주요 구성들 중 일부 구성을 네이티브코드로 구현하여 상기 바이트코드와 상기 네이티브코드 간의 상호 의존성을 생성하는 생성부; 및 상기 생성된 상호 의존성에 기반하여 상기 어플리케이션의 위변조를 방지하는 방지부를 포함한다.An apparatus for forging an application according to an exemplary embodiment of the present invention includes: an extractor for extracting a bytecode of an application; A generating unit for implementing some of the major components constituting the extracted bytecode with native code to generate an interdependency between the bytecode and the native code; And a prevention unit for preventing forgery and falsification of the application based on the generated interdependency.

상기 방지부는 상기 네이티브코드에 미리 설정된 난독화 기법 또는 보호 기법을 적용시킬 수 있다.The prevention unit may apply the obfuscation technique or the protection scheme preset in the native code.

상기 생성부는 상기 주요 구성들 중 메소드를 포함하는 기능을 상기 네이티브코드로 이전하여 구현함으로써, 상기 바이트코드와 상기 네이티브코드 간의 상호 의존성을 생성할 수 있다.The generation unit transfers the function including the method among the main structures to the native code, thereby generating the interdependency between the bytecode and the native code.

상기 생성부는 상기 네이티브코드에서 상기 바이트코드의 특성, 변수 및 기능 중 적어도 하나를 이용하여 상기 바이트코드와 상기 네이티브코드 간의 상호 의존성을 생성하고, 상기 특성은 클래스 정보와 필드 정보 중 적어도 하나를 포함하며, 상기 기능은 메소드를 포함할 수 있다.Wherein the generation unit generates an interdependency between the bytecode and the native code using at least one of the characteristics, variables and functions of the bytecode in the native code, the property including at least one of class information and field information , The function may include a method.

상기 어플리케이션은 안드로이드 어플리케이션과 자바 어플리케이션을 포함할 수 있다.The application may include an Android application and a Java application.

본 발명의 실시예들에 따르면, 안드로이드 어플리케이션과 같은 어플리케이션의 바이트코드와 네이티브코드 간의 상호 의존성에 기반하여 어플리케이션 위변조를 방지할 수 있다.According to embodiments of the present invention, it is possible to prevent forgery of applications based on interdependencies between the bytecode and native code of an application such as an Android application.

즉, 본 발명의 실시예들에 따르면 무결성 검증과정을 통해, 공격자는 바이트코드를 수정하거나 이해하기가 어려워지게 되며, 정확한 이해나 수정을 위해서는 네이티브코드를 분석해야 하지만, 상호 의존성 때문에 수정된 바이트코드 위에서 네이티브코드 분석이 어렵게 된다. 또한 무결성으로, 인해 난독화 및 보호기법을 분석하는 것도 어려워지게 된다.That is, according to the embodiments of the present invention, it is difficult for the attacker to modify or understand the bytecode through the integrity verification process. For correct understanding or correction, native code must be analyzed. However, Native code analysis above becomes difficult. Integrity also makes it difficult to analyze obfuscation and protection techniques.

이와 같이, 본 발명의 실시예들은 클래스의 특수 메소드를 네이티브코드로 작성할 수 있도록 디자인되어 있는 안드로이드 어플리케이션의 네이티브코드에서는 바이트코드의 무결성을 바이트코드에서는 네이티브코드의 무결성을 검증하는 식으로, 상호 의존성을 두어 쉽게 무결성 검증을 우회(또는 코드를 수정)하지 못하도록 할 수 있다.As described above, embodiments of the present invention are designed to write special methods of classes into native code. In the native code of the Android application, the integrity of the bytecode is verified by the byte code, and the integrity of the native code is verified. This makes it easier to bypass bypass integrity verification (or modify code).

이러한 본 발명은 안드로이드 어플리케이션 및 바이트코드와 네이티브코드가 혼합되어 사용되는 어플리케이션에 적용함으로써, 코드 위변조를 방지할 수 있고, 나아가 코드 무결성 검사를 수행할 수도 있다.The present invention can be applied to an application in which an Android application, a bytecode, and a native code are mixed and used, thereby preventing code forgery and further performing code integrity checking.

도 1은 본 발명의 일 실시예에 따른 어플리케이션 위변조 방지 방법에 대한 동작 흐름도를 나타낸 것이다.
도 2는 원본 바이트코드에 상호 의존성을 부여하는 과정에 대한 일 예시도를 나타낸 것이다.
도 3은 원본 바이트코드에 상호 의존성을 부여하는 과정에 대한 다른 일 예시도를 나타낸 것이다.
도 4는 본 발명의 일 실시예에 따른 어플리케이션 위변조 방지 장치에 대 한 구성을 나타낸 것이다.
FIG. 1 is a flowchart illustrating an operation for a method for preventing forgery of an application according to an embodiment of the present invention.
FIG. 2 illustrates an example of a process of assigning an interdependency to a source byte code.
FIG. 3 shows another example of a process of assigning an interdependency to a source byte code.
4 is a block diagram of an apparatus for forging an application according to an embodiment of the present invention.

이하, 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 또한, 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.Hereinafter, embodiments according to the present invention will be described in detail with reference to the accompanying drawings. However, the present invention is not limited to or limited by the embodiments. In addition, the same reference numerals shown in the drawings denote the same members.

본 발명의 실시예들은, 안드로이드 어플리케이션과 자바 어플리케이션을 포함하는 네이티브 코드를 부분적으로 사용할 수 있는 모든 어플리케이션에 대하여, 바이트코드와 네이티브코드 간의 상호 의존성에 기반하여 어플리케이션 위변조를 방지하는 것을 그 요지로 한다.Embodiments of the present invention are intended to prevent application forgery and falsification based on interdependencies between byte code and native code for all applications that can partially use native code including Android applications and Java applications.

도 1은 본 발명의 일 실시예에 따른 어플리케이션 위변조 방지 방법에 대한 동작 흐름도를 나타낸 것이다.FIG. 1 is a flowchart illustrating an operation for a method for preventing forgery of an application according to an embodiment of the present invention.

도 1을 참조하면, 본 발명의 일 실시예에 따른 어플리케이션 위변조 방지 방법은 어플리케이션 또는 어플리케이션 패키지가 수신되면 수신된 어플리케이션으로부터 바이트코드 예를 들어, DEX 파일을 추출하고, 바이트코드를 구성하는 주요 구성들 중 일부 구성을 네이티브코드로 구현한다(S110, S120).Referring to FIG. 1, an application forgery prevention method according to an embodiment of the present invention extracts a byte code, for example, a DEX file from a received application when an application or an application package is received, (S110, S120).

여기서, 바이트코드를 구성하는 주요 구성들은 메소드와 같은 함수를 포함하는 기능, 클래스 정보와 필드 정보 그리고 특정 시점의 값 중 적어도 하나를 포함하는 특성 그리고 변수 등을 포함할 수 있다. 물론, 본 발명에서의 주요 구성들은 상술한 구성으로 한정되지 않으며 바이트코드를 구성하는 구성들 중 본 발명의 목적에 해당하는 구성들을 모두 포함할 수 있다.Here, the main constituent components of the bytecode may include a function including a function such as a method, a property including at least one of class information and field information, and a specific time value, and a variable. Of course, the main constituent elements of the present invention are not limited to the above-described constituent elements, but may include all the constituent elements of the present invention.

그리고, 네이티브코드로 구현하고자 하는 일부 구성은 바이트코드를 구성하는 주요 구성들 중 핵심 구성 예를 들어 핵심 메소드를 포함할 수 있다.In addition, some of the configurations to be implemented by the native code may include a core configuration, for example, core methods among the main constituent components of the bytecode.

단계 S120에 의해 바이트코드의 주요 구성들 중 일부 구성이 네이티브코드로 구현되면 어플리케이션의 바이트코드와 네이티브코드 간의 상호 의존성을 생성하고, 생성된 상호 의존성에 기초하여 해당 어플리케이션의 위변조를 방지할 수 있다(S130, S140).If some of the main components of the bytecode are implemented in native code in step S120, an interdependency between the bytecode of the application and the native code can be generated and the forgery and falsification of the application can be prevented based on the generated interdependency S130, S140).

여기서, 단계 S130은 주요 구성들 중 메소드를 포함하는 기능을 네이티브코드로 이전하여 구현함으로써, 바이트코드와 네이티브코드 간의 상호 의존성을 생성할 수도 있고, 네이티브코드에서 바이트코드의 특성, 변수 및 기능 중 적어도 하나를 이용하여 바이트코드와 네이티브코드 간의 상호 의존성을 생성할 수도 있다.Here, in step S130, the function including the method among the main components is migrated to the native code to implement the interdependency between the bytecode and the native code. At least one of the characteristics, variables, and functions of the bytecode in the native code You can also use one to create interdependencies between bytecode and native code.

이 때, 단계 S140은 일부 구성이 구현된 네이티브코드에 미리 설정된 난독화 기법 또는 보호 기법을 적용시킴으로써, 네이티브코드를 완벽히 이해하기 전까지는 바이트코드를 부분적으로 이해하지도 수정하지도 못하게 된다.In this case, by applying the obfuscation technique or the protection technique previously set to the native code in which some configurations are implemented, it is not possible to partially understand or modify the bytecode until the native code is completely understood.

단계 S130과 S140의 과정을 통해 바이트코드의 일부 구성을 네이티브코드로 구현한 후 바이트코드와 네이티브코드 간 상호 의존성을 생성하고, 이후 네이티브코드에 난독화 기법 또는 보호 기법을 적용시킨 후 본 발명이 적용된 어플리케이션을 리패키지함으로써, 위변조 탐지 및 방어 기법이 적용된 어플리케이션을 생성할 수 있다.In step S130 and step S140, a part of the bytecode is implemented as native code, and then an interdependency between the bytecode and the native code is generated. After the obfuscation technique or the protection technique is applied to the native code, By repackaging an application, you can create an application that is based on forgery detection and defense techniques.

이와 같이, 본 발명은 네이티브코드와 바이트코드 간의 상호 의존성을 높이는 방법을 사용함으로써, 기존 무결성 검사의 취약점을 극복할 수 있다. 예컨대, 본 발명은 바이트코드의 핵심 메소드를 네이티브코드로 구현함으로써, 바이트코드를 이해하기 위해서는 네이티브코드를 알아야 하고, 해당 네이티브코드는 실행될 때, 바이트코드의 메소드를 이용하거나 바이트코드의 특성(또는 그 시점의 변수 값 등)을 확인한다. 이와 같은 경우 네이티브코드를 이해하기 위해서는 바이트코드를 알아야 하며, 정상적으로 실행되기 위해서는 네이티브코드가 정의하는 바이트코드가 필요하게 된다.As described above, the present invention can overcome the vulnerability of the existing integrity check by using a method of increasing the interdependence between the native code and the bytecode. For example, the present invention implements the core method of the bytecode in native code, so that it is necessary to know the native code in order to understand the bytecode. When the native code is executed, the method of the bytecode is used, Variable value of the time point, etc.). In such a case, it is necessary to know the bytecode in order to understand the native code, and the bytecode defined by the native code is required to be executed normally.

네이티브코드와 바이트코드 간의 의존성이 높아지게 되면, 이 둘을 한 번에 모두 바꾸지 않는 이상 정상적으로 이를 수정할 수 없게 된다. 여기서 네이티브코드에 난독화 기법을 적용하게 될 경우, 네이티브코드를 완벽히 이해하기 전까지는 바이트코드를 부분적으로 이해하지도 수정하지도 못하게 된다.If the dependency between native code and bytecode increases, you will not be able to fix it normally unless you replace them both at once. If you use obfuscation techniques in your native code, you will not even partially understand or modify the bytecode until you fully understand the native code.

상술한 바와 같이, 본 발명에 다른 방법은 바이트코드와 네이티브코드가 서로의 기능을 이용하고 서로의 특성을 확인하는 식으로 의존성을 높이며, 네이티브코드에 무결성 검사를 넣고, 네이티브코드를 난독화한다. 결과적으로 분석가(또는 공격자)는 이 둘을 각각 분석하거나 수정할 수 없으며, 이의 수정을 위해서는 네이티브코드를 분석(또는 역공학)해야 한다. 즉, 무결성의 안전은 네이티브코드의 복잡성에 달리게 된다.As described above, in the method according to the present invention, the bytecode and the native code utilize each other's functions and confirm the characteristics of each other, thereby increasing the dependency, inserting the integrity check into the native code, and obfuscating the native code. As a result, the analyst (or attacker) can not analyze or modify the two separately, and the native code must be analyzed (or reverse engineered) for its modification. That is, the security of integrity runs into the complexity of native code.

따라서, 본 발명에 따른 방법은 안드로이드 어플리케이션과 같은 어플리케이션의 바이트코드와 네이티브코드 간의 상호 의존성에 기반하여 어플리케이션 위변조를 방지할 수 있다.Therefore, the method according to the present invention can prevent forgery of applications based on the interdependency between the bytecode and native code of an application such as an Android application.

즉, 본 발명의 실시예들에 따르면 무결성 검증과정을 통해, 공격자는 바이트코드를 수정하거나 이해하기가 어려워지게 되며, 정확한 이해나 수정을 위해서는 네이티브코드를 분석해야 하지만, 상호 의존성 때문에 수정된 바이트코드 위에서 네이티브코드 분석이 어렵게 된다. 또한 무결성으로, 인해 난독화 및 보호기법을 분석하는 것도 어려워지게 된다.That is, according to the embodiments of the present invention, it is difficult for the attacker to modify or understand the bytecode through the integrity verification process. For correct understanding or correction, native code must be analyzed. However, Native code analysis above becomes difficult. Integrity also makes it difficult to analyze obfuscation and protection techniques.

이와 같이, 본 발명의 실시예들은 클래스의 특수 메소드를 네이티브코드로 작성할 수 있도록 디자인되어 있는 안드로이드 어플리케이션의 네이티브코드에서는 바이트코드의 무결성을 바이트코드에서는 네이티브코드의 무결성을 검증하는 식으로, 상호 의존성을 두어 쉽게 무결성 검증을 우회(또는 코드를 수정)하지 못하도록 할 수 있다.As described above, embodiments of the present invention are designed to write special methods of classes into native code. In the native code of the Android application, the integrity of the bytecode is verified by the byte code, and the integrity of the native code is verified. This makes it easier to bypass bypass integrity verification (or modify code).

또한, 본 발명은 안드로이드 어플리케이션 및 바이트코드와 네이티브코드가 혼합되어 사용되는 어플리케이션에 적용함으로써, 코드 위변조를 방지할 수 있고, 나아가 코드 무결성 검사를 수행할 수도 있다.Further, the present invention can be applied to an application in which an Android application, a bytecode, and a native code are mixed and used, thereby preventing code forgery and further performing code integrity checking.

도 2는 원본 바이트코드에 상호 의존성을 부여하는 과정에 대한 일 예시도를 나타낸 것으로, 도 2에 도시된 바와 같이, 어플리케이션에서 바이트코드를 추출한 후 바이트코드를 구성하는 주요 구성들 즉, 기능, 특성, 변수 중 일부 구성 여기서는 제1 기능(210)과 제2 기능(220)을 네이티브코드로 구현함으로써, 바이트코드와 네이티브코드 간에 상호 의존성을 생성한다.FIG. 2 shows an example of a process of assigning an interdependency to a source byte code. As shown in FIG. 2, after extracting a byte code from an application, the main components of the byte code, Some of the Variables Here, the first function 210 and the second function 220 are implemented in native code, thereby creating interdependencies between the bytecode and the native code.

이 때, 네이티브코드로 구현된 제1 기능(210)은 바이트코드로 구현된 특성과 상호 의존성을 생성할 수 있고, 네이티브코드로 구현된 제2 기능(220)은 바이트코드로 구현된 변수와 상호 의존성을 생성할 수 있다. 물론, 생성되는 바이트코드와 네이티브코드 간의 의존성은 어플리케이션의 주요 구성들 간의 관계에 의해 결정될 수 있다.In this case, the first function 210 implemented in native code can generate characteristics and interdependencies implemented in byte code, and the second function 220 implemented in native code can generate variables Dependencies can be created. Of course, the dependency between the generated bytecode and native code can be determined by the relationship between the major components of the application.

이와 같이 바이트코드와 네이티브코드 간에 상호 의존성을 생성되면 제1 기능과 제2 기능이 구현된 네이티브코드에 난독화 기법 또는 보호기법을 적용함으로써, 난독화된 네이티브코드를 만들고, 이를 통해 네이티브코드를 완벽히 이해할 수 없게 만든다.When interdependency between byte code and native code is generated as described above, obfuscated native code is created by applying obfuscation technique or protection technique to the native code in which the first function and the second function are implemented, It makes it incomprehensible.

도 3은 원본 바이트코드에 상호 의존성을 부여하는 과정에 대한 다른 일 예시도를 나타낸 것으로, 도 3에 도시된 바와 같이, 어플리케이션에서 바이트코드를 추출한 후 바이트코드를 구성하는 주요 구성들 즉, 제1 기능, 제2 기능, 제3 기능 및 제4 기능 중 제2 기능(310)과 제4 기능(320)을 네이티브코드로 구현함으로써, 바이트코드와 네이티브코드 간에 상호 의존성을 생성한다.FIG. 3 shows another example of a process of assigning an interdependence to a source byte code. As shown in FIG. 3, after extracting a byte code in an application, the main components constituting the byte code, that is, The second function 310 and the fourth function 320 of the second function, the second function, the third function, and the fourth function are implemented in native code, thereby generating an interdependency between the bytecode and the native code.

이 때, 네이티브코드로 구현된 제2 기능(310)은 바이트코드로 구현된 제1 기능과 상호 의존성을 생성할 수 있고, 네이티브코드로 구현된 제4 기능(320)은 바이트코드로 구현된 제3 기능과 상호 의존성을 생성할 수 있다. 물론, 생성되는 바이트코드와 네이티브코드 간의 의존성은 어플리케이션의 주요 구성들 간의 관계에 의해 결정될 수 있다.At this time, the second function 310 implemented with native code can generate interdependency with the first function implemented with byte code, and the fourth function 320 implemented with native code can generate interdependency with the first function implemented with byte code 3 functions and interdependencies can be created. Of course, the dependency between the generated bytecode and native code can be determined by the relationship between the major components of the application.

이와 같이 바이트코드와 네이티브코드 간에 상호 의존성을 생성되면 제2 기능과 제4 기능이 구현된 네이티브코드에 난독화 기법 또는 보호기법을 적용함으로써, 난독화된 네이티브코드를 만들고, 이를 통해 네이티브코드를 완벽히 이해할 수 없게 만든다.When interdependency between byte code and native code is generated as described above, obfuscated native code is created by applying obfuscation technique or protection technique to the native code in which the second function and the fourth function are implemented, It makes it incomprehensible.

비록, 본 발명의 상세한 설명에서 바이트코드와 네이티브코드 간의 상호 의존성이 기능, 특성, 변수 등으로 생성되는 것으로 설명하였지만, 이에 한정되지 않으며 네이티브코드의 해시코드와 네이티브코드의 변수 또는 기능 간에도 상호 의존성이 생성될 수도 있다.Although, in the description of the present invention, the interdependency between the bytecode and the native code is described as being generated by a function, a characteristic, a variable, and the like, the present invention is not limited to this and the interdependency between the hash code of the native code and the variable or function of the native code .

도 4는 본 발명의 일 실시예에 따른 어플리케이션 위변조 방지 장치에 대 한 구성을 나타낸 것으로, 상술한 도 1 내지 도 3의 방법에 대한 동작을 수행하는 장치에 대한 구성을 나타낸 것이다.FIG. 4 is a block diagram of an apparatus for forging an application according to an embodiment of the present invention. FIG. 4 is a block diagram of an apparatus for performing operations according to the methods of FIGS.

도 4를 참조하면, 본 발명의 실시예에 따른 어플리케이션 위변조 방지 장치(400)는 추출부(410), 생성부(420) 및 방지부(430)를 포함한다.4, an application forgery prevention apparatus 400 according to an embodiment of the present invention includes an extraction unit 410, a generation unit 420, and a prevention unit 430. Referring to FIG.

추출부(410)는 어플리케이션 또는 어플리케이션 패키지가 수신되면 수신된 어플리케이션으로부터 바이트코드 예를 들어, DEX 파일을 추출한다.The extraction unit 410 extracts a bytecode, for example, a DEX file from the received application when an application or an application package is received.

생성부(420)는 바이트코드를 구성하는 주요 구성들 중 일부 구성을 네이티브코드로 구현하고, 어플리케이션의 바이트코드와 네이티브코드 간의 상호 의존성을 생성한다.The generation unit 420 implements some of the main components of the bytecode in native code, and generates interdependencies between the bytecode and the native code of the application.

여기서, 생성부(420)는 메소드와 같은 함수를 포함하는 기능, 클래스 정보와 필드 정보 그리고 특정 시점의 값 중 적어도 하나를 포함하는 특성 그리고 변수 등을 포함하는 주요 구성들 중에서 일부 구성을 네이티브코드로 구현함으로써, 바이트코드와 네이티브코드 간의 상호 의존성을 생성할 수 있다.Here, the generator 420 may include a function including a function such as a method, a property including at least one of class information and field information, a value at a specific time point, By implementing this, you can create interdependencies between byte code and native code.

일 예로, 생성부(420)는 주요 구성들 중 메소드를 포함하는 기능을 네이티브코드로 이전하여 구현함으로써, 바이트코드와 네이티브코드 간의 상호 의존성을 생성할 수도 있다.For example, the generation unit 420 may transfer the functions including the method among the major components to the native code, thereby creating an interdependency between the bytecode and the native code.

다른 일 예로, 생성부(420)는 네이티브코드에서 바이트코드의 특성, 변수 및 기능 중 적어도 하나를 이용하여 바이트코드와 네이티브코드 간의 상호 의존성을 생성할 수도 있다.In another example, the generator 420 may generate an interdependency between the bytecode and the native code using at least one of the characteristics, variables, and functions of the bytecode in the native code.

방지부(430)는 생성된 상호 의존성에 기초하여 해당 어플리케이션의 위변조를 방지한다.The prevention unit 430 prevents forgery and falsification of the application based on the generated interdependency.

이 때, 방지부(430)는 일부 구성이 구현된 네이티브코드에 미리 설정된 난독화 기법 또는 보호 기법을 적용시킴으로써, 네이티브코드를 완벽히 이해하기 전까지는 바이트코드를 부분적으로 이해하지도 수정하지도 못하게 할 수도 있다.In this case, the preventive unit 430 may prevent or partially correct the bytecode until the native code is completely understood, by applying a predetermined obfuscation technique or protection scheme to the native code in which some configuration is implemented .

나아가, 방지부(430)는 네이티브코드에 난독화 기법 또는 보호 기법을 적용시킨 후 본 발명이 적용된 어플리케이션을 리패키지함으로써, 위변조 탐지 및 방어 기법이 적용된 어플리케이션을 생성할 수도 있다.Furthermore, the prevention unit 430 may apply the obfuscation technique or the protection technique to the native code, and then repackage the application to which the present invention is applied, thereby creating an application to which the forgery-fugure detection and defense technique is applied.

비록, 도 4의 장치에서 그 설명이 생략되었더라도 도 4의 장치는 도 1 내지 도 3에서 설명한 내용을 모두 포함할 수 있으며, 어플리케이션 위변조를 방지할 수 있는 모든 기능을 수행할 수 있다는 것은 이 기술 분야에 종사하는 당업자에게 있어서 자명하다.Although the description is omitted in the apparatus of FIG. 4, the apparatus of FIG. 4 may include all of the contents described in FIG. 1 to FIG. 3, Lt; / RTI > to those skilled in the art.

이상에서 설명된 시스템 또는 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 시스템, 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The system or apparatus described above may be implemented as a hardware component, a software component, and / or a combination of hardware components and software components. For example, the systems, devices, and components described in the embodiments may be implemented in various forms such as, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable array ), A programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For ease of understanding, the processing apparatus may be described as being used singly, but those skilled in the art will recognize that the processing apparatus may have a plurality of processing elements and / As shown in FIG. For example, the processing unit may comprise a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as a parallel processor.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more of the foregoing, and may be configured to configure the processing device to operate as desired or to process it collectively or collectively Device can be commanded. The software and / or data may be in the form of any type of machine, component, physical device, virtual equipment, computer storage media, or device , Or may be permanently or temporarily embodied in a transmitted signal wave. The software may be distributed over a networked computer system and stored or executed in a distributed manner. The software and data may be stored on one or more computer readable recording media.

실시예들에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to embodiments may be implemented in the form of a program instruction that may be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions to be recorded on the medium may be those specially designed and configured for the embodiments or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. For example, it is to be understood that the techniques described may be performed in a different order than the described methods, and / or that components of the described systems, structures, devices, circuits, Lt; / RTI > or equivalents, even if it is replaced or replaced.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

Claims (10)

어플리케이션의 바이트코드를 추출하는 단계;
상기 추출된 바이트코드를 구성하는 주요 구성들 중 일부 구성을 네이티브코드로 구현하여 상기 바이트코드와 상기 네이티브코드 간의 상호 의존성을 생성하는 단계; 및
상기 생성된 상호 의존성에 기반하여 상기 어플리케이션의 위변조를 방지하는 단계
를 포함하는 어플리케이션 위변조 방지 방법.
Extracting a bytecode of an application;
Generating interdependencies between the bytecode and the native code by implementing some of the major components constituting the extracted bytecode with native code; And
Preventing falsification of the application based on the generated interdependency
And for preventing forgery of the application.
제1항에 있어서,
상기 어플리케이션의 위변조를 방지하는 단계는
상기 네이티브코드에 미리 설정된 난독화 기법 또는 보호 기법을 적용시키는 것을 특징으로 하는 어플리케이션 위변조 방지 방법.
The method according to claim 1,
The step of preventing forgery and falsification of the application
And applying an obfuscation technique or a protection technique set in advance to the native code.
제1항에 있어서,
상기 상호 의존성을 생성하는 단계는
상기 주요 구성들 중 메소드를 포함하는 기능을 상기 네이티브코드로 이전하여 구현함으로써, 상기 바이트코드와 상기 네이티브코드 간의 상호 의존성을 생성하는 것을 특징으로 하는 어플리케이션 위변조 방지 방법.
The method according to claim 1,
The step of generating the interdependency
Wherein a function including a method among the main components is migrated to the native code to generate an interdependency between the bytecode and the native code.
제1항에 있어서,
상기 상호 의존성을 생성하는 단계는
상기 네이티브코드에서 상기 바이트코드의 특성, 변수 및 기능 중 적어도 하나를 이용하여 상기 바이트코드와 상기 네이티브코드 간의 상호 의존성을 생성하고,
상기 특성은 클래스 정보와 필드 정보 중 적어도 하나를 포함하며,
상기 기능은 메소드를 포함하는 것을 특징으로 하는 어플리케이션 위변조 방지 방법.
The method according to claim 1,
The step of generating the interdependency
Generating an interdependency between the bytecode and the native code using at least one of the characteristics, variables, and functions of the bytecode in the native code,
Wherein the property includes at least one of class information and field information,
Wherein the function includes a method.
제1항에 있어서,
상기 어플리케이션은
안드로이드 어플리케이션과 자바 어플리케이션을 포함하는 것을 특징으로 하는 어플리케이션 위변조 방지 방법.
The method according to claim 1,
The application
An application forgery prevention method characterized by comprising an Android application and a Java application.
어플리케이션의 바이트코드를 추출하는 추출부;
상기 추출된 바이트코드를 구성하는 주요 구성들 중 일부 구성을 네이티브코드로 구현하여 상기 바이트코드와 상기 네이티브코드 간의 상호 의존성을 생성하는 생성부; 및
상기 생성된 상호 의존성에 기반하여 상기 어플리케이션의 위변조를 방지하는 방지부
를 포함하는 어플리케이션 위변조 방지 장치.
An extracting unit for extracting a byte code of an application;
A generating unit for implementing some of the major components constituting the extracted bytecode with native code to generate an interdependency between the bytecode and the native code; And
And for preventing forgery and falsification of the application based on the generated interdependency,
And an application forgery prevention device.
제6항에 있어서,
상기 방지부는
상기 네이티브코드에 미리 설정된 난독화 기법 또는 보호 기법을 적용시키는 것을 특징으로 하는 어플리케이션 위변조 방지 장치.
The method according to claim 6,
The prevention part
Wherein the obfuscation method or the protection method is applied to the native code.
제6항에 있어서,
상기 생성부는
상기 주요 구성들 중 메소드를 포함하는 기능을 상기 네이티브코드로 이전하여 구현함으로써, 상기 바이트코드와 상기 네이티브코드 간의 상호 의존성을 생성하는 것을 특징으로 하는 어플리케이션 위변조 방지 장치.
The method according to claim 6,
The generating unit
Wherein a function including a method among the main constituent elements is transferred to the native code to generate an interdependency between the bytecode and the native code.
제6항에 있어서,
상기 생성부는
상기 네이티브코드에서 상기 바이트코드의 특성, 변수 및 기능 중 적어도 하나를 이용하여 상기 바이트코드와 상기 네이티브코드 간의 상호 의존성을 생성하고,
상기 특성은 클래스 정보와 필드 정보 중 적어도 하나를 포함하며,
상기 기능은 메소드를 포함하는 것을 특징으로 하는 어플리케이션 위변조 방지 장치.
The method according to claim 6,
The generating unit
Generating an interdependency between the bytecode and the native code using at least one of the characteristics, variables, and functions of the bytecode in the native code,
Wherein the property includes at least one of class information and field information,
Wherein the function includes a method.
제6항에 있어서,
상기 어플리케이션은
안드로이드 어플리케이션과 자바 어플리케이션을 포함하는 것을 특징으로 하는 어플리케이션 위변조 방지 장치.
The method according to claim 6,
The application
An application forgery prevention device characterized by comprising an Android application and a Java application.
KR1020170019760A 2017-02-14 2017-02-14 Method for preventing falsification of application based on interdependence between byte code and native code and apparatus therefor KR20180093529A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170019760A KR20180093529A (en) 2017-02-14 2017-02-14 Method for preventing falsification of application based on interdependence between byte code and native code and apparatus therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170019760A KR20180093529A (en) 2017-02-14 2017-02-14 Method for preventing falsification of application based on interdependence between byte code and native code and apparatus therefor

Publications (1)

Publication Number Publication Date
KR20180093529A true KR20180093529A (en) 2018-08-22

Family

ID=63453184

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170019760A KR20180093529A (en) 2017-02-14 2017-02-14 Method for preventing falsification of application based on interdependence between byte code and native code and apparatus therefor

Country Status (1)

Country Link
KR (1) KR20180093529A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102615798B1 (en) * 2023-06-14 2023-12-20 주식회사 스틸리언 Apparatus and method for preventing screen capture and mirroring using text field protection properties

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102615798B1 (en) * 2023-06-14 2023-12-20 주식회사 스틸리언 Apparatus and method for preventing screen capture and mirroring using text field protection properties

Similar Documents

Publication Publication Date Title
US9195476B2 (en) System and method for aggressive self-modification in dynamic function call systems
EP3779745B1 (en) Code pointer authentication for hardware flow control
KR101503785B1 (en) Method And Apparatus For Protecting Dynamic Library
CN107077562B (en) Computer-implemented method and system for dynamically controlling code execution
JP7154365B2 (en) Methods for securing software code
US20170024230A1 (en) Method, apparatus, and computer-readable medium for ofuscating execution of an application on a virtual machine
US9594915B2 (en) Information processing apparatus
CN107430650B (en) Securing computer programs against reverse engineering
US20150095653A1 (en) Method and apparatus of creating application package, method and apparatus of executing application package, and recording medium storing application package
KR20120121973A (en) Computing device having a function of DLL injection and method for DLL injection
US11269988B2 (en) Automated software application verification system
Lim et al. An Android Application Protection Scheme against Dynamic Reverse Engineering Attacks.
Hawkins et al. Dynamic canary randomization for improved software security
KR101428915B1 (en) Feedback based application rewriting framework method and system for android security
US11409886B2 (en) Program verification system, method, and program
KR101638257B1 (en) Method for protecting source code of application and apparatus for performing the method
CN107209815B (en) Method for code obfuscation using return-oriented programming
KR20180093529A (en) Method for preventing falsification of application based on interdependence between byte code and native code and apparatus therefor
US11256786B2 (en) Method to secure a software code
US20120278883A1 (en) Method and System for Protecting a Computing System
KR102358101B1 (en) A method for applying security program
KR102243378B1 (en) Method and apparatus for ensuring integrity of java library
KR101480244B1 (en) Method for detecting malicious application using signature on class basis and device enabling the method
KR102128658B1 (en) Method for compressing executable file using hot patching technique and apparatus therefor

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application