KR20230164947A - 애플리케이션 프로그램을 저장하는 저장 매체 및 그것을 처리하는 방법 - Google Patents

애플리케이션 프로그램을 저장하는 저장 매체 및 그것을 처리하는 방법 Download PDF

Info

Publication number
KR20230164947A
KR20230164947A KR1020220064721A KR20220064721A KR20230164947A KR 20230164947 A KR20230164947 A KR 20230164947A KR 1020220064721 A KR1020220064721 A KR 1020220064721A KR 20220064721 A KR20220064721 A KR 20220064721A KR 20230164947 A KR20230164947 A KR 20230164947A
Authority
KR
South Korea
Prior art keywords
application program
framework
application
dummy
memory
Prior art date
Application number
KR1020220064721A
Other languages
English (en)
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 KR1020220064721A priority Critical patent/KR20230164947A/ko
Publication of KR20230164947A publication Critical patent/KR20230164947A/ko

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
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories

Landscapes

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

Abstract

본 발명의 실시 예에 따른 저장 매체는 애플리케이션 프로그램을 포함한다. 애플리케이션 프로그램은 헤더부 및 헤더부와 연관되며 다수의 프레임워크들을 포함하는 프레임워크부를 포함한다. 프레임워크부는 메모리에 로드될 때 애플리케이션 프로그램과 연관된 비정상 액션을 야기하기 위한 더미 프레임워크를 포함하고, 헤더부는 애플리케이션 프로그램 내 더미 프레임워크에 대한 어드레스 없이 애플리케이션 프로그램 내 다수의 프레임워크들에 대한 어드레스들을 포함한다.

Description

애플리케이션 프로그램을 저장하는 저장 매체 및 그것을 처리하는 방법{STORAGE MEDIUM TO STORE APPLICATION PROGRAM AND METHOD TO PROCESS THE SAME}
본 발명은 전자 장치에 관한 것으로, 좀 더 구체적으로는 애플리케이션 프로그램을 저장하는 저장 매체 및 그것을 처리하는 방법에 관한 것이다.
보안 해커(security hacker)는 애플리케이션 프로그램을 분석 및 해킹하기 위해 해당 애플리케이션 프로그램의 데이터를 획득할 수 있다. 이를 위해, 보안 해커는 컴퓨터 장치에 설치된 애플리케이션 프로그램의 데이터를 메모리에 로드 혹은 덤프(dump)하도록 컴퓨터 장치를 제어하고, 메모리로부터 로드된 데이터를 획득할 수 있다.
위 기재된 내용은 오직 본 발명의 기술적 사상들에 대한 배경 기술의 이해를 돕기 위한 것이며, 따라서 그것은 본 발명의 기술 분야의 당업자에게 알려진 선행 기술에 해당하는 내용으로 이해될 수 없다.
본 발명의 실시 예들은 향상된 보안 레벨을 갖는 애플리케이션 프로그램을 저장하는 저장 매체 및 애플리케이션 프로그램을 처리하는 방법을 제공하기 위한 것이다. 예를 들면, 애플리케이션 프로그램은, 어드레스가 헤더부에 포함되지 않으면서 메모리에 로드될 때 애플리케이션 프로그램과 연관된 비정상 액션을 야기하는 더미 프레임워크를 포함할 수 있다.
본 발명의 일면은 애플리케이션 프로그램을 저장하는, 컴퓨터 장치에 의해 판독 가능한 저장 매체에 관한 것이다. 상기 컴퓨터 장치는 상기 애플리케이션 프로그램을 로드하기 위한 메모리를 포함하고, 상기 애플리케이션 프로그램은, 헤더부; 및 상기 헤더부와 연관되며, 다수의 프레임워크들을 포함하는 프레임워크부를 포함한다. 상기 프레임워크부는 상기 메모리에 로드될 때 상기 애플리케이션 프로그램과 연관된 비정상 액션을 야기하기 위한 더미 프레임워크를 포함하고, 상기 헤더부는 상기 애플리케이션 프로그램 내 상기 더미 프레임워크에 대한 어드레스 없이, 상기 애플리케이션 프로그램 내 상기 다수의 프레임워크들에 대한 어드레스들을 포함한다.
상기 비정상 액션은 상기 애플리케이션 프로그램과 연관된 크래쉬를 발생시키는 것을 포함할 수 있다.
상기 컴퓨터 장치는 상기 메모리에 연결된 프로세서를 더 포함할 수 있으며, 상기 메모리에 로드된 상기 더미 프레임워크는 상기 애플리케이션 프로그램과 연관된 동작의 수행을 종료하도록 상기 프로세서를 커맨드할 수 있다.
상기 더미 프레임워크는 상기 애플리케이션 프로그램과 연관된 크래쉬를 야기하기 위한 보안 프레임워크를 포함할 수 있다.
상기 더미 프레임워크는 상기 프레임워크부의 디렉토리 안에 속할 수 있다.
상기 애플리케이션 프로그램은 상기 더미 프레임워크를 포함하는 상기 애플리케이션 프로그램에 대해 서명함으로써 생성된 인증 데이터를 더 포함할 수 있다.
상기 애플리케이션 프로그램은 상기 헤더부와 연관된 바이너리부를 더 포함할 수 있다.
본 발명의 다른 일면은 네트워크 서버에서 애플리케이션 프로그램을 처리하는 방법에 관한 것이다. 상기 방법은, 클라이언트 단말기로부터 애플리케이션 프로그램을 수신하되, 상기 애플리케이션 프로그램은 다수의 프레임워크들을 포함하는 프레임워크부 및 상기 프레임워크부와 연관되는 헤더부를 포함하는, 단계; 메모리에 로드될 때 상기 애플리케이션 프로그램과 연관된 비정상 액션을 야기하기 위한 더미 프레임워크를 상기 프레임워크부에 삽입하는 단계; 및 상기 더미 프레임워크가 삽입되어 변형된 상기 애플리케이션 프로그램을 상기 클라이언트 단말기에 제공하는 단계를 포함한다. 상기 변형된 애플리케이션 프로그램의 상기 헤더부는 상기 애플리케이션 프로그램 내 상기 더미 프레임워크에 대한 어드레스 없이, 상기 애플리케이션 프로그램 내 상기 다수의 프레임워크들에 대한 상기 어드레스들을 포함한다.
상기 클라이언트 단말기로부터 수신된 상기 애플리케이션 프로그램은 컴파일된 것일 수 있다.
상기 비정상 액션은 상기 애플리케이션 프로그램과 연관된 크래쉬를 발생시키는 것을 포함할 수 있다.
상기 메모리에 로드된 상기 더미 프레임워크는, 상기 메모리를 포함하는 컴퓨터 장치가 상기 애플리케이션 프로그램과 연관된 동작의 수행을 종료하도록, 상기 컴퓨터 장치를 커맨드할 수 있다.
상기 더미 프레임워크는 상기 애플리케이션 프로그램과 연관된 크래쉬를 야기하기 위한 보안 프레임워크를 포함할 수 있다.
상기 더미 프레임워크는 상기 프레임워크부의 디렉토리 안에 속하도록 삽입될 수 있다.
상기 방법은 상기 변형된 애플리케이션 프로그램에 대한 서명을 수행하는 단계를 더 포함할 수 있다. 이때, 상기 서명이 수행된 상기 변형된 애플리케이션 프로그램이 상기 클라이언트 단말기에 제공될 수 있다.
본 발명의 실시 예들에 따르면, 향상된 보안 레벨을 갖는 애플리케이션 프로그램을 저장하는 저장 매체 및 애플리케이션 프로그램을 처리하는 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 응용 애플리케이션을 포함하는 컴퓨터 장치의 실시 예를 보여주는 블록도이다.
도 2는 도 1의 응용 애플리케이션의 실시 예를 보여주는 블록도이다.
도 3은 도 2의 응용 애플리케이션이 일반적인 애플리케이션 로더에 의해 메모리에 로드되는 과정들을 설명하기 위한 블록도이다.
도 4는 도 2의 응용 애플리케이션이 덤프 툴에 의해 메모리에 로드되는 과정들을 설명하기 위한 블록도이다.
도 5는 도 4의 감지 모듈의 동작 방법의 실시 예를 보여주는 순서도이다.
도 6은 본 발명의 실시 예에 따른 네트워크 시스템을 보여주는 블록도이다.
도 7은 도 6의 네트워크 서버의 동작 방법의 실시 예를 보여주는 순서도이다.
도 8은 도 7의 동작 방법에 따라 응용 애플리케이션이 가공되는 과정들을 보여주는 블록도이다.
도 9는 도 1의 컴퓨터 장치와 통신하는 클라이언트 서버의 실시 예를 보여주는 블록도이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 모호하지 않도록 하기 위해 생략될 것이라는 것을 유의하여야 한다. 또한 본 발명은 여기에서 설명되는 실시 예에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 여기에서 설명되는 실시 예는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "간접적으로 연결"되어 있는 경우도 포함한다. 여기에서 사용된 용어는 특정한 실시예들을 설명하기 위한 것이며 본 발명을 한정하기 위한 것이 아니다. 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. "X, Y, 및 Z 중 적어도 어느 하나", 그리고 "X, Y, 및 Z로 구성된 그룹으로부터 선택된 적어도 어느 하나"는 X 하나, Y 하나, Z 하나, 또는 X, Y, 및 Z 중 둘 또는 그 이상의 어떤 조합 (예를 들면, XYZ, XYY, YZ, ZZ) 으로 해석될 수 있다. 여기에서, "및/또는"은 해당 구성들 중 하나 또는 그 이상의 모든 조합을 포함한다.
도 1은 본 발명의 실시 예에 따른 응용 애플리케이션을 포함하는 컴퓨터 장치의 실시 예를 보여주는 블록도이다.
도 1을 참조하면, 컴퓨터 장치(100)는 통신기(110), 사용자 인터페이스(120), 디스플레이 장치(130), 저장 매체(140), 프로세서(150), 및 시스템 메모리(160)를 포함할 수 있다.
통신기(110)는 네트워크를 통해 외부 장치와 유/무선 신호를 송신하도록 구성된다. 통신기(110)는 프로세서(150)의 제어에 응답하여 외부 장치에 데이터를 전송할 수 있으며, 외부 장치로부터 전송된 데이터를 프로세서(150)에 제공할 수 있다.
사용자 인터페이스(120)는 컴퓨터 장치(100) 혹은 프로세서(150)의 동작들을 제어하기 위한 사용자 입력을 수신한다. 사용자 인터페이스(120)는 키 패드(key pad), 돔 스위치(dome switch), 터치 패드(정압/정전), 조그 휠, 조그 스위치, 핑거 마우스 등을 포함할 수 있다.
디스플레이 장치(130)는 프로세서(150)의 제어에 응답하여 동작한다. 디스플레이 장치(130)는 컴퓨터 장치(100) 혹은 프로세서(150)에 의해 처리되는 정보를 디스플레이한다. 예를 들면, 디스플레이 장치(130)는 프로세서(150)의 제어에 따라 영상을 디스플레이할 수 있다.
저장 매체(140)는 플래시 메모리, 하드 디스크, 멀티미디어 카드(multimedia card) 등의 불휘발성 저장 매체들 중 적어도 하나를 포함할 수 있다. 저장 매체(140)는 프로세서(150)의 제어에 응답하여 데이터를 쓰고 읽도록 구성된다.
프로세서(150)는 범용 혹은 전용 프로세서 중 어느 하나를 포함할 수 있으며, 통신기(110), 사용자 인터페이스(120), 디스플레이 장치(130), 저장 매체(140), 및 시스템 메모리(160)의 동작들을 제어한다.
시스템 메모리(160)는 프로세서(150)의 워킹 메모리로서 제공될 수 있다. 프로세서(150)는 데이터 세트들(예를 들면, 프로그램 코드들, 커맨드들, 명령어들, 혹은 그들의 그룹들)을 저장 매체(140)로부터 시스템 메모리(160)에 로딩하고, 로딩된 데이터 세트들을 실행할 수 있다.
프로세서(150)는 도 1의 응용 애플리케이션(161)과 같은 애플리케이션 프로그램을 시스템 메모리(160)에 로드할 수 있다. 좀 더 구체적으로, 프로세서(150)는 프로세서(150)에 의해 실행될 때 다양한 동작들을 수행하는 응용 애플리케이션(161)을 시스템 메모리(160)에 로딩하고, 로딩된 응용 애플리케이션(161)을 실행할 수 있다. 프로세서(150)는 운영 체제(162)를 시스템 메모리(160)에 로딩하고, 로딩된 운영 체제(162)를 실행할 수 있다. 운영 체제(162)는 응용 애플리케이션(161)이 컴퓨터 장치(100)의 구성 요소들을 이용할 수 있도록, 프로세서(150)에 의해 실행될 때 응용 애플리케이션(161)과 컴퓨터 장치(100)의 구성 요소들 사이를 인터페이싱할 수 있다. 운영 체제(162)는 응용 애플리케이션(161)을 시스템 메모리(160)에 로딩하기 위한 애플리케이션 로더(도 3의 310 참조)를 포함할 수 있다. 실시 예들에서, 운영 체제(162)는 iOS일 수 있다.
도 1에서, 시스템 메모리(160)는 하나의 구성 요소로 도시되어 있다. 그러나, 본 발명의 실시 예들은 여기에 한정되지 않으며, 시스템 메모리(160)는 2 이상의 구분된 구성 요소들로서 제공될 수 있다. 도 1에서, 시스템 메모리(160)는 프로세서(150)와 구분된 구성 요소로서 도시되어 있으나, 시스템 메모리(160)의 적어도 일부는 프로세서(150)에 포함될 수 있다.
도 2는 도 1의 응용 애플리케이션의 실시 예를 보여주는 블록도이다.
도 2를 참조하면, 응용 애플리케이션(200)은 헤더부(210), 프레임워크부(220), 및 메인 바이너리부(230)를 포함할 수 있다.
헤더부(210)는 응용 애플리케이션(200)에 포함된 데이터 세트들에 대한 관련 정보를 포함할 수 있다. 헤더부(210)는 응용 애플리케이션(200) 내 프레임워크부(220)의 어드레스(혹은 위치) 및 이름, 응용 애플리케이션(200) 내 제 1 내지 제 n 프레임워크들(FW1, FW2, ... , FWn) 각각의 어드레스 및 이름, 응용 애플리케이션(200) 내 메인 바이너리부(230)의 어드레스 및 이름, 그리고 응용 애플리케이션(200) 내 메인 바이너리부(230)의 데이터 세트들 각각의 어드레스 및 이름을 포함 및/또는 정의할 수 있다.
프레임워크부(220)는 라이브러리들(혹은 클래스들)을 포함할 수 있다. 프레임워크부(220)는 도 1의 제 1 내지 제 n 프레임워크들(FW1~FWn)을 포함할 수 있으며, 제 1 내지 제 n 프레임워크들(FW1~FWn) 각각은 운영 체제(162)를 위한 라이브러리들(혹은 클래스들)의 집합일 수 있다. 제 1 내지 제 n 프레임워크들(FW1~FWn) 각각은 소정의 동작, 기능, 및 목적을 위한 라이브러리들의 집합일 수 있으며, 응용 애플리케이션(200)의 개발자는 제 1 내지 제 n 프레임워크들(FW1~FWn)을 사용함으로써 운영 체제(162)를 위한 표준 구조를 응용 애플리케이션(200)에서 구현할 수 있다.
프레임워크부(220)는 도 2의 보안 프레임워크(SFW)와 같은 형태의, 시스템 메모리(160, 도 1 참조)에 로드될 때 응용 애플리케이션(200)과 연관된 비정상 액션을 야기하도록 구성되는 더미 프레임워크를 포함할 수 있다. 실시 예들에서, 보안 프레임워크(SFW)는 응용 애플리케이션(200)과 연관된 크래쉬(crash)를 야기할 수 있다.
실시 예들에서, 보안 프레임워크(SFW)는 응용 애플리케이션(200)과 연관된 동작의 수행을 종료하도록 프로세서(150, 도 1 참조) 혹은 운영 체제(162, 도 1 참조)를 제어하는 커맨드(CMD)를 포함할 수 있다. 예를 들면, 커맨드(CMD)는 운영 체제(162)가 지원하는, 혹은 운영 체제(162)의 라이브러리에 포함된, 미리 정해진 함수를 포함할 수 있다. 예를 들면, iOS와 같은 운영 체제(162)는 시스템 메모리(160)에 로드되는 데이터 중 커맨드(CMD)를 감지할 수 있으며, 커맨드(CMD)는 응용 애플리케이션(200)과 연관된 동작의 수행을 종료하도록 운영 체제(162)를 제어하는 엑시트(exit) 함수를 포함할 수 있다.
메인 바이너리부(230)는 응용 애플리케이션(200)의 주된 동작 혹은 기능을 수행하기 위한 데이터 세트들을 포함할 수 있으며, 응용 애플리케이션(200)의 개발자에 의해 빌드업될 수 있다. 메인 바이너리부(230)는 제 1 내지 제 n 프레임워크들(FW1~FWn)을 사용(혹은 호출)할 수 있다.
실시 예들에서, 응용 애플리케이션(200) 및/또는 메인 바이너리부(230)는 컴파일된 것일 수 있다.
도 3은 도 2의 응용 애플리케이션이 일반적인 애플리케이션 로더에 의해 메모리에 로드되는 과정들을 설명하기 위한 블록도이다.
도 3을 참조하면, 응용 애플리케이션(200)은 저장 매체(140)에 저장될 수 있다. 여기에서, 운영 체제(162)는 파일들 및 파일들 각각의 데이터 세트들을 계층화 및 관리하는 파일 시스템(file system)에 기반하여 저장 매체(140)에 저장된 데이터를 관리할 수 있다. 예를 들면, 응용 애플리케이션(200)은 파일 시스템에 저장된 것으로 이해될 수 있다.
로더(310) 혹은 애플리케이션 로더는 응용 애플리케이션(200)을 부분적으로 시스템 메모리(160)에 로드할 수 있다. 실시 예들에서, 로더(310)는 운영 체제(162)에 포함될 수 있다. 실시 예들에서, 로더(310)는 프로세서(150)의 펌웨어(firmware)로서 구현될 수 있다.
응용 애플리케이션(200)을 시스템 메모리(160)에 로드하여 실행하기 위해, 로더(310)는 먼저 응용 애플리케이션(200)의 헤더부(210)를 읽을 수 있다(S110). 헤더부(210)는 응용 애플리케이션(200)의 디렉토리 내 제 1 내지 제 n 프레임워크들(FW1~FWn)의 위치들을 나타내는 제 1 내지 제 n 프레임워크 어드레스들(AD_FW1, AD_FW2, ... , AD_FWn), 그리고 응용 애플리케이션(200)의 디렉토리 내 메인 바이너리부(230)의 위치를 나타내는 바이너리 어드레스(AD_MB)를 포함할 수 있다. 반면, 헤더부(210)는 보안 프레임워크(SFW)와 연관된 정보, 예를 들면 어드레스를 포함하지 않는다.
실시 예들에서, 헤더부(210)는 응용 애플리케이션(200)에 대한 컴파일에 따라 생성될 수 있다.
로더(310)는 읽어진 제 1 내지 제 n 프레임워크 어드레스들(AD_FW1~AD_FWn)에 기반하여 제 1 내지 제 n 프레임워크들(FW1~FWn)을 시스템 메모리(160)에 로드할 수 있다(S120). 헤더부(210)는 위 설명된 바와 같이 보안 프레임워크(SFW)의 어드레스를 포함하지 않으므로, 보안 프레임워크(SFW)는 시스템 메모리(160)에 로드되지 않는다.
또한, 로더(310)는 읽어진 바이너리 어드레스(AD_MB)에 기반하여 메인 바이너리부(230)를 시스템 메모리(160)에 로드할 수 있다(S130).
로드된 제 1 내지 제 n 프레임워크들(FW1~FWn) 및 메인 바이너리부(230)는 로드된 응용 애플리케이션(165)을 구성할 수 있다. 로드된 응용 애플리케이션(165)은 프로세서(150, 도 1 참조)에 의해 실행되어 다양한 동작들을 수행할 수 있다.
이와 같이, 일반적인 실행을 위해 시스템 메모리(160)에 로드된 응용 애플리케이션(165)은, 헤더부(210)에 기반하여 그 데이터가 로드되므로, 보안 프레임워크(SFW)를 포함하지 않는다.
도 4는 도 2의 응용 애플리케이션이 덤프 툴에 의해 메모리에 로드되는 과정들을 설명하기 위한 블록도이다.
도 4를 참조하면, 응용 애플리케이션(200)은 저장 매체(140)에 저장되어 있다.
덤프 툴(400)이 응용 애플리케이션(200)을 시스템 메모리(160)에 로드할 수 있다. 여기에서 덤프 툴(400)은 헤더부(210)에 기반하지 않고 응용 애플리케이션(200)을 시스템 메모리(160)에 덤프(dump) 혹은 로드하도록 구성되는 다양한 종류들의 애플리케이션들, 툴들, 및/또는 모듈들 중 적어도 하나를 포함할 수 있다.
실시 예들에서, 덤프 툴(400)은 해커 혹은 보안 해커의 컴퓨터에 의해 제공되어 사용자의 컴퓨터 장치(100)에 설치될 수 있다. 실시 예들에서, 덤프 툴(400)은 해커 혹은 보안 해커(security hacker) 컴퓨터에 포함되어 있으며, 통신기(110, 도 1 참조)를 통해 컴퓨터 장치(100)에 액세스할 수 있다. 응용 애플리케이션(200)의 개발자가 의도하지 않은 다양한 목적들을 위해, 응용 애플리케이션(200)의 데이터는 저장 매체(140)로부터 시스템 메모리(160)에 덤프(혹은 로드)될 수 있다. 예를 들면, 시스템 메모리(160)에 덤프된 응용 애플리케이션(200)의 데이터는 보안 해커 컴퓨터에 전송되어 분석 및 해킹될 수 있다.
이와 같은 이유에서, 응용 애플리케이션(200)의 데이터가 시스템 메모리(160)에 덤프되는 것은 방지될 필요가 있다. 특히 iOS 하의 애플리케이션 프로그램의 경우 이러한 방식의 데이터 덤프를 방지하기 위한 방안이 마련되지 않고 있다.
이하, 덤프 툴(400)이 응용 애플리케이션(200)을 시스템 메모리(160)에 로드하는 과정들이 설명된다.
먼저, 덤프 툴(400)은 저장 매체(140) 혹은 그 파일 시스템에서, 프레임워크부(220) 및 메인 바이너리부(230)의 디렉토리 경로들을 찾을 수 있다(S210). 도 4에서, 프레임워크부(220)는 제 1 디렉토리 경로(DRT1)를 가지며, 메인 바이너리부(230)는 제 2 디렉토리 경로(DRT2)를 갖는 것으로 도시된다.
덤프 툴(400)은 제 1 디렉토리 경로(DRT1)에 존재하는 데이터, 즉 제 1 내지 제 n 프레임워크들(FW1~FWn) 및 보안 프레임워크(SFW)를 시스템 메모리(160)에 로드할 수 있다(S220). 또한 덤프 툴(400)은 제 2 디렉토리 경로(DRT2)에 존재하는 데이터, 즉 메인 바이너리부(230)를 시스템 메모리(160)에 로드할 수 있다(S230). 이와 같이, 덤프 툴(400)은 응용 애플리케이션(200)의 취약점을 찾는 등의 다양한 목적들을 위해, 헤더부(210)에 기반하지 않고 응용 애플리케이션(200)의 디렉토리 경로들(DRT1, DRT2)에 존재하는 실질적으로 전체적인 데이터를 시스템 메모리(160)에 로드할 수 있다. 이러한 경우, 로드된 응용 애플리케이션(166)은 보안 프레임워크(SFW)를 포함할 수 있다.
컴퓨터 장치(100, 도 1 참조)는 시스템 메모리(160)에 로드되는 데이터를 모니터링하도록 구성되는 감지 모듈(320)을 포함할 수 있으며, 감지 모듈(320)은 로드된 응용 애플리케이션(166)에 포함된 보안 프레임워크(SFW)에 응답하여, 로드된 응용 애플리케이션(166)과 연관된 비정상 액션(예를 들면 크래쉬)을 발생시킬 수 있다. 실시 예들에서, 감지 모듈(320)은 운영 체제(162, 도 1 참조)에 포함될 수 있다. 실시 예들에서, 감지 모듈(320)은 로드된 응용 애플리케이션(166)에 포함된 커맨드(CMD)를 감지할 수 있으며, 커맨드(CMD)는 로드된 응용 애플리케이션(166)과 연관된 동작의 수행을 종료하도록 커맨드하는 엑시트 함수를 포함할 수 있다. 감지 모듈(320) 혹은 운영 체제(162)는 감지된 커맨드(CMD)를 실행함으로써 로드된 응용 애플리케이션(166)과 연관된 동작의 수행을 종료하도록 한다.
이와 같이, 프레임워크부(220)는 그 어드레스가 헤더부(210)에 포함되지 않되 시스템 메모리(160)에 로드될 때 로드된 응용 애플리케이션(166)과 연관된 비정상 액션을 야기하도록 구성되는 보안 프레임워크(SFW)를 포함한다. 이에 따라, 응용 애플리케이션(200)에 대한 메모리 덤프는 방지되며 그러므로 응용 애플리케이션(200)은 향상된 보안 레벨을 가질 수 있다. 예를 들면, 응용 애플리케이션(200)의 실질적으로 전체적인 데이터가 시스템 메모리(160)에 로드된 후 해커에게 노출되는 것은 방지될 수 있다.
도 5는 도 4의 감지 모듈의 동작 방법의 실시 예를 보여주는 순서도이다.
도 4 및 도 5를 참조하면, S310단계에서, 감지 모듈(320)은 시스템 메모리(160)에 로드되는 데이터를 모니터링한다. S320단계에서, 감지 모듈(320)은 시스템 메모리(160)에 로드된 응용 애플리케이션(166)에 보안 프레임워크(SFW)가 포함되는지 여부를 판별한다. 만약 그렇다면, S330단계가 수행된다.
S330단계에서, 감지 모듈(320) 혹은 운영 체제(162)는 보안 프레임워크(SFW)의 커맨드(CMD)를 수행하여 로드된 응용 애플리케이션(166)과 연관된 동작의 수행을 종료할 수 있다.
도 6은 본 발명의 실시 예에 따른 네트워크 시스템을 보여주는 블록도이다.
도 6을 참조하면, 네트워크 시스템(1000)은 네트워크(1100), 클라이언트 단말기(1200), 및 네트워크 서버(1300)를 포함할 수 있다.
네트워크 시스템(1000)은 여기에 설명된 본 발명의 실시 예들에 따른 다양한 방법들을 수행하도록 동작하는 복수의 장치들, 서버들, 및/또는 소프트웨어 구성들을 포함할 수 있다. 도 6에 도시된 장치들 및/또는 서버들은 다른 방식들로 구성될 수 있으며, 장치들 및/또는 서버들에 의해 제공되는 동작들 및 서비스들은 여기에 설명된 실시 예들을 위해 결합되거나 분리될 수 있으며, 더 많은 수 혹은 더 적은 수의 장치들 및/또는 서버들에 의해 수행될 수 있다. 하나 또는 그 이상의 장치들 및/또는 서버들은 동일 혹은 상이한 기업체들에 의해 구동 및/또는 유지될 수 있다.
네트워크(1100)는 클라이언트 단말기(1200) 및 네트워크 서버(1300)와 같은 네트워크 시스템(1000) 내 구성 요소들을 연결한다. 네트워크(1100)는 공용 네트워크(public network), 적어도 하나의 사설 네트워크(private network), 유선 네트워크, 무선 네트워크, 다른 적절한 타입의 네트워크, 및 그것들의 조합들 중 적어도 하나를 포함할 수 있다. 네트워크 시스템(1000) 내 구성 요소들 각각은 유선 통신 기능 및 무선 통신 기능 중 적어도 하나를 포함할 수 있으며, 그에 따라 네트워크(1100)를 통해 상호 간 통신할 수 있다.
클라이언트 단말기(1200)는 네트워크(1100)를 통해 네트워크 서버(1300)에 연결된다. 클라이언트 단말기(1200)는 도 2의 응용 애플리케이션(200)의 개발자의 컴퓨터 장치일 수 있다. 클라이언트 단말기(1200)는 개발자에 의해 개발된 응용 애플리케이션(200)을 네트워크(1100)를 통해 네트워크 서버(1300) 혹은 그 데이터베이스에 업로드할 수 있으며, 응용 애플리케이션(200)의 보안 처리를 요청할 수 있다.
네트워크 서버(1300)는 응용 애플리케이션(200)에 대한 보안 처리를 수행할 수 있다. 네트워크 서버(1300)는 보안 처리된 응용 애플리케이션(200)을 네트워크(1100)를 통해 클라이언트 단말기(1200)에 전송할 수 있으며, 이에 따라 개발자는 향상된 보안 레벨의 응용 애플리케이션(200)을 획득하고, 이를 배포할 수 있다.
도 7은 도 6의 네트워크 서버의 동작 방법의 실시 예를 보여주는 순서도이다. 도 8은 도 7의 동작 방법에 따라 응용 애플리케이션이 가공되는 과정들을 보여주는 블록도이다.
도 6 내지 도 8을 참조하면, S410단계에서, 네트워크 서버(1300)는 클라이언트 단말기(1200)로부터 응용 애플리케이션(500)을 수신한다.
응용 애플리케이션(500)은 프레임워크부(520) 및 메인 바이너리부(530)를 포함할 수 있다. 응용 애플리케이션(500)은 컴파일되어 있을 수 있으며, 이에 따라 프레임워크부(520) 및 메인 바이너리부(530)의 관련 정보를 포함하는 헤더부(510)를 더 포함할 수 있다. 헤더부(510) 및 메인 바이너리부(530)는 각각 도 2를 참조하여 설명된 헤더부(210) 및 메인 바이너리부(230)와 마찬가지로 구성된다. 프레임워크부(520)는 제 1 내지 제 n 프레임워크들(FW1~FWn)을 포함한다.
실시 예들에서, 응용 애플리케이션(500)은 클라이언트 단말기(1200) 혹은 개발자가 응용 애플리케이션(500)에 대해 서명함으로써 생성된 원(original) 인증 데이터(OAT)를 포함할 수 있다. 예를 들면, 원 인증 데이터(OAT)는 응용 애플리케이션(500)의 데이터를 적어도 부분적으로 이용하여 생성된 해쉬값을 포함할 수 있다. 원 인증 데이터(OAT)는 응용 애플리케이션(500)을 이루는 데이터가 무결함, 즉 타인에 의해 훼손되지 않았음을 검증하는 데에 사용될 수 있다.
S420단계에서, 네트워크 서버(1300)는 메모리에 로드될 때 응용 애플리케이션(500)과 연관된 비정상 액션을 야기하는 보안 프레임워크(SFW)를 응용 애플리케이션(500)의 프레임워크부(520)에 삽입하여 응용 애플리케이션(500)을 변형한다. 예를 들면, 네트워크 서버(1300)는 응용 애플리케이션(500) 내 프레임워크부(520)의 디렉토리 경로를 찾고, 찾은 디렉토리 경로 내에 보안 프레임워크(SFW)을 삽입할 수 있다. 보안 프레임워크(SFW)는 그것이 메모리에 로드될 때 응용 애플리케이션(500)과 연관된 동작의 수행을 종료하도록 해당 프로세서 혹은 운영 체제를 커맨드할 수 있다.
도 8에서, 변형된 응용 애플리케이션(600)은 헤더부(510), 변형된 프레임워크부(620), 및 메인 바이너리부(530)를 포함하며, 변형된 프레임워크부(620)는 보안 프레임워크(SFW)를 더 포함하는 것으로 도시된다.
헤더부(510)는 클라이언트 단말기(1200)로부터 수신된 응용 애플리케이션(500)에 대한 컴파일에 따라 이미 생성되었으므로, 보안 프레임워크(SFW)에 대한 어드레스와 같은 관련 정보는 포함하지 않는다.
보안 프레임워크(SFW)가 프레임워크부(620)에 삽입됨에 따라, 응용 애플리케이션(500)을 이루는 데이터의 무결성이 훼손된다. 예를 들면, 변형된 응용 애플리케이션(600)의 데이터를 이용하여 생성되는 해쉬값은 원 인증 데이터(OAT)의 해쉬값과 상이할 수 있으며, 이러한 변형된 응용 애플리케이션(600)은 다른 장치들, 예를 들면 일반 사용자의 단말기에서의 검증에서 페일될 수 있다.
이에 따라, S430단계에서, 네트워크 서버(1300)는 변형된 응용 애플리케이션(600)에 대한 서명을 수행하여, 변형된 응용 애플리케이션(600)에 새로운 인증 데이터(NAT)를 포함시킬 수 있다. 실시 예들에서, 네트워크 서버(1300)는 보안 프레임워크(SFW)를 포함한 변형된 응용 애플리케이션(600)의 데이터를 이용하여 해쉬값을 생성하고, 생성된 해쉬값을 포함하는 새로운 인증 데이터(NAT)를 변형된 응용 애플리케이션(600)에 삽입할 수 있다. 도 8에서, 서명된 응용 애플리케이션(700)은 헤더부(510), 변형된 프레임워크부(620), 메인 바이너리부(530), 그리고 새로운 인증 데이터(NAT)를 포함하는 것으로 도시된다. 새로운 인증 데이터(NAT)는 서명된 응용 애플리케이션(700)의 데이터가 무결함, 즉 타인에 의해 훼손되지 않았음을 검증하는 데에 사용될 수 있다.
헤더부(510), 프레임워크부(620), 및 메인 바이너리부(530)는 각각 도 2를 참조하여 설명된 헤더부(210), 프레임워크부(220), 및 메인 바이너리부(230)와 마찬가지로 구성된다.
S440단계에서, 네트워크 서버(1300)는 생성된 응용 애플리케이션(700)을 클라이언트 단말기(1200)에 제공한다. 제공된 응용 애플리케이션(700)은 보안 프레임워크(SFW)를 포함하므로, 원 응용 애플리케이션(500) 대비 향상된 보안 레벨을 가질 수 있다.
클라이언트 단말기(1200)는 제공된 응용 애플리케이션(700)을 이하 설명되는 클라이언트 서버를 통해 사용자 단말기들, 예를 들면 도 1의 컴퓨터 장치(100)에 배포할 수 있다.
도 9는 도 1의 컴퓨터 장치와 통신하는 클라이언트 서버의 실시 예를 보여주는 블록도이다.
도 1 및 도 9를 참조하면, 클라이언트 서버(2000)는 통신기(2100), 프로세서(2200), 및 데이터베이스(2300)를 포함한다. 도 1의 컴퓨터 장치(100)에 의해 실행되는 응용 애플리케이션(161)은 클라이언트 서버(2000)로부터 제공될 수 있다.
통신기(2100)는 네트워크를 통해 컴퓨터 장치(100)와 통신할 수 있다.
프로세서(2200)는 데이터베이스(2300)에 저장된 응용 애플리케이션(161)을 통신기(2100)를 통해 컴퓨터 장치(100)에 제공한다.
데이터베이스(2300)는 프로세서(150)에 의해 판독 가능한 데이터 세트들을 저장하도록 구성되는 저장 매체를 포함할 수 있다. 데이터베이스(2300)는 응용 애플리케이션(161)을 저장할 수 있다. 응용 애플리케이션(161)은 통신기(2100)를 통해 컴퓨터 장치(100)에 전송되고, 컴퓨터 장치(100)에 설치되고, 시스템 메모리(160)에 도 1에 도시된 바와 같이 로드되어 프로세서(150)에 의해 실행될 수 있다.
비록 특정 실시 예들 및 적용 례들이 여기에 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정들 및 변형들이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
100: 컴퓨터 장치
110: 통신기
120: 사용자 인터페이스
130: 디스플레이 장치
140: 저장 매체
150: 프로세서
160: 시스템 메모리
161, 200: 응용 애플리케이션

Claims (14)

  1. 애플리케이션 프로그램을 저장하는, 컴퓨터 장치에 의해 판독 가능한 저장 매체에 있어서:
    상기 컴퓨터 장치는 상기 애플리케이션 프로그램을 로드하기 위한 메모리를 포함하고,
    상기 애플리케이션 프로그램은,
    헤더부; 및
    상기 헤더부와 연관되며, 다수의 프레임워크들을 포함하는 프레임워크부를 포함하며,
    상기 프레임워크부는 상기 메모리에 로드될 때 상기 애플리케이션 프로그램과 연관된 비정상 액션을 야기하기 위한 더미 프레임워크를 포함하고,
    상기 헤더부는 상기 애플리케이션 프로그램 내 상기 더미 프레임워크에 대한 어드레스 없이, 상기 애플리케이션 프로그램 내 상기 다수의 프레임워크들에 대한 어드레스들을 포함하는 저장 매체.
  2. 제 1 항에 있어서,
    상기 비정상 액션은 상기 애플리케이션 프로그램과 연관된 크래쉬를 발생시키는 것을 포함하는 저장 매체.
  3. 제 1 항에 있어서,
    상기 컴퓨터 장치는 상기 메모리에 연결된 프로세서를 더 포함하며,
    상기 메모리에 로드된 상기 더미 프레임워크는 상기 애플리케이션 프로그램과 연관된 동작의 수행을 종료하도록 상기 프로세서를 커맨드하는 저장 매체.
  4. 제 1 항에 있어서,
    상기 더미 프레임워크는 상기 애플리케이션 프로그램과 연관된 크래쉬를 야기하기 위한 보안 프레임워크를 포함하는 저장 매체.
  5. 제 1 항에 있어서,
    상기 더미 프레임워크는 상기 프레임워크부의 디렉토리(directory) 안에 속하는 저장 매체.
  6. 제 1 항에 있어서,
    상기 애플리케이션 프로그램은 상기 더미 프레임워크를 포함하는 상기 애플리케이션 프로그램에 대해 서명함으로써 생성된 인증 데이터를 더 포함하는 저장 매체.
  7. 제 1 항에 있어서,
    상기 애플리케이션 프로그램은 상기 헤더부와 연관된 바이너리부를 더 포함하는 저장 매체.
  8. 네트워크 서버에서 애플리케이션 프로그램을 처리하는 방법에 있어서,
    클라이언트 단말기로부터 애플리케이션 프로그램을 수신하되, 상기 애플리케이션 프로그램은 다수의 프레임워크들을 포함하는 프레임워크부 및 상기 프레임워크부와 연관되는 헤더부를 포함하는, 단계;
    메모리에 로드될 때 상기 애플리케이션 프로그램과 연관된 비정상 액션을 야기하기 위한 더미 프레임워크를 상기 프레임워크부에 삽입하는 단계; 및
    상기 더미 프레임워크가 삽입되어 변형된 상기 애플리케이션 프로그램을 상기 클라이언트 단말기에 제공하는 단계를 포함하며,
    상기 변형된 애플리케이션 프로그램의 상기 헤더부는 상기 애플리케이션 프로그램 내 상기 더미 프레임워크에 대한 어드레스 없이, 상기 애플리케이션 프로그램 내 상기 다수의 프레임워크들에 대한 상기 어드레스들을 포함하는 방법.
  9. 제 8 항에 있어서,
    상기 클라이언트 단말기로부터 수신된 상기 애플리케이션 프로그램은 컴파일된 것인 방법.
  10. 제 8 항에 있어서,
    상기 비정상 액션은 상기 애플리케이션 프로그램과 연관된 크래쉬를 발생시키는 것을 포함하는 방법.
  11. 제 8 항에 있어서,
    상기 메모리에 로드된 상기 더미 프레임워크는, 상기 메모리를 포함하는 컴퓨터 장치가 상기 애플리케이션 프로그램과 연관된 동작의 수행을 종료하도록, 상기 컴퓨터 장치를 커맨드하는 방법.
  12. 제 8 항에 있어서,
    상기 더미 프레임워크는 상기 애플리케이션 프로그램과 연관된 크래쉬를 야기하기 위한 보안 프레임워크를 포함하는 방법.
  13. 제 8 항에 있어서,
    상기 더미 프레임워크는 상기 프레임워크부의 디렉토리 안에 속하도록 삽입되는 방법.
  14. 제 8 항에 있어서,
    상기 변형된 애플리케이션 프로그램에 대한 서명을 수행하는 단계를 더 포함하며,
    상기 서명이 수행된 상기 변형된 애플리케이션 프로그램이 상기 클라이언트 단말기에 제공되는 방법.

KR1020220064721A 2022-05-26 2022-05-26 애플리케이션 프로그램을 저장하는 저장 매체 및 그것을 처리하는 방법 KR20230164947A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220064721A KR20230164947A (ko) 2022-05-26 2022-05-26 애플리케이션 프로그램을 저장하는 저장 매체 및 그것을 처리하는 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220064721A KR20230164947A (ko) 2022-05-26 2022-05-26 애플리케이션 프로그램을 저장하는 저장 매체 및 그것을 처리하는 방법

Publications (1)

Publication Number Publication Date
KR20230164947A true KR20230164947A (ko) 2023-12-05

Family

ID=89157382

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220064721A KR20230164947A (ko) 2022-05-26 2022-05-26 애플리케이션 프로그램을 저장하는 저장 매체 및 그것을 처리하는 방법

Country Status (1)

Country Link
KR (1) KR20230164947A (ko)

Similar Documents

Publication Publication Date Title
US9910743B2 (en) Method, system and device for validating repair files and repairing corrupt software
CN102736978A (zh) 一种检测应用程序的安装状态的方法及装置
US20160283357A1 (en) Call stack relationship acquiring method and apparatus
CN106326735B (zh) 防注入的方法和装置
CN103778373A (zh) 病毒检测方法及装置
CN106126423A (zh) 游戏应用程序的测试方法、装置及系统
CN105740144A (zh) 一种Android移动终端的自动化测试方法及系统
CN113569246A (zh) 漏洞检测方法、装置、计算机设备和存储介质
CN113835713B (zh) 源码包下载方法、装置、计算机设备和存储介质
CN111353143A (zh) 敏感权限检测方法、装置及存储介质
US7506212B2 (en) Distributed exception handling testing
US11036852B2 (en) System and method for software diversification
US20240095174A1 (en) Method for detecting error of operating system kernel memory in real time
CN111046393B (zh) 漏洞信息上传方法、装置、终端设备及存储介质
CN112527416A (zh) 任务处理方法、装置、计算机设备和存储介质
CN110334031B (zh) 内存分配代码检测方法、装置、计算机设备及存储介质
CN112306634A (zh) 在云平台中根据配置变化更新工作负载的方法及装置
KR20230164947A (ko) 애플리케이션 프로그램을 저장하는 저장 매체 및 그것을 처리하는 방법
CN111694724A (zh) 分布式表格系统的测试方法、装置、电子设备及存储介质
CN111176653B (zh) 程序编译合包方法、装置、电子设备及存储介质
CN116737526A (zh) 一种代码段动态度量方法、装置及电子设备
CN113139190A (zh) 程序文件检测方法、装置、电子设备及存储介质
US20240104085A1 (en) Computer system and method for evaluating integrity and parsing of a file system and parsing implementation
CN114153726B (zh) 一种基于linux桌面操作系统的登录测试方法及装置
US20220309145A1 (en) Information processing apparatus, verification method of program, computer readable medium and image processing apparatus