WO2016078130A1 - Dynamic loading method for preventing reverse of apk file - Google Patents

Dynamic loading method for preventing reverse of apk file Download PDF

Info

Publication number
WO2016078130A1
WO2016078130A1 PCT/CN2014/092643 CN2014092643W WO2016078130A1 WO 2016078130 A1 WO2016078130 A1 WO 2016078130A1 CN 2014092643 W CN2014092643 W CN 2014092643W WO 2016078130 A1 WO2016078130 A1 WO 2016078130A1
Authority
WO
WIPO (PCT)
Prior art keywords
file
classes
dex
apk
reverse
Prior art date
Application number
PCT/CN2014/092643
Other languages
French (fr)
Chinese (zh)
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 WO2016078130A1 publication Critical patent/WO2016078130A1/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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Definitions

  • the present invention relates to the field of mobile terminal application security, and in particular, to a dynamic loading method of an anti-reverse APK file.
  • APK short for Android PacKage
  • APK app is the Android installation package. You can install the APK file (ie APK app) directly to the Android emulator or Android device terminal device (such as Android smartphone).
  • the APK file is actually in zip format, but the suffix name is modified to apk. On the windows system, you can unzip it directly through the decompression tool (such as winrar software).
  • the decompression tool such as winrar software
  • the final stage of Android application development is to package the signature, generate APK file for users to download and install, package and package into APK file as shown in Figure 1. It can be seen that if you can reverse the Dex file and AndroidManifest.XML, you can restore the source code of the application APK file. If you add malicious code based on the source code, re-sign and package, you can generate malicious code. APK file.
  • the present invention provides a dynamic loading method for the anti-reverse APK file, which solves the problem that the APK file (ie, the APK application) is easy to be decompiled and displayed, and is easy to be leaked. Tripartite application hardening to maximize the security of your APK app.
  • the invention adopts the following technical solutions: a dynamic loading method of the anti-reverse APK file, which comprises the steps of: loading the first Classes.dex file, calling the Entry.so file, and decrypting the Encrypt'.so file by using the Entry.so file. Processing, get the decrypted Encrypt.so file;
  • the second Classes.dex file is decrypted by using the Entry.so file to obtain the original Classes.dex file in the APK file before the reinforcement processing;
  • the first Classes.dex file only contains the file header structure of the original Classes.dex file
  • the second Classes.dex file and the Encrypt'.so file are stored under the file directory res
  • the Entry.so file is stored in the file.
  • the anti-reverse APK file is formed by the first Classes.dex file, the AndroidManifest'.xml file, the file directory res, the file directory libs, and the resources.ars file.
  • the integrity check of the original Classes.dex file obtained by decrypting is performed by using the field information contained in the header structure of the first Classes.dex file.
  • the specific loading of the original Classes.dex file includes: creating a new DexClassLoader object with the source class Classes.dex, and replacing it with the attribute mClassLoader in the default loading class of the system.
  • the step of dynamically loading the source code into the memory specifically includes:
  • the app Since the component Provider is registered by the system before the onCreate method, the app is bound to the context of the Provider in the source program, and then the system-level onCreate method is started.
  • the present invention has the following beneficial effects:
  • the APK files that are reinforced by the above-mentioned hardening methods are reverse-compiled using the most popular Android reverse tool dex2jar and apktool respectively. Since the reversed compiled first Classes.dex file does not have source code, the main function of implementing an APK file is implemented. The source code is still stored in the original Classes.dex file, but the original Classes.dex file is encrypted into the second Classes.dex file and stored in the specified file directory. It is difficult to find the decrypted first by using the reverse tool dex2jar and apktool.
  • the second Classes.dex file even if the second Classes.dex file is found, cannot be decrypted because the Encrypt'.so file for decrypting the second Classes.dex file cannot be found, thereby effectively preventing the APK file from being reversely modified and leaking. It can be seen that after the reinforcement method mentioned in the present application is used for reinforcement, the encryption of the source code of the APK file is realized, and the decompilation of the existing Android reverse tool can be avoided, thereby greatly improving the security of the APK file. .
  • FIG. 1 is a schematic diagram of a package and package process of an APK file.
  • FIG. 2 is a schematic flow chart of a method for reinforcing an anti-reverse of an APK file of the present invention.
  • Figure 3 is a comparison diagram of the file directory structure before and after the APK file is hardened.
  • FIG. 4 is a schematic diagram of a process of dynamically loading an APK file after reinforcement.
  • the classes.dex file is a java bytecode file generated after the java source code is compiled. However, since the dalvik virtual machine used by Android is incompatible with the standard java virtual machine, the dex file is different from the class file in terms of file structure and opcode.
  • the classes.dex file consists of three parts: the file header, the index area, and the data area. Among them, the structure of the header part of the classes.dex file is defined as shown in Table 2 below.
  • the implementation of the Dalvik virtual machine is located in the dalvik/ directory, where dalvik/vm is the implementation part of the virtual machine and will be compiled into libdvm.so; and dalvik/libdex will be compiled into the libdex.
  • dalvik/dexdump is a decompile tool for .dex files; virtual machine executables are located in dalvik/dalvikvm and will be compiled into dalvikvm executables.
  • the Dalvik virtual machine When running the APK file on the Android platform, first load the decompressed APK file and verify the integrity by the Dalvik virtual machine (in the Android source code, the Dalvik virtual machine is located in the dalvik/ directory), extract the Classes.dex file, and then execute the classes. The bytecode in the dex file.
  • the Dalvik virtual machine When executing the classes.dex file, the Dalvik virtual machine first checks the checksum field and the siganature field of the header portion of the file to ensure that the classes.dex file is not corrupted or tampered, and then based on the offset of other structures defined in the file header. And length information for addressing resolution and execution. Finally, the dalvik virtual machine reads the instructions and data from the classes.dex file, and then runs the program logic of the APK file.
  • a preferred embodiment of the present invention includes the following implementation steps:
  • Step S11 Copy the original Classes.dex file in the APK file to be hardened, delete the function source code of the APK file in the copied Classes.dex file, and save the first Classes.dex file. Therefore, the first Classes.dex file only retains the file header structure of the original Classes.dex file, and does not contain the function code of the APK file.
  • Step S12 Encrypt the original Classes.dex file with a preset encryption and decryption algorithm to obtain a second Classes.dex file. Therefore, the main function code of the APK file is still in the second Classes.dex file, hiding and protecting the second Classes.dex file is the hardening of the APK file. It is also an important part of preventing APK files from being reversed.
  • Step S13 Generate an Encrypt.so file for decrypting the second Classes.dex file, and perform secondary encryption on the Encrypt.so file to obtain an Encrypt'.so file.
  • Step S14 Generate an Entry.so file, which is an entry file when the APK file is run, and decrypts the Encrypt'.so file into an Encrypt.so file by calling the native method in the entry file Entry.so.
  • Step S15 Point the source entry of the original AndroidManifest.xml file in the APK file to be hardened, and change the file to point to the first Classes.dex file, and the modified file is recorded as the AndroidManifest'.xml file.
  • Step S16 storing the second Classes.dex file and the Encrypt'.so file in the file directory res, and storing the Entry.so file in the file directory libs, to the first Classes.dex file and the AndroidManifest'.xml file.
  • the file directory res, the file directory libs, and the resources.ars file are packaged and packaged, and then the signature file is used to sign the package file, which completes the reinforcement of the APK file. Specifically, a comparison of the file directory structure of the APK file before and after the reinforcement is shown in FIG. 3 .
  • the loading operation process includes the following steps:
  • Step S21 According to the source program entry point in the AndroidManifest'.xml file, when the reinforced APK file is running, the first Classes.dex file is first loaded by the Dalvik virtual machine.
  • Step S22 The Entry.so file is called by the first Classes.dex file, and the Encrypt'.so file stored in the file directory res is decrypted by using the Entry.so file to obtain the decrypted Encrypt.so file.
  • Step S23 Decrypt the second Classes.dex file stored in the file directory res according to the preset encryption and decryption algorithm by using the Entry.so file, thereby obtaining the original Classes.dex file in the APK file before the reinforcement processing.
  • Step S24 using the field information included in the file header structure of the first Classes.dex file,
  • the original Classes.dex file obtained by the decryption is checked for integrity, and after the integrity check, the process proceeds to step S26.
  • Step S25 The Dalvik virtual machine dynamically loads the original Classes.dex file according to the Android class dynamic loading technology (DexClassLoader program).
  • the specific process is to create a new DexClassLoader object with the source class Classes.dex, and replace it with the property mClassLoader in the default loading class of the system.
  • Step S26 Find the physical address of the source code storing the function of the APK file according to the data_size field and the data_off field information in the file header structure in the original Classes.dex file, and dynamically load the source code into the memory. Specifically, using the custom onCreate method, the physical address of the source code is found through the meta-data attribute in the application in the AndroidManifest, thereby replacing the Application of the source program; the existing "first Application file" is called from the system.
  • Remove the collection, and create a new Application object app bind the properties of the original Classes.dex file to the app, and then add the app to the system call collection; finally, because the component Provider is registered by the system before the onCreate method, Bind the app to the context of the Provider in the source program, and then start the system-level onCreate method.
  • step S27 the decrypted original Classes.dex file is deleted from the physical memory of the system to prevent the attacker from stealing.
  • the APK files that are reinforced by the above-mentioned hardening methods are reverse-compiled using the most popular Android reverse tool dex2jar and apktool respectively. Since the reversed compiled first Classes.dex file does not have source code, the main function of implementing an APK file is implemented. The source code is still stored in the original Classes.dex file, but the original Classes.dex file is encrypted into the second Classes.dex file and stored in the specified file directory. It is difficult to find the decrypted first by using the reverse tool dex2jar and apktool.
  • the second Classes.dex file even if the second Classes.dex file is found, cannot be decrypted because the Encrypt'.so file for decrypting the second Classes.dex file cannot be found, thereby effectively preventing the APK file from being reversely modified and leaking. It can be seen that the reinforcement mentioned in this application is utilized. After the method is hardened, the source code of the APK file is encrypted and hidden, which can avoid the decompilation of the existing Android reverse tool, thereby greatly improving the security of the APK file.
  • the invention is applicable to a wide variety of general purpose or special purpose computing system environments or configurations.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

Disclosed is a dynamic loading method for preventing reverse of an APK file. The method comprises the steps of: loading a first Classes.dex file, invoking an Entry.so file, and decrypting an Encrypt'.so file by using the Entry.so file to obtain a decrypted Encrypt.so file; decrypting a second Classes.dex file by using the Entry.so file, to obtain an original Classes.dex file in an APK file before reinforcement processing; dynamically loading the original Classes.dex file, finding a physical address of a source code for storing functions of the APK file, and dynamically loading the source code to a memory; and deleting the decrypted original Classes.dex file from the physical memory. By means of the present invention, decompilation of an existing Android reverse tool can be circumvented, the difficulty in decompilation is increased, and thus the security of the APK file can be greatly improved.

Description

一种防逆向APK文件的动态加载方法Dynamic loading method of anti-reverse APK file
相关申请的交叉引用Cross-reference to related applications
本申请要求2014年11月18日提交的中国专利申请号CN201410663307X的优先权利益,在此通过引用将该优先权文件的全部内容合并至本文中。The present application claims priority to the benefit of the priority of the entire disclosure of the entire disclosure of the entire disclosure of the entire disclosure of the entire disclosure of
技术领域Technical field
本发明涉及移动终端应用安全领域,特别涉及一种防逆向APK文件的动态加载方法。The present invention relates to the field of mobile terminal application security, and in particular, to a dynamic loading method of an anti-reverse APK file.
背景技术Background technique
APK(Android PacKage的缩写)即Android安装包。将APK文件(即APK应用程序)直接传到Android模拟器或Android操作系统的终端设备(比如安卓智能手机)中执行即可安装。APK文件其实是zip格式,但后缀名被修改为apk,在windows系统上可以通过解压缩工具(比如winrar软件)直接解压查看。解压APK文件后,一般的可看到的目录结构如下表1所示:APK (short for Android PacKage) is the Android installation package. You can install the APK file (ie APK app) directly to the Android emulator or Android device terminal device (such as Android smartphone). The APK file is actually in zip format, but the suffix name is modified to apk. On the windows system, you can unzip it directly through the decompression tool (such as winrar software). After extracting the APK file, the general directory structure that can be seen is shown in Table 1 below:
Figure PCTCN2014092643-appb-000001
Figure PCTCN2014092643-appb-000001
表1 Table 1
Android应用程序开发的最后阶段是打包签名,生成APK文件供用户下载安装,打包封装成APK文件如图1所示。由此可以看出,如果能够对Dex文件和AndroidManifest.XML进行逆向,即可还原出应用APK文件的源代码,若在源代码的基础上加入恶意代码,重新签名打包,即可生成携带恶意代码的APK文件。The final stage of Android application development is to package the signature, generate APK file for users to download and install, package and package into APK file as shown in Figure 1. It can be seen that if you can reverse the Dex file and AndroidManifest.XML, you can restore the source code of the application APK file. If you add malicious code based on the source code, re-sign and package, you can generate malicious code. APK file.
随着Android移动终端平台的日益发展,第三方应用程序大量涌现,对第三方应用的盗版和重打包现象日益严重。由于Android平台软件使用的编程语言是Java,而Java源代码编译后的二进制代码极易被反编译,导致其破解难度远小于其他使用编译性语言编写的程序。鉴于Android下APK文件能够很容易的由dex2jar和JD-GUI、JAD等反编译工具反编译为易于阅读的JAVA代码,从而代码中的明文字符串、库函数调用、核心功能函数等都一目了然,使得非法开发者对第三方应用程序的盗版或者核心功能的逆向工程变得更加容易。With the development of Android mobile terminal platforms, third-party applications have emerged in large numbers, and piracy and re-packaging of third-party applications has become increasingly serious. Since the programming language used by the Android platform software is Java, the compiled binary code of the Java source code is extremely easy to be decompiled, which makes the cracking process much less difficult than other programs written in the compiler language. In view of the Android APK file can be easily decompiled by dex2jar and JD-GUI, JAD and other decompilation tools into easy-to-read JAVA code, so that the plaintext strings, library function calls, core function functions, etc. in the code are clear at a glance, so that It is easier for illegal developers to reverse the piracy or core functionality of third-party applications.
发明内容Summary of the invention
为了降低APK文件被逆向的风险,本发明提供了一种一种防逆向APK文件的动态加载方法,解决了APK文件(即APK应用程序)易于被反编译显示并容易泄密的问题,能够使第三方应用程序加固,最大化保护APK应用程序的安全。In order to reduce the risk of the APK file being reversed, the present invention provides a dynamic loading method for the anti-reverse APK file, which solves the problem that the APK file (ie, the APK application) is easy to be decompiled and displayed, and is easy to be leaked. Tripartite application hardening to maximize the security of your APK app.
本发明采用如下技术方案实现:一种防逆向APK文件的动态加载方法,其包括步骤:加载第一Classes.dex文件,调用Entry.so文件,利用Entry.so文件对Encrypt’.so文件进行解密处理,得到解密后的Encrypt.so文件;The invention adopts the following technical solutions: a dynamic loading method of the anti-reverse APK file, which comprises the steps of: loading the first Classes.dex file, calling the Entry.so file, and decrypting the Encrypt'.so file by using the Entry.so file. Processing, get the decrypted Encrypt.so file;
利用Entry.so文件对第二Classes.dex文件进行解密,得到加固处理前的APK文件中的原Classes.dex文件;The second Classes.dex file is decrypted by using the Entry.so file to obtain the original Classes.dex file in the APK file before the reinforcement processing;
对原Classes.dex文件进行动态加载,并找到存放APK文件功能的源代码 的物理地址,将源代码动态加载至内存;Dynamically load the original Classes.dex file and find the source code for storing the APK file function. Physical address, dynamically load source code into memory;
从物理内存上删除解密后的原Classes.dex文件;Delete the decrypted original Classes.dex file from physical memory;
其中,第一Classes.dex文件中仅包含原Classes.dex文件的的文件头部结构,第二Classes.dex文件及Encrypt’.so文件存放在文件目录res之下,Entry.so文件存放在文件目录libs之下,由第一Classes.dex文件、AndroidManifest’.xml文件、文件目录res、文件目录libs及resources.ars文件封装后形成所述防逆向APK文件。The first Classes.dex file only contains the file header structure of the original Classes.dex file, the second Classes.dex file and the Encrypt'.so file are stored under the file directory res, and the Entry.so file is stored in the file. Under the directory libs, the anti-reverse APK file is formed by the first Classes.dex file, the AndroidManifest'.xml file, the file directory res, the file directory libs, and the resources.ars file.
其中,对第二Classes.dex文件进行解密之前还包括对原Classes.dex文件进行完整性检查的步骤。Wherein, before decrypting the second Classes.dex file, the step of performing integrity check on the original Classes.dex file is also included.
其中,利用第一Classes.dex文件的文件头结构所包含字段信息,对解密获得的原Classes.dex文件进行完整性检查。The integrity check of the original Classes.dex file obtained by decrypting is performed by using the field information contained in the header structure of the first Classes.dex file.
其中,对原Classes.dex文件进行动态加载的具体包括:新建一个带有源程序Classes.dex的DexClassLoader对象,通过反射的方式替换到系统默认的加载类中的属性mClassLoader。The specific loading of the original Classes.dex file includes: creating a new DexClassLoader object with the source class Classes.dex, and replacing it with the attribute mClassLoader in the default loading class of the system.
其中,根据原Classes.dex文件中文件头部结构中data_size字段及data_off字段信息,并找到存放APK文件功能的源代码的物理地址。Wherein, according to the data_size field and the data_off field information in the file header structure of the original Classes.dex file, and find the physical address of the source code for storing the function of the APK file.
其中,将源代码动态加载至内存的步骤具体包括:The step of dynamically loading the source code into the memory specifically includes:
利用自定义的onCreate方法,通过AndroidManifest中application中的meta-data属性,找到源代码的物理地址,从而替换成源程序的Application;Using the custom onCreate method, find the physical address of the source code through the meta-data attribute in the application in the AndroidManifest, and replace it with the Application of the source program;
将内存中现有的“第一Application文件”从调用集合中移除,并新建一个Application对象app,将原Classes.dex文件的属性绑定至app,再把app加入到内存的调用集合中;Remove the existing "first Application file" from the call collection, and create a new Application object app, bind the properties of the original Classes.dex file to the app, and then add the app to the memory call set;
由于组件Provider在onCreate方法前就被系统注册,因此把app绑定到源程序中Provider的context上,然后启动系统级onCreate方法。Since the component Provider is registered by the system before the onCreate method, the app is bound to the context of the Provider in the source program, and then the system-level onCreate method is started.
现有技术相比,本发明具有如下有益效果: Compared with the prior art, the present invention has the following beneficial effects:
利用上述加固方法进行加固的APK文件,分别使用目前最流行的Android逆向工具dex2jar与apktool进行逆向编译,由于逆向编译出来的第一Classes.dex文件中并没有源代码,而实现一个APK文件主要功能的源代码仍存放在原Classes.dex文件,但该原Classes.dex文件被加密成第二Classes.dex文件后得以存放在指定的文件目录下,利用逆向工具dex2jar与apktool很难找到解密后的第二Classes.dex文件,即使找到第二Classes.dex文件,由于无法找到解密第二Classes.dex文件的Encrypt’.so文件而无法进行解密,从而可以有效防止APK文件被逆向修改后泄密。由此可见,利用本申请提到的加固方法加固处理后,实现了APK文件的源代码的加密隐藏,可以规避现有Android逆向工具的反编译,从而可以极大程度地提高APK文件的安全性。The APK files that are reinforced by the above-mentioned hardening methods are reverse-compiled using the most popular Android reverse tool dex2jar and apktool respectively. Since the reversed compiled first Classes.dex file does not have source code, the main function of implementing an APK file is implemented. The source code is still stored in the original Classes.dex file, but the original Classes.dex file is encrypted into the second Classes.dex file and stored in the specified file directory. It is difficult to find the decrypted first by using the reverse tool dex2jar and apktool. The second Classes.dex file, even if the second Classes.dex file is found, cannot be decrypted because the Encrypt'.so file for decrypting the second Classes.dex file cannot be found, thereby effectively preventing the APK file from being reversely modified and leaking. It can be seen that after the reinforcement method mentioned in the present application is used for reinforcement, the encryption of the source code of the APK file is realized, and the decompilation of the existing Android reverse tool can be avoided, thereby greatly improving the security of the APK file. .
附图说明DRAWINGS
图1是APK文件的打包封装流程示意图。FIG. 1 is a schematic diagram of a package and package process of an APK file.
图2是本发明APK文件防逆向的加固方法的流程示意图。2 is a schematic flow chart of a method for reinforcing an anti-reverse of an APK file of the present invention.
图3是APK文件加固前后的文件目录结构的对比示意图。Figure 3 is a comparison diagram of the file directory structure before and after the APK file is hardened.
图4是加固后APK文件实现动态加载的流程示意图。FIG. 4 is a schematic diagram of a process of dynamically loading an APK file after reinforcement.
具体实施方式detailed description
为了便于理解本申请的技术方案,申请人先对APK文件目录结构中classes.dex文件先做进一步的详细介绍:In order to facilitate the understanding of the technical solution of the present application, the applicant first introduces the classes.dex file in the APK file directory structure in detail:
classes.dex文件是java源码编译后生成的java字节码文件。但由于Android使用的dalvik虚拟机与标准的java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。classes.dex文件由文件头、索引区和数据区三大部分组成。其中,classes.dex文件头部分结构定义如下表2所示。The classes.dex file is a java bytecode file generated after the java source code is compiled. However, since the dalvik virtual machine used by Android is incompatible with the standard java virtual machine, the dex file is different from the class file in terms of file structure and opcode. The classes.dex file consists of three parts: the file header, the index area, and the data area. Among them, the structure of the header part of the classes.dex file is defined as shown in Table 2 below.
Figure PCTCN2014092643-appb-000002
Figure PCTCN2014092643-appb-000002
Figure PCTCN2014092643-appb-000003
Figure PCTCN2014092643-appb-000003
表2Table 2
在Android源码中,Dalvik虚拟机的实现位于dalvik/目录下,其中dalvik/vm是虚拟机的实现部分,将会编译成libdvm.so;而dalvik/libdex将会编译成libdex.a静态库作为dex工具;dalvik/dexdump是.dex文件的反编译工具;虚拟机的可执行程序位于dalvik/dalvikvm中,将会编译成dalvikvm可执行文件。In the Android source code, the implementation of the Dalvik virtual machine is located in the dalvik/ directory, where dalvik/vm is the implementation part of the virtual machine and will be compiled into libdvm.so; and dalvik/libdex will be compiled into the libdex.a static library as dex Tools; dalvik/dexdump is a decompile tool for .dex files; virtual machine executables are located in dalvik/dalvikvm and will be compiled into dalvikvm executables.
在Android平台运行APK文件时,先由Dalvik虚拟机(在Android源码中,Dalvik虚拟机的实现位于dalvik/目录下)加载解压APK文件并校验完整性,提取Classes.dex文件,然后执行classes.dex文件中的字节码。在执行classes.dex文件时,Dalvik虚拟机首先会检查其文件头部分的checksum字段和siganature字段,确保classes.dex文件没有被损坏或篡改,然后才根据文件头里定义的其他结构的偏移地址和长度信息进行寻址解析与执行。最后dalvik虚拟机会从classes.dex文件中读取指令和数据,进而运行该APK文件的程序逻辑。When running the APK file on the Android platform, first load the decompressed APK file and verify the integrity by the Dalvik virtual machine (in the Android source code, the Dalvik virtual machine is located in the dalvik/ directory), extract the Classes.dex file, and then execute the classes. The bytecode in the dex file. When executing the classes.dex file, the Dalvik virtual machine first checks the checksum field and the siganature field of the header portion of the file to ensure that the classes.dex file is not corrupted or tampered, and then based on the offset of other structures defined in the file header. And length information for addressing resolution and execution. Finally, the dalvik virtual machine reads the instructions and data from the classes.dex file, and then runs the program logic of the APK file.
结合图2所示,本发明的一个优选实施例包括如下实现步骤:Referring to Figure 2, a preferred embodiment of the present invention includes the following implementation steps:
步骤S11、将待加固的APK文件中原Classes.dex文件复制一份,在复制所得的Classes.dex文件中删除APK文件的功能源代码后,保存得到第一Classes.dex文件。因此,第一Classes.dex文件中只保留了原Classes.dex文件的文件头部结构,并未包含APK文件的功能代码。Step S11: Copy the original Classes.dex file in the APK file to be hardened, delete the function source code of the APK file in the copied Classes.dex file, and save the first Classes.dex file. Therefore, the first Classes.dex file only retains the file header structure of the original Classes.dex file, and does not contain the function code of the APK file.
步骤S12、将原Classes.dex文件用预设的加密解密算法进行加密处理,得到第二Classes.dex文件。因此,APK文件主要的功能代码仍在第二Classes.dex文件之中,隐藏、保护第二Classes.dex文件是加固APK文件的关 系,也是防止APK文件被逆向的重要环节。Step S12: Encrypt the original Classes.dex file with a preset encryption and decryption algorithm to obtain a second Classes.dex file. Therefore, the main function code of the APK file is still in the second Classes.dex file, hiding and protecting the second Classes.dex file is the hardening of the APK file. It is also an important part of preventing APK files from being reversed.
步骤S13、生成用于解密第二Classes.dex文件的Encrypt.so文件,对该Encrypt.so文件进行二次加密,得到Encrypt’.so文件。Step S13: Generate an Encrypt.so file for decrypting the second Classes.dex file, and perform secondary encryption on the Encrypt.so file to obtain an Encrypt'.so file.
步骤S14、生成Entry.so文件,该Entry.so文件是在APK文件运行时的入口文件,通过调用入口文件Entry.so中的native方法将Encrypt’.so文件解密为Encrypt.so文件。Step S14: Generate an Entry.so file, which is an entry file when the APK file is run, and decrypts the Encrypt'.so file into an Encrypt.so file by calling the native method in the entry file Entry.so.
步骤S15、将待加固的APK文件中原AndroidManifest.xml文件的源程序入口指向,由指向原Classes.dex文件更改为指向第一Classes.dex文件,修改处理后的文件记为AndroidManifest’.xml文件。Step S15: Point the source entry of the original AndroidManifest.xml file in the APK file to be hardened, and change the file to point to the first Classes.dex file, and the modified file is recorded as the AndroidManifest'.xml file.
步骤S16、将第二Classes.dex文件及Encrypt’.so文件存放在文件目录res之下,将Entry.so文件存放在文件目录libs之下,以第一Classes.dex文件、AndroidManifest’.xml文件、文件目录res、文件目录libs及resources.ars文件进行打包封装后封装文件,再使用Android SDK中提供的签名工具对封装文件进行签名,即完成了APK文件的加固处理。具体来说,加固前后的APK文件的文件目录结构对比示意图如图3所示。Step S16: storing the second Classes.dex file and the Encrypt'.so file in the file directory res, and storing the Entry.so file in the file directory libs, to the first Classes.dex file and the AndroidManifest'.xml file. The file directory res, the file directory libs, and the resources.ars file are packaged and packaged, and then the signature file is used to sign the package file, which completes the reinforcement of the APK file. Specifically, a comparison of the file directory structure of the APK file before and after the reinforcement is shown in FIG. 3 .
加固后的APK文件运行时,结合图4所示,加载运行过程包括如下步骤:When the reinforced APK file is running, as shown in FIG. 4, the loading operation process includes the following steps:
步骤S21、根据AndroidManifest’.xml文件中的源程序入口指向,加固后的APK文件运行时,先由Dalvik虚拟机加载第一Classes.dex文件。Step S21: According to the source program entry point in the AndroidManifest'.xml file, when the reinforced APK file is running, the first Classes.dex file is first loaded by the Dalvik virtual machine.
步骤S22、由第一Classes.dex文件调用Entry.so文件,利用Entry.so文件对存放在文件目录res之下的Encrypt’.so文件进行解密处理,得到解密后的Encrypt.so文件。Step S22: The Entry.so file is called by the first Classes.dex file, and the Encrypt'.so file stored in the file directory res is decrypted by using the Entry.so file to obtain the decrypted Encrypt.so file.
步骤S23、利用Entry.so文件按照预设的加密解密算法对存放在文件目录res之下的第二Classes.dex文件进行解密,从而得到加固处理前APK文件中的原Classes.dex文件。Step S23: Decrypt the second Classes.dex file stored in the file directory res according to the preset encryption and decryption algorithm by using the Entry.so file, thereby obtaining the original Classes.dex file in the APK file before the reinforcement processing.
步骤S24、利用第一Classes.dex文件的文件头结构所包含字段信息,对 解密获得的原Classes.dex文件进行完整性检查,通过完整性检查后进入步骤S26。Step S24, using the field information included in the file header structure of the first Classes.dex file, The original Classes.dex file obtained by the decryption is checked for integrity, and after the integrity check, the process proceeds to step S26.
步骤S25、由Dalvik虚拟机根据Android类动态加载技术(DexClassLoader程序)对原Classes.dex文件进行动态加载。具体过程是,新建一个带有源程序Classes.dex的DexClassLoader对象,通过反射的方式替换到系统默认的加载类中的属性mClassLoader。Step S25: The Dalvik virtual machine dynamically loads the original Classes.dex file according to the Android class dynamic loading technology (DexClassLoader program). The specific process is to create a new DexClassLoader object with the source class Classes.dex, and replace it with the property mClassLoader in the default loading class of the system.
步骤S26、根据原Classes.dex文件中文件头部结构中data_size字段及data_off字段信息,找到存放APK文件功能的源代码的物理地址,将源代码动态加载至内存。具体来说,利用自定义的onCreate方法,通过AndroidManifest中application中的meta-data属性,找到源代码的物理地址,从而替换成源程序的Application;将现有的“第一Application文件”从系统调用集合中移除,并新建一个Application对象app,将原Classes.dex文件的属性绑定至app,再把app加入到系统调用集合中;最后,由于组件Provider在onCreate方法前就被系统注册,因此把app绑定到源程序中Provider的context上,然后启动系统级onCreate方法。Step S26: Find the physical address of the source code storing the function of the APK file according to the data_size field and the data_off field information in the file header structure in the original Classes.dex file, and dynamically load the source code into the memory. Specifically, using the custom onCreate method, the physical address of the source code is found through the meta-data attribute in the application in the AndroidManifest, thereby replacing the Application of the source program; the existing "first Application file" is called from the system. Remove the collection, and create a new Application object app, bind the properties of the original Classes.dex file to the app, and then add the app to the system call collection; finally, because the component Provider is registered by the system before the onCreate method, Bind the app to the context of the Provider in the source program, and then start the system-level onCreate method.
步骤S27、从系统的物理内存上删除解密后的原Classes.dex文件,防止被攻击者窃取。In step S27, the decrypted original Classes.dex file is deleted from the physical memory of the system to prevent the attacker from stealing.
利用上述加固方法进行加固的APK文件,分别使用目前最流行的Android逆向工具dex2jar与apktool进行逆向编译,由于逆向编译出来的第一Classes.dex文件中并没有源代码,而实现一个APK文件主要功能的源代码仍存放在原Classes.dex文件,但该原Classes.dex文件被加密成第二Classes.dex文件后得以存放在指定的文件目录下,利用逆向工具dex2jar与apktool很难找到解密后的第二Classes.dex文件,即使找到第二Classes.dex文件,由于无法找到解密第二Classes.dex文件的Encrypt’.so文件而无法进行解密,从而可以有效防止APK文件被逆向修改后泄密。由此可见,利用本申请提到的加固 方法加固处理后,实现了APK文件的源代码的加密隐藏,可以规避现有Android逆向工具的反编译,从而可以极大程度地提高APK文件的安全性。The APK files that are reinforced by the above-mentioned hardening methods are reverse-compiled using the most popular Android reverse tool dex2jar and apktool respectively. Since the reversed compiled first Classes.dex file does not have source code, the main function of implementing an APK file is implemented. The source code is still stored in the original Classes.dex file, but the original Classes.dex file is encrypted into the second Classes.dex file and stored in the specified file directory. It is difficult to find the decrypted first by using the reverse tool dex2jar and apktool. The second Classes.dex file, even if the second Classes.dex file is found, cannot be decrypted because the Encrypt'.so file for decrypting the second Classes.dex file cannot be found, thereby effectively preventing the APK file from being reversely modified and leaking. It can be seen that the reinforcement mentioned in this application is utilized. After the method is hardened, the source code of the APK file is encrypted and hidden, which can avoid the decompilation of the existing Android reverse tool, thereby greatly improving the security of the APK file.
本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、安卓系统的数字电视接收装置、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。The invention is applicable to a wide variety of general purpose or special purpose computing system environments or configurations. For example: personal computers, servers, handheld or portable devices, tablet devices, multiprocessor systems, microprocessor-based systems, digital TV receivers for Android, programmable consumer electronics, network PCs, small computers, Large computer, distributed computing environment including any of the above systems or devices, and the like.
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。 The above is only the preferred embodiment of the present invention, and is not intended to limit the present invention. Any modifications, equivalent substitutions and improvements made within the spirit and principles of the present invention should be included in the protection of the present invention. Within the scope.

Claims (6)

  1. 一种防逆向APK文件的动态加载方法,其特征在于,包括步骤:A dynamic loading method for an anti-reverse APK file, comprising the steps of:
    加载第一Classes.dex文件,调用Entry.so文件,利用Entry.so文件对Encrypt’.so文件进行解密处理,得到解密后的Encrypt.so文件;Load the first Classes.dex file, call the Entry.so file, and decrypt the Encrypt'.so file using the Entry.so file to get the decrypted Encrypt.so file.
    利用Entry.so文件对第二Classes.dex文件进行解密,得到加固处理前的APK文件中的原Classes.dex文件;The second Classes.dex file is decrypted by using the Entry.so file to obtain the original Classes.dex file in the APK file before the reinforcement processing;
    对原Classes.dex文件进行动态加载,并找到存放APK文件功能的源代码的物理地址,将源代码动态加载至内存;Dynamically load the original Classes.dex file, and find the physical address of the source code that stores the APK file function, and dynamically load the source code into the memory;
    从物理内存上删除解密后的原Classes.dex文件;Delete the decrypted original Classes.dex file from physical memory;
    其中,第一Classes.dex文件中仅包含原Classes.dex文件的的文件头部结构,第二Classes.dex文件及Encrypt’.so文件存放在文件目录res之下,Entry.so文件存放在文件目录libs之下,由第一Classes.dex文件、AndroidManifest’.xml文件、文件目录res、文件目录libs及resources.ars文件封装后形成所述防逆向APK文件。The first Classes.dex file only contains the file header structure of the original Classes.dex file, the second Classes.dex file and the Encrypt'.so file are stored under the file directory res, and the Entry.so file is stored in the file. Under the directory libs, the anti-reverse APK file is formed by the first Classes.dex file, the AndroidManifest'.xml file, the file directory res, the file directory libs, and the resources.ars file.
  2. 根据权利要求1所述一种防逆向APK文件的动态加载方法,其特征在于,对第二Classes.dex文件进行解密之前还包括对原Classes.dex文件进行完整性检查的步骤。The method for dynamically loading an anti-reverse APK file according to claim 1, wherein the step of performing integrity checking on the original Classes.dex file before decrypting the second Classes.dex file is further included.
  3. 根据权利要求2所述一种防逆向APK文件的动态加载方法,其特征在于,利用第一Classes.dex文件的文件头结构所包含字段信息,对解密获得的原Classes.dex文件进行完整性检查。The method for dynamic loading of an anti-reverse APK file according to claim 2, wherein the integrity of the original Classes.dex file obtained by decryption is performed by using the field information contained in the header structure of the first Classes.dex file. .
  4. 根据权利要求1所述一种防逆向APK文件的动态加载方法,其特征在于,对原Classes.dex文件进行动态加载的具体包括:新建一个带有源程序Classes.dex的DexClassLoader对象,通过反射的方式替换到系统默认的加载类中的属性mClassLoader。The dynamic loading method of the anti-reverse APK file according to claim 1, wherein the dynamic loading of the original Classes.dex file comprises: creating a new DexClassLoader object with the source class Classes.dex, by reflecting The method is replaced with the attribute mClassLoader in the system's default load class.
  5. 根据权利要求1所述一种防逆向APK文件的动态加载方法,其特征 在于,根据原Classes.dex文件中文件头部结构中data_size字段及data_off字段信息,并找到存放APK文件功能的源代码的物理地址。A dynamic loading method for an anti-reverse APK file according to claim 1, characterized in that Therefore, according to the data_size field and the data_off field information in the file header structure of the original Classes.dex file, and find the physical address of the source code for storing the function of the APK file.
  6. 根据权利要求1所述一种防逆向APK文件的动态加载方法,其特征在于,将源代码动态加载至内存的步骤具体包括:The method for dynamically loading an anti-reverse APK file according to claim 1, wherein the step of dynamically loading the source code into the memory comprises:
    利用自定义的onCreate方法,通过AndroidManifest中application中的meta-data属性,找到源代码的物理地址,从而替换成源程序的Application;Using the custom onCreate method, find the physical address of the source code through the meta-data attribute in the application in the AndroidManifest, and replace it with the Application of the source program;
    将内存中现有的“第一Application文件”从调用集合中移除,并新建一个Application对象app,将原Classes.dex文件的属性绑定至app,再把app加入到内存的调用集合中;Remove the existing "first Application file" from the call collection, and create a new Application object app, bind the properties of the original Classes.dex file to the app, and then add the app to the memory call set;
    由于组件Provider在onCreate方法前就被系统注册,因此把app绑定到源程序中Provider的context上,然后启动系统级onCreate方法。 Since the component Provider is registered by the system before the onCreate method, the app is bound to the context of the Provider in the source program, and then the system-level onCreate method is started.
PCT/CN2014/092643 2014-11-18 2014-12-01 Dynamic loading method for preventing reverse of apk file WO2016078130A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201410663307.XA CN104318155A (en) 2014-11-18 2014-11-18 Dynamic loading method capable of guarding against reverse APK file
CN201410663307X 2014-11-18

Publications (1)

Publication Number Publication Date
WO2016078130A1 true WO2016078130A1 (en) 2016-05-26

Family

ID=52373386

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2014/092643 WO2016078130A1 (en) 2014-11-18 2014-12-01 Dynamic loading method for preventing reverse of apk file

Country Status (2)

Country Link
CN (1) CN104318155A (en)
WO (1) WO2016078130A1 (en)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106843919A (en) * 2016-12-12 2017-06-13 北京奇虎科技有限公司 The storage method and device of a kind of dex files
CN107122634A (en) * 2017-04-26 2017-09-01 北京洋浦伟业科技发展有限公司 The method for reinforcing and protecting and device of software installation bag
CN107122632A (en) * 2017-04-26 2017-09-01 北京洋浦伟业科技发展有限公司 The encryption method and device of software installation bag
CN107122635A (en) * 2017-04-27 2017-09-01 北京洋浦伟业科技发展有限公司 A kind of reinforcement means of the reinforcement means of SO files, device and APK
CN109933325A (en) * 2017-12-15 2019-06-25 阿里巴巴集团控股有限公司 A kind of dex file construction method, apparatus and system
CN111488557A (en) * 2019-01-28 2020-08-04 中国移动通信有限公司研究院 Encryption and decryption method and device, electronic equipment and readable storage medium
CN112083970A (en) * 2020-09-10 2020-12-15 南京烽火星空通信发展有限公司 Mobile terminal digital evidence obtaining method and equipment based on dynamic loading technology
CN112667975A (en) * 2020-12-29 2021-04-16 西北工业大学 Android system application software safety protection method based on hybrid reinforcement
CN112765608A (en) * 2021-01-20 2021-05-07 每日互动股份有限公司 Target apk source code acquisition method, electronic device and medium
CN113641426A (en) * 2021-08-31 2021-11-12 福建省天奕网络科技有限公司 Shelling search and implementation method and system based on source code modification of android terminal

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105740708A (en) * 2016-01-28 2016-07-06 博雅网信(北京)科技有限公司 Java reflection mechanism-based automatic Android application shelling method
CN106845166A (en) * 2016-12-12 2017-06-13 北京奇虎科技有限公司 The storage method and device of a kind of dex files
CN106528255B (en) * 2016-12-19 2019-07-12 北京小米移动软件有限公司 Kind loading method and device
CN106897587A (en) * 2017-02-27 2017-06-27 百度在线网络技术(北京)有限公司 The method and apparatus of reinforcement application, loading reinforcement application
CN107169324A (en) * 2017-05-12 2017-09-15 北京理工大学 A kind of Android application reinforcement means based on dynamic encryption and decryption
CN109033765A (en) * 2018-08-07 2018-12-18 麒麟合盛网络技术股份有限公司 The treating method and apparatus of application installation package
CN110610097A (en) * 2019-09-09 2019-12-24 杭州天宽科技有限公司 File transmission security system based on android application
CN113094665B (en) * 2021-04-09 2022-08-05 每日互动股份有限公司 System for preventing java program from being decompiled

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102087605A (en) * 2011-01-28 2011-06-08 宇龙计算机通信科技(深圳)有限公司 Android-based platform application installation control method and system
CN102236757A (en) * 2011-06-30 2011-11-09 北京邮电大学 Software protection method and system applicable to Android system
CN102760219A (en) * 2011-12-20 2012-10-31 北京安天电子设备有限公司 Android platform software protecting system, method and equipment
KR20140030989A (en) * 2012-09-04 2014-03-12 주식회사 인프라웨어테크놀러지 Method of obtaining signature of apk files for android operating system, and computer-readable recording medium with apk file signature computing program for the same
CN103761457A (en) * 2013-12-27 2014-04-30 华为技术有限公司 Software protecting method, device and system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102087605A (en) * 2011-01-28 2011-06-08 宇龙计算机通信科技(深圳)有限公司 Android-based platform application installation control method and system
CN102236757A (en) * 2011-06-30 2011-11-09 北京邮电大学 Software protection method and system applicable to Android system
CN102760219A (en) * 2011-12-20 2012-10-31 北京安天电子设备有限公司 Android platform software protecting system, method and equipment
KR20140030989A (en) * 2012-09-04 2014-03-12 주식회사 인프라웨어테크놀러지 Method of obtaining signature of apk files for android operating system, and computer-readable recording medium with apk file signature computing program for the same
CN103761457A (en) * 2013-12-27 2014-04-30 华为技术有限公司 Software protecting method, device and system

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106843919A (en) * 2016-12-12 2017-06-13 北京奇虎科技有限公司 The storage method and device of a kind of dex files
CN107122634A (en) * 2017-04-26 2017-09-01 北京洋浦伟业科技发展有限公司 The method for reinforcing and protecting and device of software installation bag
CN107122632A (en) * 2017-04-26 2017-09-01 北京洋浦伟业科技发展有限公司 The encryption method and device of software installation bag
CN107122634B (en) * 2017-04-26 2020-03-17 北京梆梆安全科技有限公司 Reinforcement protection method and device for software installation package
CN107122635A (en) * 2017-04-27 2017-09-01 北京洋浦伟业科技发展有限公司 A kind of reinforcement means of the reinforcement means of SO files, device and APK
CN109933325A (en) * 2017-12-15 2019-06-25 阿里巴巴集团控股有限公司 A kind of dex file construction method, apparatus and system
CN111488557A (en) * 2019-01-28 2020-08-04 中国移动通信有限公司研究院 Encryption and decryption method and device, electronic equipment and readable storage medium
CN111488557B (en) * 2019-01-28 2024-01-12 中国移动通信有限公司研究院 Encryption and decryption method and device, electronic equipment and readable storage medium
CN112083970A (en) * 2020-09-10 2020-12-15 南京烽火星空通信发展有限公司 Mobile terminal digital evidence obtaining method and equipment based on dynamic loading technology
CN112667975A (en) * 2020-12-29 2021-04-16 西北工业大学 Android system application software safety protection method based on hybrid reinforcement
CN112667975B (en) * 2020-12-29 2024-04-26 西北工业大学 Application software safety protection method based on hybrid reinforcement Android system
CN112765608A (en) * 2021-01-20 2021-05-07 每日互动股份有限公司 Target apk source code acquisition method, electronic device and medium
CN112765608B (en) * 2021-01-20 2023-05-12 每日互动股份有限公司 Target apk source code acquisition method, electronic equipment and medium
CN113641426A (en) * 2021-08-31 2021-11-12 福建省天奕网络科技有限公司 Shelling search and implementation method and system based on source code modification of android terminal

Also Published As

Publication number Publication date
CN104318155A (en) 2015-01-28

Similar Documents

Publication Publication Date Title
WO2016078130A1 (en) Dynamic loading method for preventing reverse of apk file
KR101471589B1 (en) Method for Providing Security for Common Intermediate Language Program
CN106778103B (en) Reinforcement method, system and decryption method for preventing reverse cracking of android application program
US8892876B1 (en) Secured application package files for mobile computing devices
US11144631B2 (en) Dynamic switching between pointer authentication regimes
KR101503785B1 (en) Method And Apparatus For Protecting Dynamic Library
CN104408337A (en) Reinforcement method for preventing reverse of APK (Android package) file
US8090959B2 (en) Method and apparatus for protecting .net programs
CN106203006A (en) Android application reinforcement means based on dex Yu so file Dynamic Execution
CN104317625A (en) Dynamic loading method for APK files
CN106295255B (en) Application program reinforcing method and device
KR20080005493A (en) Software protection
WO2016206297A1 (en) Method for protecting dex file from being decompiled in android system
CN104866739A (en) Application program encryption method and application program encryption system in Android system
CN104239757A (en) Application program reversing-preventing method and device and operation method and terminal
CN107273723B (en) So file shell adding-based Android platform application software protection method
WO2015149214A1 (en) Method, apparatus, and computer-readable medium for obfuscating execution of application on virtual machine
CN107430650B (en) Securing computer programs against reverse engineering
US9292708B2 (en) Protection of interpreted source code in virtual appliances
WO2015154436A1 (en) Data processing method and device
US20140059708A1 (en) Apparatuses and methods for protecting program file content using digital rights management (drm)
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
KR101667774B1 (en) Apparatus and Method of Providing Security for Script Program
KR101863325B1 (en) Method and apparatus for preventing reverse engineering

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14906225

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205 DATED 04/10/2017)

122 Ep: pct application non-entry in european phase

Ref document number: 14906225

Country of ref document: EP

Kind code of ref document: A1