CN108268284A - 应用程序转换装置及方法 - Google Patents

应用程序转换装置及方法 Download PDF

Info

Publication number
CN108268284A
CN108268284A CN201711461863.9A CN201711461863A CN108268284A CN 108268284 A CN108268284 A CN 108268284A CN 201711461863 A CN201711461863 A CN 201711461863A CN 108268284 A CN108268284 A CN 108268284A
Authority
CN
China
Prior art keywords
application program
information
framework
dynamic base
original
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201711461863.9A
Other languages
English (en)
Inventor
任大爀
文钟杰
金东文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung SDS Co Ltd
Original Assignee
Samsung SDS Co Ltd
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 Samsung SDS Co Ltd filed Critical Samsung SDS Co Ltd
Publication of CN108268284A publication Critical patent/CN108268284A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • G06F9/4451User profiles; Roaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication

Landscapes

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

Abstract

本发明公开一种应用程序转换装置及方法。根据本发明的一实施例的应用程序转换方法包括如下步骤:分解(decompose)原始应用程序;在被分解的所述应用程序中添加动态库(dynamic library);以及在被分解的所述应用程序的应用程序运行区域插入所述动态库信息。

Description

应用程序转换装置及方法
技术领域
本发明的实施例涉及一种转换应用程序的技术。
背景技术
企业移动管理(EMM;Enterprise Mobility Management)是一种包括移动设备管理(MDM;Mobile Device Management)功能以及移动应用程序管理(MAM;MobileApplication Management)功能的企业用移动安全(Mobile Security)解决方案中的一个。尤其,随着最近移动终端的使用被普遍化,能够将职员个人终端用于业务中的自带设备(BYOD;Bring Your Own Device)或者将公司提供的特定终端同时用于移动业务以及个人用途的公司授权-个人使用(COPE;Company-issued,Personal Enabled)等移动趋势(Mobile Trends)正在扩散。
但是,随着将个人终端同时用于业务和个人用途,对企业机密泄露的担忧正在增加。并且,因此对终端的无线网络(WiFi)、相机控制、GPS控制、通信控制等硬件控制功能以及业务所需的电邮、信使(Messenger)、公司内部系统等企业用应用程序本身进行动态控制的要求也在增加。
为了使企业用应用程序与EMM等形成关联而控制,需要使用从EMM提供的API而另行制造企业用应用程序。但是在这种情况下,需要将现有的多种企业用应用程序全部基于EMM来重新制造,因此发生成本以及时间方面的问题。因此,需要一种以无需另行制造企业用应用程序且能够包括EMM等追加功能的方式有效地转换应用程序的方案。
[现有技术文献]
韩国公开专利公报第10-2014-0016897号(2014.02.10)
发明内容
公开的实施例用于提供如下的技术方案:以使现有的应用程序额外地包括所需的政策以及功能的方式转换应用程序。
根据示例性的实施例,提供如下的应用程序转换方法,该方法在计算装置中执行,所述计算装置包括:一个以上的处理器;以及存储器,存储有通过所述一个以上的处理器运行的一个以上的程序,其中,所述应用程序转换方法包括如下步骤:分解原始应用程序;在被分解的所述应用程序中添加动态库;以及在被分解的所述应用程序的应用程序运行区域插入动态库信息。
插入所述动态库信息的步骤可以包括如下步骤:在构成所述应用程序的一个以上的架构各自的加载命令区域插入所述动态库信息。
插入所述动态库信息的步骤还可以包括如下步骤:从所述应用程序运行区域的头获得所述一个以上的架构各自的起始地址及大小信息;利用所述起始地址及大小信息而探索所述一个以上的架构各自的头信息,并根据探索的所述头信息计算包含在各个架构中的加载命令区域的最后位置;在计算的按所述各个架构的加载命令区域的最后位置插入所述动态库信息;更新所述各个架构的头信息,以对应于被插入的所述动态库信息。
所述方法在执行更新所述各个架构的头信息的步骤之后,还可以包括如下步骤:更新包含在所述应用程序运行区域的头中的所述一个以上的架构各自的起始地址及大小信息。
所述方法在执行插入所述动态库信息的步骤之后,还可以包括如下步骤:重新生成应用程序签名信息;以及生成经修改后的应用程序,所述经修改后的应用程序包括所述动态库、添加有所述动态库信息的所述运行区域及所述应用程序签名信息。
重新生成所述应用程序签名信息的步骤还可以包括如下步骤:替换所述原始应用程序的配置文件;修改所述原始应用程序的权限信息;利用替换的所述配置文件及经修改后的所述权限信息而生成所述签名信息;以及利用生成的所述签名信息而替换所述原始应用程序的签名信息。
所述方法在执行分解所述原始应用程序的步骤之后,还包括如下步骤:从被分解的所述原始应用程序提取所述原始应用程序的信息区域;以及改变所述信息文件内的所述原始应用程序的束标识符。
所述方法在执行分解所述原始应用的步骤之后,还可以包括如下步骤:从被分解的所述原始应用程序提取所述原始应用程序的信息区域;以及替换所述信息文件内的所述原始应用程序的图标文件。
根据另一示例性实施例,提供如下的计算装置,可以包括:一个以上的处理器;存储器;以及一个以上的程序,所述一个以上的程序存储于所述存储器,构成为通过所述一个以上的处理器运行,所述一个以上的程序包括:用于分解(decompose)原始应用的指令;用于对被分解的所述应用添加动态库(dynamic library)的指令;以及用于在被分解的所述应用的应用运行区域插入所述动态库信息的指令。
用于插入所述动态库信息的指令可以构成为,在构成所述应用程序的一个以上的架构各自的加载命令区域插入所述动态库信息。
用于插入所述动态库信息的指令还可以包括:用于从所述应用程序运行区域的头(Mach-O header)获得所述一个以上的架构(architecture)各自的起始地址及大小信息的指令;用于利用所述起始地址及大小信息而探索所述一个以上的架构各自的头(mach_header)信息,并根据探索的所述头信息计算包含在各个架构中的加载命令区域的最后位置的指令;用于在计算的按所述各个架构的加载命令区域的最后位置插入所述动态库信息的指令;以及用于更新所述各个架构的头信息以对应于被插入的所述动态库信息的指令。
所述一个以上的程序还可以包括:用于在执行用于更新所述各个架构的头信息的指令之后更新包含在所述应用运行区域的头(Mach-O header)中的所述一个以上的架构各自的起始地址及大小信息的指令。
所述一个以上的程序还可以包括:用于在执行用于插入所述动态库信息的指令之后重新生成应用签名信息的指令;以及用于生成包括所述动态库、添加有所述动态库信息的所述运行区域及所述应用程序签名信息的经修改后的应用程序的指令。
用于重新生成所述应用程序签名信息的指令还可以包括:用于替换所述原始应用程序的配置文件(provisioning profile)的指令;用于修改所述原始应用程序的权限信息的指令;用于利用替换的所述配置文件及经修改后的所述权限信息而生成所述签名信息的指令;以及用于利用生成的所述签名信息而替换所述原始应用重新的签名信息的指令。
所述一个以上的程序还可以包括:用于在执行用于分解(decompose)所述原始应用程序的所述指令之后从被分解的所述原始应用提取所述原始应用程序的信息区域的指令;以及用于改变所述信息文件内的所述原始应用程序的束标识符的指令。
所述一个以上的程序还包括:用于在执行用于分解(decompose)所述原始应用程序的所述指令之后从被分解的所述原始应用程序提取所述原始应用程序的信息区域的指令;以及用于替换所述信息文件内的所述原始应用程序的图标文件的指令。
根据另一示例性实施例,提供如下的应用转换装置,其中,包括:输入部,被输入原始应用程序;应用程序分解部,分解所述原始应用程序(decompose);以及应用程序转换部,在被分解的所述应用程序添加动态库(dynamic library),并在被分解的所述应用程序的应用程序运行区域插入所述动态库信息。
所述应用程序转换部可以在构成所述应用程序的一个以上的架构各自的加载命令区域插入所述动态库信息。
所述应用转换部,可以从所述应用程序运行区域的头(Mach-O header)获得所述一个以上的架构(architecture)各自的起始地址及大小信息;并利用所述起始地址及大小信息而探索所述一个以上的架构各自的头(mach_header)信息,并根据探索的所述头信息计算包含在各个架构中的加载命令区域的最后位置,而且在计算的按所述各个架构的加载命令区域的最后位置插入所述动态库信息,并且更新所述各个架构的头信息,以对应于被插入的所述动态库信息。
所述应用转换部在更新所述各个架构的头信息后,可以更新包含在所述应用程序运行区域的头(Mach-O header)中的所述一个以上的架构(architecture)各自的起始地址及大小信息。
所述应用转换装置还可以包括:应用程序重新签名部,重新生成所述应用程序签名信息;以及应用程序生成部,生成包括所述动态库、添加有所述动态库信息的所述运行区域及所述应用程序签名信息的修改后的应用程序。
所述应用程序重新签名部,可以替换所述原始应用程序的配置文件(provisioning profile)、修改所述原始应用程序的权限信息、利用替换的所述配置文件及经修改后的所述权限信息而生成所述签名信息、以及利用生成的所述签名信息而替换所述原始应用程序的签名信息。
所述应用转换装置还可以包括:束标识符变更部,从被分解的所述原始应用程序提取所述原始应用程序的信息区域,并改变所述信息文件内的所述原始应用程序的束标识符。
所述应用转换装置还可以包括:图标替换部,从被分解的所述原始应用提取所述原始应用程序的信息区域,并替换所述信息文件内的所述原始应用程序的图标文件。
根据本发明的实施例,可以将应用程序的源代码的修改最小化,并有效地转换为符合EMM等目的且安全性得到加强的应用程序。
并且,根据本发明的实施例,在转换应用程序时,可以同时变更应用程序的名称,从而能够在同一个计算装置的内部同时设置未被转换的应用程序以及被转换的应用程序。
并且,根据本发明的实施例,在转换应用程序时,可以同时变更应用程序的图标,从而用户能够在视觉上识别是否为被转换的应用程序。
附图说明
图1是用于举例说明包括适合使用于示例性实施例的计算装置的计算环境的框图。
图2是用于说明iOS应用程序的文件格式的示例图。
图3是用于说明根据本发明的一实施例的应用程序转换方法的流程图。
图4是用于说明根据本发明的一实施例的应用程序执行区域202的详细构成的示例图。
图5是用于说明在根据本发明的一实施例的应用程序执行区域插入动态库(library)信息的过程的示例图。
图6是示出根据本发明的实施例而转换的应用程序的结构的示例图。
图7是用于说明根据本发明的一实施例的应用程序转换装置700的框图。
符号说明
200、500:IPA文件格式
202、502:Mach-O二进制
204、504:archived-expanded-entitlements.xcent
206、506:embedded.mobileprovision
208、508:en.lproj
210、510:Info.plist
212、512:PkgInfo
514:动态库
具体实施方式
以下,参照附图而对本发明的具体实施方式进行说明。以下的详细说明是为了有助于全面理解本说明书中记载的方法、装置和/或系统而提供的。然而,这仅仅是示例,本发明并不局限于此。
在对本发明的实施例进行说明的过程中,如果判断为对有关本发明的公知技术的具体说明有可能对本发明的主旨造成不必要的混乱,则省略其详细说明。另外,后述的术语均为考虑到本发明中的功能而定义的术语,其可能根据使用者、运用者的意图或惯例等而不同。因此,需要以贯穿整个说明书的内容为基础而对其下定义。在详细说明中使用的术语只用于记载本发明的实施例而并非旨在限定本发明。除非明确不同地使用,单数形态的表述包括复数形态的含义。在本说明书中,“包括”或“具有”之类的术语用于指代某种特性、数字、步骤、操作、要素及它们一部分或组合,不应被解释为排除所记载项之外的一个或一个以上的其他特性、数字、步骤、操作、要素及它们一部分或组合的存在性或可存在性。
图1是用于举例说明包括适合使用于示例性实施例的计算装置的计算环境10的框图。在图示的实施例中,各个组件可以具有除以下记载的内容以外的不同的功能及能力,也可以包括除以下记载的组件以外的额外的组件。
图示的计算环境10包括计算装置12。在一实施例中,计算装置12可以是根据本发明的实施例的应用程序转换装置。计算装置12包含至少一个处理器14、计算机可读存储介质16以及通信总线(bus)18。处理器14可使计算装置12根据上文中所提到的示例性的实施例而操作。例如,处理器14可运行存储于计算机可读存储介质16的一个以上的程序。所述一个以上的程序可以包含一个以上的计算机可执行指令,所述计算机可执行指令可构成为:在由处理器14来运行的情况下,使计算装置12运行根据示例性的实施例的操作。
计算机可读存储介质16以能够存储计算机可执行指令乃至程序代码、程序数据和/或其他适合的形式的信息的方式构成。存储于计算机可读存储介质16中的程序20包含可由处理器14运行的指令集。在一实施例中,计算机可读存储介质16可以是存储器(随机存取存储器等易失性存储器、非易失性存储器或者这些存储器的适当的组合)、一个以上的磁盘存储设备、光盘存储设备、闪速存储设备、除此之外的可由计算装置12访问并能够存储所期望的信息的其他形式的存储介质或者这些的适合的组合。
通信总线18用于将包括处理器14、计算机可读存储介质16的计算装置12的其他多样的组件相互连接。
计算装置12还可以包含提供用于一个以上的输入输出装置24的接口的一个以上的输入输出接口22以及一个以上的网络通信接口26。输入输出接口22以及网络通信接口26连接到通信总线18。输入输出装置24可以通过输入输出接口22而连接到计算装置12的其他组件。示例性的输入输出装置24可以包括:指点装置(鼠标或者触控板(track pad)等)、键盘、触摸输入装置(触摸板或者触摸屏等)、语音或者声音输入装置、多样的种类的传感器装置和/或拍摄装置等的输入装置;和/或诸如显示装置、打印机、扬声器和/或网卡(networkcard)等的输出装置。示例性的输入输出装置24可以作为用于构成计算装置12的一组件而被包含在计算装置12的内部,也可以作为区别于计算装置12的独立的装置而连接到计算装置12。
根据本发明的实施例的计算装置12是用于对已存在的原始应用程序添加附加功能或政策等而转换所述原始应用程序的装置。根据本发明的实施例的计算装置12可以为了在不考虑安全功能而制成的企业用应用程序中附加EMM等安全功能而被使用。在此情况下,企业等可以不重新制成以往使用的应用程序而容易生成具有安全功能的企业用应用程序。但是,本发明的实施例不限于上述的安全等特定用途,可以在已存在的应用程序中应用多种附加功能或政策时无限制地得到使用。
在本发明的实施例中,计算装置12可以构成为,将作为转换对象的原始应用程序分解(decompose)而添加动态库(dynamic library),并在被分解的所述应用程序的应用程序运行区域插入与所述动态库相关的信息,然后将原始应用程序再结合而生成经修改后的应用程序。在本发明的实施例中,动态库(dynamic library)表示包括与将要添加到原始应用程序的附加功能相关的程序代码的库。例如,在所述附加功能是与EMM相关的功能时,所述动态库可以包括用于执行与EMM相关的功能的程序代码。例如,所述动态库可以使应用程序不将数据存储到应用程序目录(application directory),而是存储到预设的被加密的存储器(secure storage)。并且,在另一示例中,所述动态库可以起到控制计算装置12的摄像头等计算装置12所包含的硬件的功能。在这种情况下,所述动态库感测应用程序向相机功能的访问,并掌握当前的计算装置12的位置而仅在计算装置12没有位于预设定的安全区域(特定建筑物内部)等的情况下允许访问相机功能。并且,动态库可以通过网络而从远端的政策服务器(未示出)接收执行上述安全功能所需的安全政策信息并存储。
另外,根据本发明的实施例的应用程序包括运行代码以及与所述运行代码相关的附加数据(运行环境、权限、证书、附加内容等)而构成。在以下的说明中,为了便于说明,以美国苹果公司公开的iOS应用程序(iOS Application)的格式(IPA文件格式)为基准而对本发明的实施例进行说明。但是,需要留意本发明的实施例不限于特定种类的文件格式。
图2是用于说明iOS应用程序的文件格式200的示例图。iOS应用程序是扩展名为.ipa的文件,且对应的文件被压缩成zip格式。如图所示,iOS应用程序包括7个区域。若对各个区域的功能说明则如下。
应用程序运行区域202是包括iOS应用程序的运行代码的区域,并且是具有Mach-O可执行文件格式的二进制形态。
_CodeSignature 204是具有iOS应用程序的签名(signature)信息的文件夹。iOS应用程序以代码完整性签名(Code Signature)的方式被保护。代码完整性签名是针对iOS应用程序的一种哈希值,并且在打包(packaging)iOS应用程序时生成。作为iOS的安装守护程序(Daemon)的installd在安装iOS应用程序时比较存储于_CodeSignature 204的签名和自己计算的签名而验证iOS应用程序的完整性。从而,在iOS应用程序被打包后,即使改变1字节(byte)也无法通过完整性验证,因此被installd阻止安装。
archived-expanded-entitlements.xcent 206是具有iOS应用程序所支持的功能乃至权限信息的xml形式的文件。例如,在iOS应用程序使用iOS的特定功能(如推送通知、icloud等)的情况下,关于此的所有事项被存储于本文件中。
embedded.mobileprovision 208是存储用于iOS应用程序的签名的配置文件(provisioning profile)的区域。
en.lproj 210是包括iOS应用程序的被编译的源文件的文件夹。
Info.plist 212是包括iOS应用程序的信息的xml形态的文件。例如,Info.plist212可以包括iOS应用程序的束标识符(bundle identifier)及对应的iOS应用程序的图标文件信息。
PkgInfo 214是包括iOS应用程序的生成及包类型(package type)等信息的文件。
图3是用于说明根据本发明的一实施例的应用程序转换方法300的流程图。图3中示出的方法例如可以被如下的计算装置12运行,包括:一个以上的处理器以及存储有一个以上的通过所述一个以上的处理器而运行的程序的存储器。在图示的流程图中,将所述方法分为多个步骤而进行了记载,但是至少一部分步骤可以交换顺序而被执行,或者与其他步骤结合而一起被执行,或者被省略,或者被分为细分的步骤而被执行,或者附加未示出的一个以上的步骤而被执行。
在步骤302中,计算装置12将原始应用程序分解(decompose)。例如,在所述原始应用程序为IPA文件的情况下,计算装置12将原始应用程序解压而分解所述IPA文件,并据此而能够得到如所述图2中说明的文件夹以及文件。
在步骤304中,计算装置12将动态库添加到被分解的原始应用程序。在一实施例中,所述动态库可以构成为文件形态。在此情况下,计算装置12将所述动态库复制到在步骤302中被解压的原始应用程序的各个文件及文件夹所处的文件夹相同的文件夹,从而可以将原始应用程序添加到动态库。
在步骤306中,计算装置12在被分解的所述应用程序的应用程序运行区域插入所述动态库信息。在一实施例中,计算装置12可以构成为,在构成所述原始应的一个以上的架构(architecture)各自的加载命令(load command)区域插入所述动态库信息。对此,以下进行更详细的说明。
图4是用于说明根据本发明的一实施例的应用程序运行区域202的详细构成的示例图。根据本发明的一实施例的应用程序运行区域202具有二进制形态的文件结构,并且可以通过对应的文件的语法分析(parsing)而得知文件的结构及加密与否。如图所示,根据本发明的一实施例的应用程序运行区域202包括运行区域头(Mach-O Header)及一个以上的架构(architecture)而构成。在图示的实施例中,示出了包括2个架构的示例,但是本发明的实施例不限于特定数量的架构。
Mach-O头包括Fat头(Fat Header)和Fat架构(Fat Architecture)。其中,Fat头中包括被包含在运行区域202中的架构的数量(nfat_arch)信息。并且,Fat架构以与上述的nfat_arch的数量对应的数量存在,并且存储有各个架构的起始地址(offset)以及大小(size)信息。在所述步骤306中,计算装置12能够利用存储于Fat架构的起始地址(offset)和大小(size)而得知各个架构的起始地址及整体大小。
然后,计算装置12利用上述的起始地址(offset)信息而移动到各个架构的起始地址。如图4所示,各个架构分为架构头(Arch Header)、加载命令(Load Commands)以及数据(Data)区域。其中,架构头是存储与对应的架构相关的信息的区域,加载命令区域是存储有当对应的架构被驱动时运行的指令信息的区域,数据区域是存储有驱动对应的架构时所需的资料的区域。在本发明的实施例中,动态库信息存储于各个架构的加载命令区域,据此,构成为在驱动对应架构时,被添加的动态库中包含的程序代码也同时运行。
首先,计算装置120探索对应的架构的头(Arch Header),据此得知被包含在加载命令区域中的加载命令的数量(ncmds)以及加载命令区域的大小(sizeofcmds)。此后,计算装置12利用所述sizeofcmds信息而移动到加载命令区域的最后地址,然后在已存在的加载命令区域的紧邻的后方插入动态库信息。在此情况下,对应的架构的数据区域移动相当于动态库信息的大小的距离。图5是用于说明在根据本发明的一实施例的应用程序运行区域202插入动态库信息的过程的示例图。在本发明的实施例中,被插入到加载命令区域的动态库信息可以是在304步骤中添加的动态库的名称、版本、存储路径等。
在所述库信息被插入后,计算装置120考虑到被插入的动态库信息的大小等而更新架构头的ncmds及sizeofcmds。并且,在由于所述库信息被插入而导致对应的架构的整体大小改变的情况下,反映该变化而更新Mach-O头的按各个架构的offset的size值。所述过程对包含在Mach-O二进制中的所有架构反复执行。
另外,计算装置120构成为,在向各个架构插入动态库信息的过程中,分析各个加载命令区域中已包含的加载命令的信息(名称、路径信息)等而验证对应的原始应用程序是否被伪造或改造。
然后,在步骤308中,计算装置12删除原始应用程序的签名信息。如上所述,iOS应用程序的签名信息存储于_CodeSignature 204区域。在本发明的实施例中,向原始应用程序添加动态库及关于此的信息,从而改变原始应用程序,因此无法利用以原始应用程序为基准而生成的已存在签名信息而将iOS应用程序安装在终端。因此,在此步骤中,在生成新的签名信息之前,删除现有原始应用程序的签名信息。
在步骤310中,计算装置12删除已存储于embedded.mobileprovision 208的配置文件,并存储用于应用程序的签名的新的配置文件。
在步骤312中,计算装置12修改存储于archived-expanded-entitlements.xcent的权限信息,以使修改后的应用程序具有运行所述被添加的动态库时所需的功能乃至权限。
在步骤314中,计算装置12反映上述步骤中的变更事项而重新生成应用程序签名信息,并将该应用程序签名信息存储到204区域。即,重新生成的签名信息替代在308步骤中被删除的已存在的签名信息。
在步骤316中,计算装置120将被分解的文件及文件夹再次压缩而生成IPA文件形态的经修改后的应用程序。此时,所述经修改后的应用程序包括上述的动态库及再生成的所述应用程序签名信息。
另外,根据本发明的一实施例的应用程序转换方法300还可以额外地包括改变原始应用程序的束标识符及图标的步骤。改变原始应用程序的束标识符及图标的步骤在执行步骤302之后执行,并且可以与上述的步骤304至312并行地执行,或者在执行所述步骤304至312之前和之后执行。若对改变原始应用程序的束标识符及图标的步骤进行说明则如下。
在步骤318中,计算装置12从在步骤302中分解的所述原始应用程序提取所述原始应用程序的信息区域。例如,在所述原始应用程序为IPA文件的情况下,所述信息文件可以是Info.plist文件。
在步骤320中,计算装置12改变所述信息区域内的所述原始应用程序的束标识符。对于iOS应用程序而言,在终端中不会重复安装具有相同束标识符的应用程序。因此,如同本发明的实施例,在改变被转换的应用程序的束标识符的情况下,可以在一个装置内同时使用未转换的应用程序和被转换的应用程序。例如,对于同一个邮件应用程序而言,未被转换的原始应用程序可以被用于个人用途,被转换的应用程序可以用于业务用途,从而区分使用。
在步骤322中,计算装置12将所述信息区域内的所述原始应用程序的图标文件替换为用于被转换的应用程序的图标文件。如同本发明的实施例,在改变被转换的应用程序的图标的情况下,在一个装置内同时设置未被转换的应用程序和被转换的应用程序的环境下,用户可以在视觉上区分各个应用程序。
在经过上述过程而改变应用程序的束标识符及图标文件的情况下,在314步骤中将上述变更事项全部反映而重新生成签名信息。并且,上述步骤320、322可以根据需要而仅执行其中的一个步骤,也可以将两个步骤全部执行,并且在不需要改变束标识符及图标的情况下,还可以不执行上述步骤。
图6是示出经过上述过程而被转换的应用程序600的结构的示例图。可以确认,与图2中示出的原始应用程序不同地添加了动态库616。并且,如上所述,在Mach-O二进制602中插入有动态库516的信息,且_CodeSignature604、archived-expanded-entitlements.xcent 606、embedded.mobileprovision 608及PkgInfo 614被额外地修改。
图7是用于说明根据本发明的一实施例的应用程序转换装置700的框图。如图所示,根据本发明的一实施例的应用程序转换装置700包括输入部702、应用程序分解部704及应用程序转换部706。
输入部702被输入转换对象原始应用程序。
应用程序分解部704分解(decompose)被输入的原始应用程序。
应用程序转换部706在被分解的所述应用程序添加动态库(dynamic library),并在被分解的所述应用程序的应用程序运行区域插入所述动态库信息。
在一实施例中,应用程序转换部706可以在构成所述原始应用程序的一个以上的架构各自的加载命令区域插入所述动态库信息。具体地,应用程序转换部706可以从所述应用程序运行区域的头(Mach-O header)获取所述一个以上的架构(architecture)各自的起始地址及大小信息,并利用所述起始地址及大小信息而探索所述一个以上的架构各自的头(mach_header)信息。并且,应用程序转换部706可以根据所述被探索的信息计算包含在各个架构的加载命令区域的最后位置,并在计算的按所述各个架构的加载命令区域的最后位置插入所述动态库信息,并更新所述各个架构的头信息,以对应于插入的所述动态库信息。应用程序转换部706在更新所述各个架构的头信息之后,可以更新包含在所述应用程序运行区域的头(Mach-O header)中的一个以上的架构(architecture)各自的起始地址及大小信息。
另外,根据本发明的一实施例的应用程序转换装置700还可以包括应用程序重新签名部708、经修改后的应用程序生成部710。
应用程序重新签名部708重新生成通过应用程序转换部706而转换的应用程序的签名信息。具体而言,应用程序重新签名部708替换所述原始应用程序的配置文件(provisioning profile),并修改所述原始应用程序的权限信息,并且利用被替换的所述配置文件和所述经修改后的权限信息而生成所述签名信息,并利用所述签名信息来替换所述原始应用程序的签名信息。
经修改后的应用程序生成部710生成包括所述动态库、添加有所述动态库信息的所述运行区域以及所述应用程序签名信息的经修改后的应用程序。
并且,根据本发明的一实施例的应用程序转换装置700还可以包括束标识符变更部712及图标替换部714。
束标识符变更部712从被分解的所述原始应用程序提取所述原始应用程序的信息区域,并改变所述信息文件内的所述原始应用程序的束标识符。
图标替换部716从被分解的所述原始应用程序提取所述原始应用程序的信息区域,并替换所述信息文件内的所述原始应用程序的图标文件。
另外,本发明的实施例可以包括计算机可读记录介质,其包括用于在计算机上运行本说明书中记载的方法的程序。所述计算机可读记录介质可以单独地或者组合地包括程序命令、本地数据文件、本地数据结构等。所述介质可以是为本发明而特别地设计并构成的介质,或者可以是在计算机软件领域中通常能够被使用的介质。计算机可读记录介质的示例包括:磁介质,如硬盘、软盘以及磁带等;光记录介质,如CD-ROM、DVD等;磁-光介质,如软盘等;以及ROM、RAM、闪存等为了储存并运行程序命令而特别构成的硬件装置。作为程序命令的示例,不仅包括如利用编译器制作的计算机语言代码,还可以包括可利用解释器等而由计算机运行的高级语言代码。
以上,通过具有代表性的实施例而对本发明进行了详细的说明,然而在本发明所属的技术领域中具有基本知识的人员可以理解上述的实施例可在不脱离本发明的范围的限度内实现多种变形。因此,本发明的权利范围不应局限于上述的实施例,本发明的权利范围需要根据权利要求书的范围以及与该权利要求书的范围均等的范围来确定。

Claims (16)

1.一种应用程序转换方法,该方法在计算装置中执行,所述计算装置包括一个以上的处理器以及存储有通过所述一个以上的处理器运行的一个以上的程序的存储器,
其中,所述应用程序转换方法包括如下步骤:
分解原始应用程序;
在被分解的所述应用程序中添加动态库;以及
在被分解的所述应用程序的应用程序运行区域插入所述动态库信息。
2.如权利要求1所述的应用程序转换方法,其中,
插入所述动态库信息的步骤包括如下步骤:
在构成所述应用程序的一个以上的架构各自的加载命令区域插入所述动态库信息。
3.如权利要求2所述的应用程序转换方法,其中,
插入所述动态库信息的步骤还包括如下步骤:
从所述应用程序运行区域的头获得所述一个以上的架构各自的起始地址及大小信息;
利用所述起始地址及大小信息而探索所述一个以上的架构各自的头信息,并根据探索的所述头信息计算包含在各个架构中的加载命令区域的最后位置;
在计算的按所述各个架构的加载命令区域的最后位置插入所述动态库信息;
更新所述各个架构的头信息,以对应于被插入的所述动态库信息。
4.如权利要求3所述的应用程序转换方法,其中,
在执行更新所述各个架构的头信息的步骤之后,还包括如下步骤:
更新包含在所述应用程序运行区域的头中的所述一个以上的架构各自的起始地址及大小信息。
5.如权利要求1所述的应用程序转换方法,其中,
在执行插入所述动态库信息的步骤之后,还包括如下步骤:
重新生成应用程序签名信息;以及
生成经修改后的应用程序,所述经修改后的应用程序包括所述动态库、添加有所述动态库信息的所述运行区域及所述应用程序签名信息。
6.如权利要求5所述的应用程序转换方法,其中,
重新生成所述应用程序签名信息的步骤还包括如下步骤:
替换所述原始应用程序的配置文件;
修改所述原始应用程序的权限信息;
利用替换的所述配置文件及经修改后的所述权限信息而生成所述签名信息;以及
利用生成的所述签名信息而替换所述原始应用程序的签名信息。
7.如权利要求1所述的应用程序转换方法,其中,
在执行分解所述原始应用程序的步骤之后,还包括如下步骤:
从被分解的所述原始应用程序提取所述原始应用程序的信息区域;以及
改变所述信息文件内的所述原始应用程序的束标识符。
8.如权利要求1所述的应用程序转换方法,其中,
在执行分解所述原始应用的步骤之后,还包括如下步骤:
从被分解的所述原始应用程序提取所述原始应用程序的信息区域;以及
替换所述信息文件内的所述原始应用程序的图标文件。
9.一种应用程序转换装置,其中,包括:
输入部,被输入原始应用程序;
应用程序分解部,分解所述原始应用程序;以及
应用程序转换部,在被分解的所述应用程序添加动态库,并在被分解的所述应用程序的应用程序运行区域插入所述动态库信息。
10.如权利要求9所述的应用程序转换装置,其中,
所述应用程序转换部在构成所述应用程序的一个以上的架构各自的加载命令区域插入所述动态库信息。
11.如权利要求10所述的应用程序转换装置,其中,
所述应用程序转换部,从所述应用程序运行区域的头获得所述一个以上的架构各自的起始地址及大小信息,并利用所述起始地址及大小信息而探索所述一个以上的架构各自的头信息,并根据探索的所述头信息计算包含在各个架构中的加载命令区域的最后位置,而且
在计算的按所述各个架构的加载命令区域的最后位置插入所述动态库信息,并且更新所述各个架构的头信息,以对应于被插入的所述动态库信息。
12.如权利要求11所述的应用程序转换装置,其中,
所述应用程序转换部在更新所述各个架构的头信息后,更新包含在所述应用程序运行区域的头中的所述一个以上的架构各自的起始地址及大小信息。
13.如权利要求9所述的应用程序转换装置,其中,还包括:
应用程序重新签名部,重新生成所述应用程序签名信息;以及
应用程序生成部,生成包括所述动态库、添加有所述动态库信息的所述运行区域及所述应用程序签名信息的修改后的应用程序。
14.如权利要求13所述的应用程序转换装置,其中,还包括:
所述应用程序重新签名部,替换所述原始应用程序的配置文件、修改所述原始应用程序的权限信息、利用替换的所述配置文件及经修改后的所述权限信息而生成所述签名信息、以及利用生成的所述签名信息而替换所述原始应用程序的签名信息。
15.如权利要求9所述的应用程序转换装置,其中,还包括:
束标识符变更部,从被分解的所述原始应用程序提取所述原始应用程序的信息区域,并改变所述信息文件内的所述原始应用程序的束标识符。
16.如权利要求9所述的应用程序转换装置,其中,还包括:
图标替换部,从被分解的所述原始应用提取所述原始应用程序的信息区域,并替换所述信息文件内的所述原始应用程序的图标文件。
CN201711461863.9A 2017-01-03 2017-12-28 应用程序转换装置及方法 Pending CN108268284A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020170000527A KR20180079852A (ko) 2017-01-03 2017-01-03 애플리케이션 변환 장치 및 방법
KR10-2017-0000527 2017-01-03

Publications (1)

Publication Number Publication Date
CN108268284A true CN108268284A (zh) 2018-07-10

Family

ID=62712381

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711461863.9A Pending CN108268284A (zh) 2017-01-03 2017-12-28 应用程序转换装置及方法

Country Status (3)

Country Link
US (1) US10466997B2 (zh)
KR (1) KR20180079852A (zh)
CN (1) CN108268284A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109934016A (zh) * 2019-03-07 2019-06-25 江苏通付盾信息安全技术有限公司 应用的签名校验方法、装置及电子设备
CN112364340A (zh) * 2020-11-27 2021-02-12 深圳市慧为智能科技股份有限公司 权限管理方法、装置、设备及计算机可读存储介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10474479B1 (en) * 2018-06-03 2019-11-12 Apple Inc. Preventing framework conflicts for multi-OS applications
KR20210029621A (ko) 2019-09-06 2021-03-16 삼성전자주식회사 전자 장치에서 어플리케이션 업데이트 시 런타임 성능 개선 방법 및 장치

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050251786A1 (en) * 2004-05-07 2005-11-10 International Business Machines Corporation System and method for dynamic software installation instructions
KR101991687B1 (ko) * 2012-11-23 2019-06-24 삼성전자 주식회사 동적 라이브러리 프로파일링 방법, 이를 기록한 컴퓨터로 읽을 수 있는 기록 매체 및 동적 라이브러리 프로파일링 시스템
KR102133450B1 (ko) * 2013-05-30 2020-07-13 삼성전자 주식회사 프로파일 설정 방법 및 장치
KR101503785B1 (ko) * 2013-10-10 2015-03-18 (주)잉카엔트웍스 동적 라이브러리를 보호하는 방법 및 장치
US10698671B2 (en) * 2015-03-30 2020-06-30 Arxan Technologies, Inc. Processing, modification, distribution of custom software installation packages

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109934016A (zh) * 2019-03-07 2019-06-25 江苏通付盾信息安全技术有限公司 应用的签名校验方法、装置及电子设备
CN112364340A (zh) * 2020-11-27 2021-02-12 深圳市慧为智能科技股份有限公司 权限管理方法、装置、设备及计算机可读存储介质
CN112364340B (zh) * 2020-11-27 2022-06-28 深圳市慧为智能科技股份有限公司 权限管理方法、装置、设备及计算机可读存储介质

Also Published As

Publication number Publication date
US20180189051A1 (en) 2018-07-05
US10466997B2 (en) 2019-11-05
KR20180079852A (ko) 2018-07-11

Similar Documents

Publication Publication Date Title
CN108268284A (zh) 应用程序转换装置及方法
CN106354795B (zh) 一种分布式数据交换系统
CN104796412B (zh) 端到端云服务系统及对其敏感数据的访问方法
CN102447559A (zh) 针对复合资源文档创建数字签名的方法和系统
Almutairi et al. K-means clustering using homomorphic encryption and an updatable distance matrix: secure third party data clustering with limited data owner interaction
CN106295255A (zh) 应用程序的加固方法和装置
CN101610291A (zh) 基于第三方平台的数据上传方法、下载方法及系统
US10536276B2 (en) Associating identical fields encrypted with different keys
CN111242317A (zh) 管理应用的方法、装置、计算机设备和存储介质
CN107408242A (zh) 提供对通信内的内容的交互式预览
CN109451004A (zh) 基于云网桥的云存储系统及方法
CN108777685A (zh) 用于处理信息的方法和装置
CN106326691A (zh) 加解密功能的实现方法、装置及服务器
CN109802832A (zh) 一种数据文件的处理方法、系统、大数据处理服务器和计算机存储介质
WO2023005862A1 (zh) 数据治理装置、方法、计算机设备及存储介质
US9928378B2 (en) Sensitive data obfuscation in output files
US20170235925A1 (en) System and methods for secure collaborative communication
US20180349102A1 (en) Apparatus and method for converting large-scale application
CN104657631B (zh) 应用的渠道信息的处理方法及装置
CN108073403A (zh) 转换应用的方法及计算装置
WO2017188417A1 (ja) データ転送システム、データ転送装置、データ転送方法、及びコンピュータ読み取り可能な記録媒体
CN106471510A (zh) 复合文档访问
CN114417390B (zh) 一种网盘组织账户数据同步方法、装置、网盘及存储介质
CN109560925A (zh) 密钥信息供应方法及利用密钥信息供应方法的装置
CN106575341A (zh) 复合文档访问

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20180710