KR101134116B1 - 응용프로그램과 부가응용프로그램의 결합 방법 및 실행 방법 - Google Patents

응용프로그램과 부가응용프로그램의 결합 방법 및 실행 방법 Download PDF

Info

Publication number
KR101134116B1
KR101134116B1 KR20100080168A KR20100080168A KR101134116B1 KR 101134116 B1 KR101134116 B1 KR 101134116B1 KR 20100080168 A KR20100080168 A KR 20100080168A KR 20100080168 A KR20100080168 A KR 20100080168A KR 101134116 B1 KR101134116 B1 KR 101134116B1
Authority
KR
South Korea
Prior art keywords
file
application program
combined
code
application
Prior art date
Application number
KR20100080168A
Other languages
English (en)
Other versions
KR20120017532A (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 KR20100080168A priority Critical patent/KR101134116B1/ko
Priority to PCT/KR2011/006016 priority patent/WO2012023786A2/ko
Publication of KR20120017532A publication Critical patent/KR20120017532A/ko
Application granted granted Critical
Publication of KR101134116B1 publication Critical patent/KR101134116B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary

Abstract

이 발명은 별도 제작된 실행파일 형태의 응용프로그램과 부가응용프로그램을 결합하는 방법 및 그 결합파일로부터 응용프로그램과 부가응용프로그램을 실행하는 방법에 관한 것이다.
이 발명에 따른 응용프로그램과 부가응용프로그램의 결합 방법은, 결합서버가 부가응용프로그램 실행코드와 응용프로그램을 구동시키는 코드를 포함한 실행파일 형태의 결합모체파일을 생성하는 제1단계와,`상기 결합서버가 상기 결합모체파일의 후미에 중간헤더와 상기 응용프로그램의 응용프로그램 실행코드를 정렬하여 결합파일을 생성하는 제2단계와, 상기 결합서버가 상기 중간헤더에 상기 결합파일로부터 상기 응용프로그램 실행코드를 분리하는데 필요한 정보를 기록하는 제3단계를 포함한다.

Description

응용프로그램과 부가응용프로그램의 결합 방법 및 실행 방법 {method for combining and excuting application program and supplementary application program}
이 발명은 별도 제작된 임의의 두 응용프로그램을 결합하는 기술에 관한 것으로서, 보다 상세하게는 실행파일 형태의 응용프로그램과 부가응용프로그램을 결합하는 방법 및 그 결합파일로부터 응용프로그램과 부가응용프로그램을 실행하는 방법에 관한 것이다.
인터넷의 발전으로 말미암아 인터넷을 기반으로 많은 응용프로그램들이 개발되어 사용되고 있다. 이 응용프로그램은 단독으로 실행되기도 하지만, 응용프로그램에 부가응용프로그램이 결합되어 응용프로그램과 부가응용프로그램이 함께 실행되기도 한다. 예컨대 현재 널리 사용되는 주요 부가응용프로그램으로서, 인터넷뱅킹프로그램, 증권거래프로그램, 온라인게임프로그램 등에 삽입되어 실행되는 보안프로그램이 있다. 부가응용프로그램은 이에 한정되지 아니하며, 응용프로그램과는 별도로 제작되지만 응용프로그램과 함께 실행되어 응용프로그램에 부가 서비스를 부여하는 모든 종류의 응용프로그램을 통칭한다.
통상적으로 응용프로그램과 부가응용프로그램은 별도로 제작되는 바, 별도 제작된 응용프로그램과 부가응용프로그램이 함께 실행되려면 응용프로그램과 부가응용프로그램을 결합하는 과정이 필요하다.
종래의 통상적인 응용프로그램과 부가응용프로그램을 결합하는 과정은 다음과 같다. 먼저, 부가응용프로그램 제작자는 부가응용프로그램 실행파일을 응용프로그램 제작자에게 제공한다. 응용프로그램 개발자는 응용프로그램 소스코드에 부가응용프로그램 실행파일을 호출하는 코드를 삽입하는 수정을 하고, 컴파일(compile) 및 빌딩(building) 함으로써 응용프로그램 실행파일을 제작한다. 그리고, 응용프로그램 실행파일과 부가응용프로그램 실행파일을 사용자컴퓨터에 제공하는데, 사용자컴퓨터에서는 응용프로그램이 실행될 때 부가응용프로그램이 호출되어 부가응용프로그램도 함께 실행된다.
여기서, 소스코드라 함은 원시코드라고도 하는데 컴퓨터 프로그램을 (사람이 읽을 수 있는) 프로그래밍 언어로 기술한 글을 말하고, 실행파일 또는 실행코드라 함은 암호화된 명령에 따라 지시된 작업을 수행하도록 하는 컴퓨터 파일 또는 코드를 말한다. 윈도우즈 운영체제 환경에서 구동하는 실행파일의 형태로서, ".exe, .dll, .ocx, .sys, .scr" 등이 포함된다.
이러한 종래의 응용프로그램과 부가응용프로그램을 결합하는 방법은 다음과 같은 문제점이 있다.
응용프로그램 개발자가 응용프로그램에 부가응용프로그램 실행파일을 호출하는 소스코드를 삽입해야 하는데, 응용프로그램 개발자의 능력 부족으로 말미암아 잘못된 소스코드가 삽입될 수 있으며 이럴 경우 응용프로그램의 컴파일 및 빌딩이 제대로 되지 못하거나, 응용프로그램과 부가응용프로그램이 제대로 결합되지 못하는 문제점이 있다.
응용프로그램이 버전업되거나 부가응용프로그램이 버전업될 때마다 응용프로그램의 소스코드를 수정한 후 컴파일 및 빌딩 절차를 반복적으로 수행해야 하는 불편함이 있다.
응용프로그램 개발자와 응용프로그램 제작자가 다른 경우(예컨대, 증권사(응용프로그램 제작자)가 홈트레이딩시스템(HTS; home trading system)(응용프로그램)을 외주 제작한 경우)에는, 응용프로그램 제작자가 응용프로그램의 소스코드를 직접 수정하기 어려운데, 이 상태에서, 응용프로그램에 부가응용프로그램을 추가하고자 할 경우, 응용프로그램 개발자를 통해서만 소스코드 수정 작업이 가능하기 때문에 절차가 복잡하고 작업기간이 길어지는 문제점이 있다.
이 발명은 상술한 종래기술의 문제점을 해결하기 위하여 안출된 것으로서, 응용프로그램의 소스코드를 수정하지 않고 실행파일 형태의 응용프로그램과 부가응용프로그램을 결합하는 방법을 제공하는데 그 목적이 있다. 또한, 이 발명의 다른 목적은 결합된 파일로부터 응용프로그램과 부가응용프로그램을 실행하는 방법을 제공하는데 있다.
상술한 목적을 달성하기 위한 이 발명의 한 실시예에 따른 응용프로그램과 부가응용프로그램의 결합 방법은, 결합서버가 부가응용프로그램 실행코드와 응용프로그램을 구동시키는 코드를 포함한 실행파일 형태의 결합모체파일을 생성하는 제1단계와,`상기 결합서버가 상기 결합모체파일의 후미에 중간헤더와 상기 응용프로그램의 응용프로그램 실행코드를 정렬하여 결합파일을 생성하는 제2단계와, 상기 결합서버가 상기 중간헤더에 상기 결합파일로부터 상기 응용프로그램 실행코드를 분리하는데 필요한 정보를 기록하는 제3단계를 포함한 것을 특징으로 한다.
이 발명의 한 실시예에 따른 응용프로그램과 부가응용프로그램의 실행 방법은, 부가응용프로그램 실행코드와 응용프로그램을 구동시키는 코드를 포함한 실행파일 형태의 결합모체파일과, 상기 결합모체파일의 후미에 정렬되며 상기 결합파일로부터 응용프로그램 실행코드를 분리하는데 필요한 정보를 저장한 중간헤더와, 상기 중간헤더의 후미에 정렬된 상기 응용프로그램 실행코드를 포함한 결합파일로부터 상기 응용프로그램과 부가응용프로그램을 실행하는 방법에 있어서, 컴퓨터에서 상기 결합파일이 실행되면 상기 컴퓨터가 결합파일 구동 프로세스를 생성하는 제1단계와, 상기 컴퓨터가 상기 부가응용프로그램 실행코드를 실행하는 제2단계와, 상기 컴퓨터가 상기 응용프로그램 실행코드를 분리하는 제3단계와, 상기 컴퓨터가 상기 결합파일 구동 프로세스의 자식프로세스를 생성하고 상기 생성된 자식프로세스에 상기 응용프로그램 실행코드를 덮어쓰고 윈도우즈 운영체제의 쓰레드 컨텍스트를 수정한 후 상기 자식프로세스를 실행시키는 제4단계를 포함한 것을 특징으로 한다.
또한, 이 발명에 따른 다운로드 서버는, 응용프로그램을 엔드유저컴퓨터에 다운로드하는 다운로드서버에 있어서, 결합파일을 상기 엔드유저컴퓨터에 다운로드하고, 상기 결합파일은 부가응용프로그램 실행코드와 응용프로그램을 구동시키는 코드를 포함한 실행파일 형태의 결합모체파일과, 상기 결합모체파일의 후미에 정렬되며 상기 결합파일로부터 응용프로그램 실행코드를 분리하는데 필요한 정보를 저장한 중간헤더와, 상기 중간헤더의 후미에 정렬된 상기 응용프로그램 실행코드를 포함한 것을 특징으로 한다.
이상과 같이 이 발명에 따르면 응용프로그램의 소스코드 수정없이 실행파일 형태의 응용프로그램과 부가응용프로그램을 자동으로 결합할 수 있기 때문에 결합 절차가 단순하고 용이한 잇점이 있다.
도 1은 이 발명에 따른 응용프로그램과 부가응용프로그램의 결합 방법 및 실행 방법이 구현되는 네트워크 환경을 도시한 시스템도이다.
도 2는 이 발명에 따른 결합요청클라이언트(111)의 구동 절차를 도시한 동작 흐름도이다.
도 3은 이 발명에 따른 결합서버(122)의 구동 절차를 도시한 동작 흐름도이다.
도 4는 이 발명에 따른 결합서버의 결합파일 생성 서브루틴을 도시한 동작 흐름도이다.
도 5는 이 발명에 따른 엔드유저컴퓨터(131)의 구동 절차를 도시한 동작 흐름도이다.
도 6은 이 발명에 따른 결합파일 구동 프로세스의 응용프로그램 구동부가 응용프로그램의 실행코드를 구동하는 과정을 도시한 동작 흐름도이다.
이하, 첨부된 도면을 참조하면서 이 발명의 한 실시예에 따른 응용프로그램과 부가응용프로그램의 결합 방법 및 실행 방법을 보다 상세하게 설명하면 다음과 같다.
도 1은 이 발명에 따른 응용프로그램과 부가응용프로그램의 결합 방법 및 실행 방법이 구현되는 네트워크 환경을 도시한 시스템도이다.
이 발명을 구현하기 위한 시스템은, 응용프로그램과 부가응용프로그램의 결합 요청자로서 응용프로그램제작자(110)와, 응용프로그램과 부가응용프로그램을 결합하는 주체로서 결합서비스제공자(120)가 포함된다.
응용프로그램제작자(110)는 결합서비스제공자(120)에게 응용프로그램을 제공하고 응용프로그램과 부가응용프로그램의 결합을 요청하며 응용프로그램과 부가응용프로그램이 결합된 결합파일을 수신하는 결합요청클라이언트(111)와, 결합파일을 사용자(130)의 엔드유저컴퓨터(131)에게 다운로드하여 엔드유저컴퓨터(131)에서 응용프로그램과 부가응용프로그램이 함께 실행되도록 하는 다운로드서버(112)를 포함한다. 결합요청클라이언트(111)는 응용프로그램의 소스코드에 대해 컴파일 및 빌딩한 후의 실행파일(exe파일) 형태로서 결합서버(120)에게 제공한다. 결합서비스제공자(120)는 적어도 하나 이상의 부가응용프로그램을 저장한 부가응용프로그램데이터베이스(121)와, 결합요청클라이언트(111)로부터 수신된 응용프로그램과 부가응용프로그램을 결합한 후 그 결합파일을 결합요청클라이언트(111)에게 제공하는 결합서버(120)를 포함한다.
결합서버(120)는 도시되지 않은 별도의 부가응용프로그램제작자로부터 별도의 부가응용프로그램 실행코드를 수신하여 응용프로그램 실행파일과 결합할 수도 있다.
결합서버(120)는 응용프로그램과 부가응용프로그램을 결합하는 과정에서 다양한 옵션을 제공하는데, 그 옵션에는 아이콘 변경 옵션, 파일정보 변경 옵션, 코드 난독화 옵션, 메인 모듈 서명 검증 옵션, 연계파일 서명 검증 옵션 등이 포함된다. 아이콘 변경 옵션은 결합파일의 아이콘을 응용프로그램의 아이콘으로 변경할지 여부를 선택하는 옵션이고, 파일정보 변경 옵션은 결합파일의 파일정보를 응용프로그램의 파일정보로 변경할지 여부를 선택하는 옵션이고, 코드 난독화 옵션은 결합파일에 대한 코드 난독화(code obfuscation) 수행 수준을 선택하는 옵션이고, 메인 모듈 서명 검증 옵션은 결합파일을 실행할 때 결합파일 또는 응용프로그램에 대해 전자서명 검증을 수행할지 여부를 선택하는 옵션이고, 연계파일 서명 검증 옵션은 결합파일을 실행할 때 응용프로그램과 연계되어 실행되는 연계파일들(동적연결라이브러리(dll)파일 등)에 대해 전자서명 검증을 수행할지 여부를 선택하는 옵션이다.
여기서, 아이콘 변경 옵션과 파일정보 변경 옵션이 선택되면, 결합파일은 내면적으로는 응용프로그램과 부가응용프로그램이 결합된 파일이지만 외형적으로는 응용프로그램과 동일하게 된다.
도 2는 이 발명에 따른 결합요청클라이언트(111)의 구동 절차를 도시한 동작 흐름도이다.
결합요청클라이언트(111)는 결합서버(122)에 접속하고, 사용자로 하여금 결합 대상이 되는 응용프로그램을 선택하도록 한다(S21). 이때, 응용프로그램은 응용프로그램의 소스코드를 컴파일 및 빌딩한 후의 응용프로그램 실행파일을 선택할 수도 있다.
결합요청클라이언트(111)는 사용자로 하여금 결합서버(122)로부터 입력되는 결합파일을 저장할 디렉토리를 선택하도록 한다(S22). 다음, 결합요청클라이언트(111)는 결합서버(122)로부터 부가응용프로그램 리스트를 입력받아 사용자로 하여금 부가응용프로그램 리스트 중 응용프로그램과 결합할 부가응용프로그램을 선택하도록 하고(S23), 선택된 부가응용프로그램 정보를 결합서버(122)에게 알려준다.
다음, 결합요청클라이언트(111)는 결합서버(122)로부터 옵션 종류를 입력받아 사용자로 하여금 옵션을 선택하도록 하고(S24), 선택된 옵션 정보를 결합서버(122)에게 알려준다. 이때, 사용자가 선택하는 옵션에는 아이콘 변경 옵션, 파일정보 변경 옵션, 코드 난독화 옵션, 메인 모듈 서명 검증 옵션, 연계파일 서명 검증 옵션 등이 포함된다. 아이콘 변경 옵션에서는 결합파일의 아이콘을 응용프로그램의 아이콘으로 변경할지 여부를 선택하고, 파일정보 변경 옵션에서는 결합파일의 파일정보를 응용프로그램의 파일정보로 변경할지 여부를 선택하고, 코드 난독화 옵션에서는 결합파일의 코드 난독화 처리 수준을 선택하고, 메인 모듈 서명 검증 옵션에서는 결합파일을 실행시킬 때 실행되는 결합파일 또는 응용프로그램을 전자서명 검증할지 여부를 선택하고, 연계파일 서명 검증 옵션에서는 결합파일을 실행시켜 응용프로그램이 실행될 때 응용프로그램과 연계된 파일들을 전자서명 검증할지 여부를 선택한다.
다음, 결합요청클라이언트(111)는 단계 S21에서 선택된 응용프로그램과 함께 서명 검증하고자 하는 연계파일들을 결합서버(122)에게 전송한다(S25).
이상과 같이 결합요청클라이언트(111)가 부가응용프로그램 및 옵션을 선택하고 응용프로그램과 연계파일들을 결합서버(122)에게 전송하면, 결합서버(122)는 응용프로그램과 부가응용프로그램을 결합하고 사용자가 선택한 옵션들을 처리하여, 옵션들이 적용되고 응용프로그램과 부가응용프로그램이 결합된 결합파일을 생성한다.
결합서버(122)로부터 결합파일의 수신이 가능해지면(S26), 결합요청클라이언트(111)는 결합서버(122)로부터 결합파일을 수신하여 단계 S22에서 선택된 디렉토리에 저장한다(S27).
도 3은 이 발명에 따른 결합서버(122)의 구동 절차를 도시한 동작 흐름도이다.
결합서버(122)는 결합요청클라이언트(111)가 접속하면(S31), 그 접속한 결합요청클라이언트(111)에게 응용프로그램과 부가응용프로그램 및 옵션 선택 환경을 제공하고(S32), 결합요청클라이언트(111)로부터 부가응용프로그램 및 옵션 선택 정보와 응용프로그램 및 서명 검증할 연계파일들을 수신한다(S33). 결합서버(122)는 결합요청클라이언트(111)로부터 부가응용프로그램이 선택되면 해당 부가응용프로그램 제작자로부터 해당 부가응용프로그램 실행코드를 수신받는 절차를 더 수행할 수도 있다.
다음, 결합서버(122)는 옵션을 적용하면서 응용프로그램과 부가응용프로그램을 결합하여 결합파일을 생성한다(S34). 이 결합서버(122)가 결합파일을 생성하는 절차는 후술하기로 한다.
다음, 결합서버(122)는 생성된 결합파일을 압축하고(S35), 압축된 결합파일을 결합요청클라이언트(111)에게 전송한다(S36).
도 4는 이 발명에 따른 결합서버의 결합파일 생성 서브루틴(S34)을 도시한 동작 흐름도이다.
결합서버(122)는 결합 작업을 위한 결합모체파일을 생성한다(S31). 이 결합모체파일은 컴파일 및 빌딩 처리를 통해 실행파일(exe 파일) 형태로서 생성되며, 이 결합모체파일의 후미에 응용프로그램 실행코드가 암호화되어 정렬되어 결합파일로 생성되는 파일이다. 이 결합모체파일은 부가응용프로그램 실행코드와, 암호화되어 결합된 응용프로그램을 복호화시키는 코드 및 구동시키는 코드와, 파일 정보(리소스, 버전)와, 아이콘 정보와, 파일 사이즈를 계산하는 코드를 포함한다. 결합모체파일은 선택적으로 전자서명 검증코드를 포함한다. 결합모체파일은 자체적으로 마이크로 윈도우즈 운영체제에서 규정한 실행파일 형식을 모두 구비한다. 상기 응용프로그램을 복호화시키는 코드 및 구동시키는 코드는 결합파일이 엔드유저컴퓨터에 다운로드되어 실행될 때, 결합파일로부터 응용프로그램 실행코드를 분리하고 복호화하며 구동시키는 절차를 수행하는 바, 이는 후술하기로 한다.
다음, 결합서버는 결합요청클라이언트(111)로부터 아이콘 변경 옵션이 선택되었는지를 판단한다. 아이콘 변경 옵션이 선택되었으면(S42), 결합모체파일의 아이콘을 응용프로그램의 아이콘으로 교체한다(S43). 다음, 결합서버는 결합요청클라이언트(111)로부터 파일정보 변경 옵션이 선택되었는지를 판단한다. 파일정보 변경 옵션이 선택되었으면(S44), 결합모체파일의 파일정보(리소스, 버전)를 응용프로그램의 파일정보(리소스, 버전)로 교체한다(S45). 이렇게 결합모체파일의 아이콘 및 파일정보가 응용프로그램의 아이콘 및 파일정보로 교체되면, 결합모체파일과 응용프로그램은 외형적으로 동일한 파일로서 보여진다.
다음, 결합서버는 결합요청클라이언트(111)로부터 입력된 코드 난독화 옵션에 따라 결합모체파일에 코드 난독화를 수행한다(S46). 이 코드 난독화는 실행파일(코드) 압축기술 또는 실행파일(코드) 가상화기술이라고도 하며, 코드 난독화를 수행하는 상용프로그램으로서 THEMIDA, Code Virtualize 등이 있다. 결합서버는 결합요청클라이언트로부터 옵션으로 입력된 코드 난독화 수준에 따라 상용 프로그램의 코드 난독화 수준을 설정한 후 결합모체파일을 해당 상용 프로그램에 적용하여 코드 난독화를 수행한다. 이때, 결합모체파일 중 일부(응용프로그램을 복호화시키는 코드 및 구동시키는 코드와, 파일 사이즈를 계산하는 코드)만을 코드 난독화하는 것이 바람직하다. 이렇게 결합모체파일 또는 일부에 대해 코드난독화를 수행하면 리버스엔지니어링(reverse engineering)이 어려워져서 해커는 결합모체파일에 대한 해독이 어려우며, 나아가 결합모체파일과 응용프로그램을 결합한 결합파일을 해독하거나 변경하지 못하게 된다.
다음, 결합서버는 응용프로그램의 실행코드를 추출하여 암호화한다(S47). 이때 암호화는 응용프로그램을 복호화시키는 코드에 의해 복호화되는 암호화이다.
다음, 결합서버는 단계 S46까지 수행된 결합모체파일의 후미에 단계 S47에서 암호화된 응용프로그램 실행코드를 정렬하여 결합파일을 생성한다. 결합모체파일의 후미와 암호화된 응용프로그램의 실행코드 사이에 중간헤더가 추가되며, 이 중간헤더에는 암호화된 응용프로그램 실행코드에 대한 정보(암호화된 응용프로그램 실행코드의 사이즈 등)가 기록된다.
다음, 결합서버는 결합요청클라이언트(111)로부터 서명 검증 옵션이 선택되었는지를 판단한다. 서명 검증 옵션이 선택되면(S49), 서명 검증 옵션이 선택된 결합파일과 연계파일들에 대해 각각 전자서명하여 그 서명정보를 해당 파일들에 추가 기록한다. 이때, 결합파일은 전자서명 검증코드를 구비하여야 하며, 결합파일의 헤더에는 전자서명 검증에 대한 정보(전자서명 검증 여부, 전자서명 검증코드 저장위치, 연계파일들에 대한 전자서명 검증 여부, 및 전자서명 검증할 연계파일들 리스트 또는 그 저장장소 등)을 기록한다(S50).
아이콘 변경 옵션과 파일정보 변경 옵션이 적용되어 생성된 결합파일은 외형적으로는 원래의 응용프로그램과 동일하다. 따라서, 해당 결합파일은 별도의 파일 변경을 하지 않고서도 결합요청클라이언트(111)로부터 다운로드서버(112)에 바로 업로드되어 엔드유저컴퓨터(131)로 다운로드될 수 있다.
도 5는 이 발명에 따른 엔드유저컴퓨터(131)의 구동 절차를 도시한 동작 흐름도이다.
먼저, 엔드유저컴퓨터(131)는 결합파일의 헤더로부터 전자서명 검증에 대한 정보를 읽고 결합파일 및 연계파일들에 대해 전자서명을 검증한다(S51). 전자서명 검증시 결합파일에 저장된 전자서명 검증코드를 이용하며 이는 통상적인 전자서명 검증방법과 동일하다.
전자서명 검증 결과 오류가 발생하면(S52), 파일 실행 오류메시지를 출력하고(S53), 파일 실행을 종료한다.
전자서명 검증 결과가 오류가 발생하지 않으면(S52), 결합파일이 실행되는데(S54), 이때, 결합파일 중 결합모체파일 부분이 자체적으로 마이크로 윈도우즈 운영체제에서 규정한 실행파일 형식을 모두 구비하였기 때문에 결합모체파일 부분만이 메모리에 로드되어 실행되며, 결합모체파일의 후미에 정렬된 암호화된 응용프로그램 실행코드는 메모리에 로드되지 않는다.
즉, 외형적으로는 결합파일 구동 프로세스가 실행되지만 내면적으로는 결합모체파일만 실행되게 된다. 이 결합모체파일은 부가응용프로그램 실행코드와, 암호화되어 결합된 응용프로그램을 복호화시키는 코드 및 구동시키는 코드와, 파일 사이즈를 계산하는 코드를 포함하는 바, 결합파일을 실행하여 결합모체파일이 실행되면 부가응용프로그램 실행코드가 구동되어 부가응용프로그램이 실행된다(S55).
정리하면, 엔드유저컴퓨터(131)에서 결합파일을 실행시키면 결합파일 구동 프로세스가 생성되며, 결합모체파일에 포함된 부가응용프로그램이 우선적으로 메모리에 로드되어 실행되고, 결합모체파일에 포함된 코드들이 실행되어 응용프로그램을 구동하게 된다. 물론, 그 실행 순서를 변경하면 응용프로그램을 먼저 구동시킨 후 부가응용프로그램을 실행시킬 수도 있다.
응용프로그램이 구동되는 과정을 살펴보면 다음과 같다. 결합파일 구동 프로세스는 파일 사이즈를 계산하여 결합모체파일의 후미와 암호화된 응용프로그램 실행코드 사이에 삽입된 중간헤더를 취득하고(S56), 중간헤더에 기록된 암호화된 응용프로그램 실행코드에 대한 정보(암호화된 응용프로그램 실행코드의 사이즈 등)를 이용하여 암호화된 응용프로그램 실행코드를 분리한다(S57). 그리고, 복호화 코드를 실행하여 응용프로그램 실행코드를 복호화한다(S58). 이 복호화된 응용프로그램 실행코드는 임시파일(temp)로 생성될 수 있다.
다음, 결합파일 구동 프로세스의 응용프로그램을 구동시키는 코드(이하, 응용프로그램 구동부라 함)가 동작하는데, 이 응용프로그램 구동부는 다이내믹 포킹(dynamic forking) 기술을 응용하여 응용프로그램 실행코드를 구동한다(S59). 이 응용프로그램 실행코드를 구동하는 과정은 후술하기로 한다.
다음, 결합파일 구동 프로세스와 상기 응용프로그램 구동부에 의해 생성된 자식프로세스(응용프로그램 구동 프로세스)에 상호 정상적으로 동작하고 있는지를 검증하는 통신 라이브러리를 삽입한다(S60). 이는 예컨대 결합파일에서 구동하는 부가응용프로그램이 보안프로그램이고, 응용프로그램이 HTS(home trading system) 프로그램인 경우, 결합파일의 보안프로그램의 실행이 종료되면 HTS 프로그램의 실행도 종료되도록 하기 위한 것이다.
도 6은 이 발명에 따른 결합파일 구동 프로세스의 응용프로그램 구동부가 응용프로그램의 실행코드를 구동하는 과정을 도시한 동작 흐름도이다.
사용자가 파일정보 변경 옵션을 선택하지 않은 경우에는 결합파일과 응용프로그램의 파일정보가 동일하지 않기 때문에 결합파일(실질적으로는 결합모체파일의 부가응용프로그램)과 응용프로그램을 손쉽게 실행시킬 수 있다. 그러나, 사용자가 파일정보 변경 옵션을 선택한 경우에는 결합파일과 응용프로그램의 파일정보가 동일하기 때문에 일반적인 다이내믹 포킹 기술로는 결합파일(실질적으로는 결합모체파일의 부가응용프로그램)과 응용프로그램을 동시에 실행시킬 수 없다. 따라서, 이 발명에서는 다이내믹 포킹 기술을 변형하여 결합파일(실질적으로는 결합모체파일의 부가응용프로그램)과 응용프로그램을 실행한다.
도 6은 파일정보 변경 옵션이 선택되어 결합파일의 파일정보와 응용프로그램의 파일정보가 동일한 경우, 응용프로그램 실행코드를 구동하는 과정을 도시한다.
응용프로그램 구동부는 응용프로그램 실행코드의 PE(Portable Executable) 정보를 확인하여, 응용프로그램 실행코드가 메모리에 로드되기 위해 필요한 공간의 이미지 사이즈(이를 필요 이미지 사이즈라 함)를 확인한다(S61).
다음, 응용프로그램 구동부는 일시정지(suspended) 옵션을 선택하면서 결합파일을 실행시킴으로써, 결합파일 구동 프로세스의 자식프로세스를 생성한다(S62). 응용프로그램 구동부가 결합파일을 실행시키면 새로운 프로세스가 메모리에 생성되는데 그 생성된 프로세스는 자동으로 결합파일 구동 프로세스의 자식프로세스가 되고, 그 자식프로세스에는 결합파일 중 결합모체파일의 코드들이 로딩된다. 또한, 프로세스를 생성할 때 일시정지(suspended) 옵션을 선택하면, 메모리에 결합파일의 코드들이 로딩된 상태에서 일시정지한다.
응용프로그램 구동부는 단계 S61에서 확인한 응용프로그램 실행코드의 필요 이미지 사이즈와 단계 S62에서 메모리에 로딩된 자식프로세스의 이미지 사이즈(자식프로세스로서 메모리에 로딩된 결합모체파일의 코드들의 사이즈)를 비교한다(S63).
자식프로세스의 이미지 사이즈가 응용프로그램 실행코드의 필요 이미지 사이즈보다 작으면(S64), 자식프로세스의 이미지 공간을 필요 이미지 사이즈만큼 추가 확보한다(S65).
자식프로세스의 이미지 사이즈가 응용프로그램 실행코드의 필요 이미지 사이즈보다 작지 않거나(S64), 단계 S65에서 필요 이미지 사이즈만큼 추가 확보된 다음에는 메모리의 자식프로세스의 이미지 공간에 응용프로그램 실행코드를 덮어 쓴다(S66).
그리고, 쓰레드 컨텍스트의 섹션정보와 이미지사이즈 등을 수정(S67)함으로써, 메모리의 실행코드 변경 사실을 윈도우즈 운영체제가 인지하도록 한다.
마지막으로, 응용프로그램 구동부는 응용프로그램 실행코드가 로딩된 자식프로세스를 실행시킴으로써, 응용프로그램이 구동되도록 한다(S68).
111 : 결합요청클라이언트 112 : 다운로드서버
121 : 부가응용프로그램데이터베이스 122 : 결합서버
131 : 엔드유저컴퓨터

Claims (27)

  1. 결합서버가 부가응용프로그램 실행코드와 응용프로그램을 구동시키는 코드를 포함한 실행파일 형태의 결합모체파일을 생성하는 제1단계와,
    상기 결합서버가 상기 결합모체파일의 후미에 중간헤더와 상기 응용프로그램의 응용프로그램 실행코드를 정렬하여 결합파일을 생성하는 제2단계와,
    상기 결합서버가 상기 중간헤더에 상기 결합파일로부터 상기 응용프로그램 실행코드를 분리하는데 필요한 정보를 기록하는 제3단계를 포함한 것을 특징으로 하는 응용프로그램과 부가응용프로그램의 결합 방법.
  2. 제1항에 있어서, 상기 제1단계와 제2단계 사이에 상기 결합서버가 상기 결합모체파일의 아이콘을 상기 응용프로그램의 아이콘으로 교체하는 것을 특징으로 하는 응용프로그램과 부가응용프로그램의 결합 방법.
  3. 제1항 또는 제2항에 있어서, 상기 제1단계와 제2단계 사이에 상기 결합서버가 상기 결합모체파일의 파일정보를 상기 응용프로그램의 파일정보로 교체하는 것을 특징으로 하는 응용프로그램과 부가응용프로그램의 결합 방법.
  4. 제1항에 있어서, 상기 제1단계와 제2단계 사이에 상기 결합서버가 상기 결합모체파일의 적어도 일부분에 대해 코드 난독화 처리하는 것을 특징으로 하는 응용프로그램과 부가응용프로그램의 결합 방법.
  5. 제1항에 있어서, 상기 제2단계에서, 상기 결합서버는 상기 응용프로그램 실행코드를 암호화한 후 상기 결합모체파일의 후미에 정렬하고, 상기 결합모체파일은 상기 암호화된 응용프로그램 실행코드를 복호화시키는 코드를 더 포함한 것을 특징으로 하는 응용프로그램과 부가응용프로그램의 결합 방법.
  6. 제1항에 있어서, 상기 제3단계 후 상기 결합서버는 상기 결합파일에 대해 전자 서명하여 기록하고, 상기 결합모체파일은 전자서명 검증 코드를 더 포함한 것을 특징으로 하는 응용프로그램과 부가응용프로그램의 결합 방법.
  7. 제1항 또는 제6항에 있어서, 상기 제3단계 후 상기 결합서버는 상기 응용프로그램과 연계되어 실행되는 연계파일들에 대해 전자 서명하여 기록하고, 상기 결합모체파일은 전자서명 검증 코드를 더 포함한 것을 특징으로 하는 응용프로그램과 부가응용프로그램의 결합 방법.
  8. 제1항에 있어서, 상기 응용프로그램을 구동시키는 코드는,
    상기 결합파일이 엔드유저컴퓨터에서 실행되어 결합파일 구동 프로세스가 생성된 상태에서, 상기 결합파일 구동 프로세스의 자식프로세스를 일시정지(suspended) 옵션으로 생성하고, 상기 자식프로세스의 이미지 공간을 상기 응용프로그램 실행코드의 필요 이미지 사이즈만큼 확보하고, 상기 자식프로세스의 이미지 공간에 상기 응용프로그램 실행코드를 덮어쓰고, 윈도우즈 운영체제의 쓰레드 컨텍스트를 수정한 후 상기 자식프로세스를 실행하는 것을 특징으로 하는 응용프로그램과 부가응용프로그램의 결합 방법.
  9. 제8항에 있어서, 상기 응용프로그램을 구동시키는 코드는,
    상기 결합파일 구동 프로세스와 상기 자식프로세스에 상호 정상적으로 동작하고 있는지를 검증하는 통신 라이브러리를 삽입하는 것을 특징으로 하는 응용프로그램과 부가응용프로그램의 결합 방법.
  10. 부가응용프로그램 실행코드와 응용프로그램을 구동시키는 코드를 포함한 실행파일 형태의 결합모체파일과, 상기 결합모체파일의 후미에 정렬되며 결합파일로부터 응용프로그램 실행코드를 분리하는데 필요한 정보를 저장한 중간헤더와, 상기 중간헤더의 후미에 정렬된 상기 응용프로그램 실행코드를 포함한 상기 결합파일로부터 상기 응용프로그램과 부가응용프로그램을 실행하는 방법에 있어서,
    컴퓨터에서 상기 결합파일이 실행되면 상기 컴퓨터가 결합파일 구동 프로세스를 생성하는 제1단계와,
    상기 컴퓨터가 상기 부가응용프로그램 실행코드를 실행하는 제2단계와,
    상기 컴퓨터가 상기 응용프로그램 실행코드를 분리하는 제3단계와,
    상기 컴퓨터가 상기 결합파일 구동 프로세스의 자식프로세스를 생성하고 상기 생성된 자식프로세스에 상기 응용프로그램 실행코드를 덮어쓰고 윈도우즈 운영체제의 쓰레드 컨텍스트를 수정한 후 상기 자식프로세스를 실행시키는 제4단계를 포함한 것을 특징으로 하는 응용프로그램과 부가응용프로그램의 실행 방법.
  11. 제10항에 있어서, 상기 제1단계에서, 상기 컴퓨터에서 상기 결합파일이 실행되면 상기 컴퓨터가 상기 결합파일에 대해 전자서명을 검증하고 오류가 발생하지 않으면 상기 결합파일 구동 프로세스를 생성하는 것을 특징으로 하는 응용프로그램과 부가응용프로그램의 실행 방법.
  12. 제10항에 있어서, 상기 제1단계에서, 상기 컴퓨터에서 상기 결합파일이 실행되면 상기 컴퓨터가 상기 응용프로그램과 연계되어 실행되는 연계파일들에 대해 전자서명을 검증하고 오류가 발생하지 않으면 상기 결합파일 구동 프로세스를 생성하는 것을 특징으로 하는 응용프로그램과 부가응용프로그램의 실행 방법
  13. 제10항에 있어서, 상기 응용프로그램 실행코드는 암호화된 후 상기 중간헤더의 후미에 정렬되고 상기 결합모체파일은 상기 암호화된 응용프로그램 실행코드를 복호화시키는 코드를 포함하며, 상기 컴퓨터는 상기 제3단계에서 분리된 암호화된 응용프로그램 실행코드를 복호화한 후 상기 제4단계를 수행하는 것을 특징으로 하는 응용프로그램과 부가응용프로그램의 실행 방법.
  14. 제10항에 있어서, 상기 결합파일의 아이콘은 상기 응용프로그램의 아이콘과 동일한 것을 특징으로 하는 응용프로그램과 부가응용프로그램의 실행 방법.
  15. 제10항에 있어서, 상기 결합파일의 파일정보는 상기 응용프로그램의 파일정보와 동일한 것을 특징으로 하는 응용프로그램과 부가응용프로그램의 실행 방법.
  16. 제10항에 있어서, 상기 제4단계 후, 상기 컴퓨터는 상기 결합파일 구동 프로세스와 상기 자식프로세스에 상호 정상적으로 동작하고 있는지를 검증하는 통신 라이브러리를 삽입하는 제5단계를 더 포함한 것을 특징으로 하는 응용프로그램과 부가응용프로그램의 실행 방법.
  17. 제10항에 있어서, 상기 결합파일 구동 프로세스의 자식프로세스는 일시정지(suspended) 옵션으로 생성되는 것을 특징으로 하는 응용프로그램과 부가응용프로그램의 실행 방법.
  18. 제10항에 있어서, 상기 컴퓨터는 상기 자식프로세스의 이미지 공간을 상기 응용프로그램 실행코드의 필요 이미지 사이즈만큼 확보한 후 상기 자식프로세스에 상기 응용프로그램 실행코드를 덮어쓰는 것을 특징으로 하는 응용프로그램과 부가응용프로그램의 실행 방법.
  19. 응용프로그램을 엔드유저컴퓨터에 다운로드하는 다운로드서버에 있어서,
    결합파일을 상기 엔드유저컴퓨터에 다운로드하고,
    상기 결합파일은 부가응용프로그램 실행코드와 응용프로그램을 구동시키는 코드를 포함한 실행파일 형태의 결합모체파일과, 상기 결합모체파일의 후미에 정렬되며 상기 결합파일로부터 응용프로그램 실행코드를 분리하는데 필요한 정보를 저장한 중간헤더와, 상기 중간헤더의 후미에 정렬된 상기 응용프로그램 실행코드를 포함한 것을 특징으로 하는 다운로드서버.
  20. 제19항에 있어서, 상기 결합파일은 상기 엔드유저컴퓨터에서 실행되면 상기 엔드유저컴퓨터에 결합파일 구동 프로세스가 생성되고,
    상기 엔드유저컴퓨터에 생성된 결합파일 구동 프로세스는,
    상기 부가응용프로그램 실행코드를 실행하고, 상기 응용프로그램 실행코드를 분리하고, 상기 결합파일 구동 프로세스의 자식프로세스를 생성하고 상기 생성된 자식프로세스에 상기 응용프로그램 실행코드를 덮어쓰고 윈도우즈 운영체제의 쓰레드 컨텍스트를 수정한 후 상기 자식프로세스를 실행시키는 것을 특징으로 하는 다운로드 서버.
  21. 제20항에 있어서, 상기 결합파일은 상기 결합파일에 대한 전자서명과 전자서명 검증코드를 더 포함한 것을 특징으로 하는 다운로드 서버.
  22. 제20항에 있어서, 상기 결합파일 구동 프로세스는 상기 응용프로그램과 연계되어 실행되는 연계파일들에 대한 전자서명 검증 후 생성되는 것을 특징으로 하는 다운로드 서버.
  23. 제20항에 있어서, 상기 응용프로그램 실행코드는 암호화된 후 상기 중간헤더의 후미에 정렬되고 상기 결합모체파일은 상기 암호화된 응용프로그램 실행코드를 복호화시키는 코드를 더 포함한 것을 다운로드 서버.
  24. 제20항에 있어서, 상기 결합파일의 아이콘은 상기 응용프로그램의 아이콘과 동일한 것을 특징으로 하는 다운로드 서버.
  25. 제20항에 있어서, 상기 결합파일의 파일정보는 상기 응용프로그램의 파일정보와 동일한 것을 특징으로 하는 다운로드 서버.
  26. 제20항에 있어서, 상기 결합파일 구동 프로세스의 자식프로세스는 일시정지(suspended) 옵션으로 생성되는 것을 특징으로 하는 다운로드 서버.
  27. 제20항에 있어서, 상기 결합파일 구동 프로세스는 상기 자식프로세스의 이미지 공간을 상기 응용프로그램 실행코드의 필요 이미지 사이즈만큼 확보한 후 상기 자식프로세스에 상기 응용프로그램 실행코드를 덮어쓰는 것을 특징으로 하는 다운로드 서버.


KR20100080168A 2010-08-19 2010-08-19 응용프로그램과 부가응용프로그램의 결합 방법 및 실행 방법 KR101134116B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR20100080168A KR101134116B1 (ko) 2010-08-19 2010-08-19 응용프로그램과 부가응용프로그램의 결합 방법 및 실행 방법
PCT/KR2011/006016 WO2012023786A2 (ko) 2010-08-19 2011-08-17 응용프로그램과 부가응용프로그램의 결합 방법 및 실행 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20100080168A KR101134116B1 (ko) 2010-08-19 2010-08-19 응용프로그램과 부가응용프로그램의 결합 방법 및 실행 방법

Publications (2)

Publication Number Publication Date
KR20120017532A KR20120017532A (ko) 2012-02-29
KR101134116B1 true KR101134116B1 (ko) 2012-04-09

Family

ID=45605547

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20100080168A KR101134116B1 (ko) 2010-08-19 2010-08-19 응용프로그램과 부가응용프로그램의 결합 방법 및 실행 방법

Country Status (2)

Country Link
KR (1) KR101134116B1 (ko)
WO (1) WO2012023786A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107908403A (zh) * 2017-11-10 2018-04-13 北京搜狐新动力信息技术有限公司 一种移动端业务模块组件化的配置方法及系统

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130135159A (ko) * 2012-05-31 2013-12-10 장길훈 애플리케이션 커스터마이즈를 위한 앱 재구성 단말기 및 서버
US10838406B2 (en) * 2013-02-11 2020-11-17 The Aerospace Corporation Systems and methods for the patterning of material substrates
KR101641769B1 (ko) * 2014-06-20 2016-07-29 주식회사 큐브피아 바이너리 파일의 보호방법 및 보호된 바이너리 파일의 실행방법
KR102177920B1 (ko) * 2018-10-12 2020-11-13 네이버비즈니스플랫폼 주식회사 원본코드 패킹장치 및 원본코드 패킹방법
CN110045969B (zh) * 2019-04-23 2022-06-28 广东小天才科技有限公司 应用程序安装方法、服务器、系统、设备及存储介质
CN113158147B (zh) * 2021-03-24 2022-12-09 中国人民解放军战略支援部队信息工程大学 一种基于母体融合的代码混淆方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06119156A (ja) * 1992-10-06 1994-04-28 Hitachi Ltd プログラム自動生成方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6637020B1 (en) * 1998-12-03 2003-10-21 International Business Machines Corporation Creating applications within data processing systems by combining program components dynamically
US6871348B1 (en) * 1999-09-15 2005-03-22 Intel Corporation Method and apparatus for integrating the user interfaces of multiple applications into one application
WO2007148900A1 (en) * 2006-06-19 2007-12-27 Samsung Electronics Co., Ltd. Program upgrade system and method for ota-capable portable device
BRPI0822544B1 (pt) * 2008-08-29 2019-09-03 Hewlett Packard Development Co sistema para combinar interfaces de aplicações externas e subaplicações e método para combinar interfaces de aplicações externas e subaplicações

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06119156A (ja) * 1992-10-06 1994-04-28 Hitachi Ltd プログラム自動生成方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107908403A (zh) * 2017-11-10 2018-04-13 北京搜狐新动力信息技术有限公司 一种移动端业务模块组件化的配置方法及系统

Also Published As

Publication number Publication date
WO2012023786A2 (ko) 2012-02-23
KR20120017532A (ko) 2012-02-29
WO2012023786A3 (ko) 2012-06-21

Similar Documents

Publication Publication Date Title
KR101134116B1 (ko) 응용프로그램과 부가응용프로그램의 결합 방법 및 실행 방법
US10185837B2 (en) System and method for encapsulating and enabling protection through diverse variations in software libraries
JP5460699B2 (ja) ソフトウェアアプリケーションのホワイトボックス実装を生成するためのシステムおよび方法
KR101104035B1 (ko) 자원 매니페스트
US9747425B2 (en) Method and system for restricting execution of virtual application to a managed process environment
US8612947B2 (en) System and method for remotely compiling multi-platform native applications for mobile devices
JP5403771B2 (ja) ファームウェアに安全なアップデートを提供するシステム及び方法
US8250458B2 (en) Method, system, and software tool for emulating a portal application
CN109284586A (zh) 一种软件授权许可实现方法和装置
Chopra et al. Professional apache tomcat 6
WO2007084265A1 (en) Techniques for generating and executing browser-hosted applications
Gok et al. Building Hybrid Android Apps with Java and JavaScript: Applying Native Device APIs
JP2018527664A (ja) アプリケーションのコードを保護するためのシステムおよび方法
Dickey Write modern web apps with the MEAN stack: Mongo, Express, AngularJS, and Node. js
Nedelcu Nginx HTTP Server
KR20160117183A (ko) Dll 파일 암호화 방법, 이를 수행하는 dll 파일 암호화 시스템, 및 이를 저장하는 기록매체
Fjordvald et al. Nginx HTTP Server: Harness the power of Nginx to make the most of your infrastructure and serve pages faster than ever before
CN112115430A (zh) 一种apk的加固方法、电子设备及存储介质
CN112270002A (zh) 全盘加密方法、系统运行方法和电子设备
CN116305011A (zh) 应用程序的保护方法和安装方法
CN115794118A (zh) 内核代码处理方法及电子设备
Virkus Pro J2ME Polish: open source wireless Java tools suite
KR100568999B1 (ko) 동적 파일결합 시스템 및 파일 다운로드 방법
Debbabi et al. Embedded Java security: security for mobile devices
Marchioni JBoss AS 7 Development

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150430

Year of fee payment: 4