이전 논문은 자바 프로그램에서 논리적인 오류를 찾기 위한 기술로 HDT를 제안했었다. HDT는 알고리즈믹 프로그램 디버깅 기술을 이용하여 실행트리에서 오류를 포함하고 있는 메소드를 찾고, 단계적 프로그램 디버깅 기술을 이용하여 오류를 포함하고 있는 메소드에서 오류가 있는 문장을 찾아낸다. 이 기술은 전통적인 디버깅 기술보다 자바 프로그램에서 프로그래머가 디버깅하는 횟수를 줄였다. 그러나 최근에는 프로그램 크기가 증가하고 메소드의 수가 증가하고 있기 때문에 아직까지 HDT는 디버깅하는 횟수가 많다. 이 논문은 HDT에 프로그램 분할 기술을 적용하는 HDTS를 제안한다. 이 방법은 자바 프로그램을 디버깅할 때, HDT보다 프로그래머가 디버깅하는 횟수를 줄여 줄 수 있다. 특히, HDTS는 메소드와 문장의 수가 증가할수록 효율성이 증가한다.
Pin은 프로그램 동적 분석 도구를 생성할 수 있는 프레임워크로, 리눅스와 윈도우에서 사용자 영역의 프로그램 분석을 수행할 수 있게 한다. 역공학 방지 프로그램이나 악성코드는 프로그램 분석을 방해하는 안티디버깅이 적용되어 있기 때문에 Pin을 사용한 분석이 어렵다. 본 논문에서는 Pin을 이용해서 프로그램에 적용된 안티디버깅을 우회하여 동적 분석을 진행할 수 있는 Pin 플러그인 프로그램을 설계한 내용과 구현한 내용을 제안한다. Pin 탐지 안티디버깅을 우회할 수 있는 각각의 Pin 코드를 작성하고, Pin 코드를 하나로 합쳐 여러 안티디버깅을 우회할 수 있는 Pin 도구를 구현한다. 구현된 Pin 도구는 안티디버깅을 지원하는 프로텍터로 생성한 파일로 안티디버깅 우회 실험을 진행한다. 본 기법은 추후에 발견되는 안티디버깅 우회 코드 작성의 참고자료가 될 것이고 발견된 안티디버깅에 맞춰 수정 후 추가 적용이 가능할 것으로 예상된다.
리눅스 기반의 임베디드 시스템에서 동작하는 응용 프로그램의 디버깅은 타겟 시스템의 제한된 자원으로 인하여 대부분 원격으로 이루어진다. 리눅스 기반의 시스템에서 동작하는 gdb는 원격에서 또는 로컬에서 디버깅 중인 프로세스가 fork 시스템 콜 호출 시 새로이 생성된 프로세스를 디버깅할 수 있도록 지원하지 않는다. 이에 따라, 리눅스 환경에서 동작하는 gdb와 gdbserver를 사용해서 단일 프로세스 구조를 갖는 옹용 프로그램을 원격 또는 로컬 디버깅할 수는 있으나 다중 프로세스 구조의 옹용 프로그램을 원격으로 디버깅할 수는 없다. 또한 로컬에서 gdb를 사용하여 다중 프로세스 구조의 응용 프로그램을 디버깅할 수는 있지만 이를 위해서는 개발자비 부가적인 코딩이 필요하다. 본 논문에서는 리눅스 커널의 변경 없이 라이브러리 래핑(wrapping) 방법을 이용하여 원격 시스템에서 동작하는 다중 프로세스 구조의 응용 프로그램을 gdb와 gdbserver를 사용하여 디버깅하는 방법을 제시한다.
자바 언어는 다양한 플랫폼과 다양한 분야에서 사용되고 있는 대표적인 객체지향 언어이다. 자바 언어는 객체지향의 특징 때문에 전통적인 절차지향 언어 보다 프로그램의 구조가 단순하다. 그러나 복잡한 자바 프로그램을 디버깅하는 일은 쉽지 않다. 디버깅은 항상 소프트웨어 발전의 많은 비용이 드는 부분이다. 자바 프로그램의 구문 오류는 현재 디버깅 시스템에 의해서 쉽게 발견된다. 그러나 자바 프로그램에 포함된 논리적인 오류는 발견하기가 어렵다. 자바 프로그램을 위한 기존의 디버깅 기술은 절차지향언어에서 사용하는 순차적인 방법을 사용하고 있다. 불행히도, 이 전통적인 방법들은 종종 특별한 프로그램의 오류를 찾는데 적당하지 않다. 이는 프로그램의 크기가 커지고 복잡해짐에 따라 디버깅하는데 걸리는 시간이 프로그램을 개발하는 시간의 많은 부분을 차지하게 된다. 디버거 사용자가 자바 프로그램 내에 포함되어 있는 오류를 쉽게 찾아내는 일은 효율적인 소프트웨어 개발에서 매우 중요하다. 본 논문에서는 사용자가 자바프로그램을 좀 더 빠르게 디버깅을 할 수 있도록 알고리즈믹 디버깅 방법을 적용한다. 알고리즈믹 디버깅 방법은 함수의 호출관계를 실행 트리로 구성하고 이를 검사하여 에러가 포함 되어 있는 함수를 발견하는 방법이다. 따라서 기존의 순차적인 방법보다 디버깅하는 횟수를 줄일 수 있다.
함수형 프로그래밍 언어는 전통적인 프로시저형 언어에 비하여 많은 장점이 있다. 그러나 함수 언어 프로그래머를 위한 실용적인 디버깅 환경은 상대적으로 빈약하다. 그동안 유용한 디버거 구현을 위해서 많은 시도가 있었고, 그 결과로 하향식 기법으로 이용한 알고리즈믹 디버거와 상향식 기법을 이용한 레덱스 트레일 디버거가 연구되었다. 두가지 기법은 모두 실제 프로그래밍에 적용하기에는 유지해야 하는 디버깅 정보의 양이 많다는 단점이 있다. 이 논문에서는 선택적 레덱스 트레일 디버깅 방법을 제안한다. 이 방법을 이용하면 디버거 사용자는 프로그램에서 오류가 예상되는 부분에 포커스를 설정할 수 있고 단지 선택된 부분에 한하여 트레일을 생성하게 된다. 이 방법은 프로그램의 오류에 대한 디버거 사용자의 예측을 반영하고 디버깅에 필요한 정보의 양을 줄이는 장점이 있다. 구현된 디버깅 시스템은 선택적 레덱스 트레일을 생성하는 추상기계와 실제 디버깅이 이루어지는 레덱스 트레일 탐색기로 구성된다.
빠르게 변화하고 있는 모바일 시장에서 개발자들이 응용프로그램 개발을 하면서 가장 자주 사용하고 필요로 하는 것 중 하나가 디버깅이다. 본 논문에서는 기존의 하드웨어 디버거를 통해 ELF 디버깅 정보를 얻어오는 방법 대신 하드웨어 없이 ELF 파일에 대한 정보를 분석하는 툴 구현을 제안한다. ELF 파일을 분석하고 그 정보를 바탕으로 실제 모바일 폰에서 덤프 해온 메모리 값을 보여줌으로써 디버깅을 용이하게 한다. 소프트웨어만으로 디버깅 정보 추출이 가능하므로 고가의 디버깅 장비의 비용 절감의 효과를 가져다 줄 수 있을 것으로 기대된다.
안드로이드 환경은 디컴파일을 통해 개발자가 작성한 코드를 쉽게 획득할 수 있고, 해당 코드의 분석을 통해 유사 앱을 개발하거나 기능을 변조할 수 있다. 이러한 문제에 대응하기 위해 다양한 난독화, 안티 디버깅 기법을 개발하여 적용하고 있다. 하지만 해당 기법들은 충분한 시간과 노력을 투자한다면 분석 및 우회가 가능하므로 개발자는 분석을 원천적으로 막기보다 분석을 지연하는 목적으로 활용하고 있다. 안티 디버깅을 지원하는 대부분의 상용 SW 또한 이런 한계를 크게 벗어나지 않고 있으며 적용하는 안티 디버깅 기법의 종류와 수의 차이만 있다. 특히 기존의 연구는 안티 디버깅 기법의 우회에 집중하고 있으며 해당 연구는 분석을 위한 사전 단계의 개념이며 실제 분석 단계에서는 활용하지 못해 분석 효율을 올리지는 못한다. 본 연구에서는 분석의 관점에서 안티 디버깅을 무력화하고, 실제 분석 시 활용할 수 있는 방법을 소개한다.
JTAG 기반 SoC의 디버깅 성능향상을 위한 온 칩 디버깅 유닛(On-chip debugging unit)을 제안하였다. 제안된 디버깅 유닛은 JTAG 모듈, 코어브레이커로 구성된다. JTAG 모듈은 기존의 IEEE 1149.1 표준을 변형하여 효율적으로 설계하였다. SoC 시스템의 집적도가 높아질수록 1회의 디버깅 사이클을 실행하기 위한 반복적인 TAP 명령의 인가가 예상된다. 제안된 디버깅 유닛이 TAP 명령 인가과정의 불필요한 클럭 소모를 최소화하였다. 성능분석 결과 기존의 방식과 비교하여 14% 정도의 디버깅 성능의 증가를 보였고 TAP 컨트롤러 회로의 게이트 수는 50% 정도 감소하였다.
내장 소프트웨어는 실제 시스템의 자원과 원격지의 시스템의 환경에 민감하므로 실제 시스템과 동일한 환경에서 디버깅해야 한다. 그러나 대부분의 내장 소프트웨어를 탑재하는 실제 시스템은 시스템 상태를 조사하거나 제어하는 것이 제한되어 있는 소프트웨어를 디버깅하는 것은 매우 어렵다. 본 논문에서는 원격지의 USB와 실제 시스템의 JTAG을 기반으로 내장 소프트웨어를 디버깅할 수 있는 어뎁터 제안한다. 본 논문은 실제 시스템내의 내장 소프트웨어를 디버깅할 수 있는 경제적인 인터페이싱 환경을 제공한다.
여러 가지 역공학 방지기술들 중 하나인 안티 디버깅 기술은 특정 프로그램을 대상으로 공격자나 분석가가 디버거를 사용하여 분석을 하지 못하도록 하기 위한 기술로써, 예전부터 악성코드 및 분석을 방지하고자 하는 여러 가지 프로그램들에 적용이 되었으며 현재까지도 많이 사용이 되고 있는 기술이다. 본 논문에서는 이러한 안티 디버깅 루틴에 대한 자동화 탐지 방법을 제안한다. 탐지는, 디버거 및 시뮬레이터를 통해 실행 명령어 및 API(Application Program Interface)에 대한 트레이스 정보들을 추출하고, 추출된 정보들을 비교하여 안티 디버깅 루틴으로 의심이 가는 지점을 찾는 방식으로 진행된다. 실험 결과, 알려진 25가지의 안티 디버깅 기법들 중 21가지에 대하여 정상적으로 탐지가 이루어졌다. 이와 같이, 본 기법은 특정 안티 디버깅 기술에 의존적이지 않으며, 추후 개발 및 발견되는 안티 디버깅 기술들에 대한 탐지의 경우에도 적용이 가능할 것으로 예상된다.
본 웹사이트에 게시된 이메일 주소가 전자우편 수집 프로그램이나
그 밖의 기술적 장치를 이용하여 무단으로 수집되는 것을 거부하며,
이를 위반시 정보통신망법에 의해 형사 처벌됨을 유념하시기 바랍니다.
[게시일 2004년 10월 1일]
이용약관
제 1 장 총칙
제 1 조 (목적)
이 이용약관은 KoreaScience 홈페이지(이하 “당 사이트”)에서 제공하는 인터넷 서비스(이하 '서비스')의 가입조건 및 이용에 관한 제반 사항과 기타 필요한 사항을 구체적으로 규정함을 목적으로 합니다.
제 2 조 (용어의 정의)
① "이용자"라 함은 당 사이트에 접속하여 이 약관에 따라 당 사이트가 제공하는 서비스를 받는 회원 및 비회원을
말합니다.
② "회원"이라 함은 서비스를 이용하기 위하여 당 사이트에 개인정보를 제공하여 아이디(ID)와 비밀번호를 부여
받은 자를 말합니다.
③ "회원 아이디(ID)"라 함은 회원의 식별 및 서비스 이용을 위하여 자신이 선정한 문자 및 숫자의 조합을
말합니다.
④ "비밀번호(패스워드)"라 함은 회원이 자신의 비밀보호를 위하여 선정한 문자 및 숫자의 조합을 말합니다.
제 3 조 (이용약관의 효력 및 변경)
① 이 약관은 당 사이트에 게시하거나 기타의 방법으로 회원에게 공지함으로써 효력이 발생합니다.
② 당 사이트는 이 약관을 개정할 경우에 적용일자 및 개정사유를 명시하여 현행 약관과 함께 당 사이트의
초기화면에 그 적용일자 7일 이전부터 적용일자 전일까지 공지합니다. 다만, 회원에게 불리하게 약관내용을
변경하는 경우에는 최소한 30일 이상의 사전 유예기간을 두고 공지합니다. 이 경우 당 사이트는 개정 전
내용과 개정 후 내용을 명확하게 비교하여 이용자가 알기 쉽도록 표시합니다.
제 4 조(약관 외 준칙)
① 이 약관은 당 사이트가 제공하는 서비스에 관한 이용안내와 함께 적용됩니다.
② 이 약관에 명시되지 아니한 사항은 관계법령의 규정이 적용됩니다.
제 2 장 이용계약의 체결
제 5 조 (이용계약의 성립 등)
① 이용계약은 이용고객이 당 사이트가 정한 약관에 「동의합니다」를 선택하고, 당 사이트가 정한
온라인신청양식을 작성하여 서비스 이용을 신청한 후, 당 사이트가 이를 승낙함으로써 성립합니다.
② 제1항의 승낙은 당 사이트가 제공하는 과학기술정보검색, 맞춤정보, 서지정보 등 다른 서비스의 이용승낙을
포함합니다.
제 6 조 (회원가입)
서비스를 이용하고자 하는 고객은 당 사이트에서 정한 회원가입양식에 개인정보를 기재하여 가입을 하여야 합니다.
제 7 조 (개인정보의 보호 및 사용)
당 사이트는 관계법령이 정하는 바에 따라 회원 등록정보를 포함한 회원의 개인정보를 보호하기 위해 노력합니다. 회원 개인정보의 보호 및 사용에 대해서는 관련법령 및 당 사이트의 개인정보 보호정책이 적용됩니다.
제 8 조 (이용 신청의 승낙과 제한)
① 당 사이트는 제6조의 규정에 의한 이용신청고객에 대하여 서비스 이용을 승낙합니다.
② 당 사이트는 아래사항에 해당하는 경우에 대해서 승낙하지 아니 합니다.
- 이용계약 신청서의 내용을 허위로 기재한 경우
- 기타 규정한 제반사항을 위반하며 신청하는 경우
제 9 조 (회원 ID 부여 및 변경 등)
① 당 사이트는 이용고객에 대하여 약관에 정하는 바에 따라 자신이 선정한 회원 ID를 부여합니다.
② 회원 ID는 원칙적으로 변경이 불가하며 부득이한 사유로 인하여 변경 하고자 하는 경우에는 해당 ID를
해지하고 재가입해야 합니다.
③ 기타 회원 개인정보 관리 및 변경 등에 관한 사항은 서비스별 안내에 정하는 바에 의합니다.
제 3 장 계약 당사자의 의무
제 10 조 (KISTI의 의무)
① 당 사이트는 이용고객이 희망한 서비스 제공 개시일에 특별한 사정이 없는 한 서비스를 이용할 수 있도록
하여야 합니다.
② 당 사이트는 개인정보 보호를 위해 보안시스템을 구축하며 개인정보 보호정책을 공시하고 준수합니다.
③ 당 사이트는 회원으로부터 제기되는 의견이나 불만이 정당하다고 객관적으로 인정될 경우에는 적절한 절차를
거쳐 즉시 처리하여야 합니다. 다만, 즉시 처리가 곤란한 경우는 회원에게 그 사유와 처리일정을 통보하여야
합니다.
제 11 조 (회원의 의무)
① 이용자는 회원가입 신청 또는 회원정보 변경 시 실명으로 모든 사항을 사실에 근거하여 작성하여야 하며,
허위 또는 타인의 정보를 등록할 경우 일체의 권리를 주장할 수 없습니다.
② 당 사이트가 관계법령 및 개인정보 보호정책에 의거하여 그 책임을 지는 경우를 제외하고 회원에게 부여된
ID의 비밀번호 관리소홀, 부정사용에 의하여 발생하는 모든 결과에 대한 책임은 회원에게 있습니다.
③ 회원은 당 사이트 및 제 3자의 지적 재산권을 침해해서는 안 됩니다.
제 4 장 서비스의 이용
제 12 조 (서비스 이용 시간)
① 서비스 이용은 당 사이트의 업무상 또는 기술상 특별한 지장이 없는 한 연중무휴, 1일 24시간 운영을
원칙으로 합니다. 단, 당 사이트는 시스템 정기점검, 증설 및 교체를 위해 당 사이트가 정한 날이나 시간에
서비스를 일시 중단할 수 있으며, 예정되어 있는 작업으로 인한 서비스 일시중단은 당 사이트 홈페이지를
통해 사전에 공지합니다.
② 당 사이트는 서비스를 특정범위로 분할하여 각 범위별로 이용가능시간을 별도로 지정할 수 있습니다. 다만
이 경우 그 내용을 공지합니다.
제 13 조 (홈페이지 저작권)
① NDSL에서 제공하는 모든 저작물의 저작권은 원저작자에게 있으며, KISTI는 복제/배포/전송권을 확보하고
있습니다.
② NDSL에서 제공하는 콘텐츠를 상업적 및 기타 영리목적으로 복제/배포/전송할 경우 사전에 KISTI의 허락을
받아야 합니다.
③ NDSL에서 제공하는 콘텐츠를 보도, 비평, 교육, 연구 등을 위하여 정당한 범위 안에서 공정한 관행에
합치되게 인용할 수 있습니다.
④ NDSL에서 제공하는 콘텐츠를 무단 복제, 전송, 배포 기타 저작권법에 위반되는 방법으로 이용할 경우
저작권법 제136조에 따라 5년 이하의 징역 또는 5천만 원 이하의 벌금에 처해질 수 있습니다.
제 14 조 (유료서비스)
① 당 사이트 및 협력기관이 정한 유료서비스(원문복사 등)는 별도로 정해진 바에 따르며, 변경사항은 시행 전에
당 사이트 홈페이지를 통하여 회원에게 공지합니다.
② 유료서비스를 이용하려는 회원은 정해진 요금체계에 따라 요금을 납부해야 합니다.
제 5 장 계약 해지 및 이용 제한
제 15 조 (계약 해지)
회원이 이용계약을 해지하고자 하는 때에는 [가입해지] 메뉴를 이용해 직접 해지해야 합니다.
제 16 조 (서비스 이용제한)
① 당 사이트는 회원이 서비스 이용내용에 있어서 본 약관 제 11조 내용을 위반하거나, 다음 각 호에 해당하는
경우 서비스 이용을 제한할 수 있습니다.
- 2년 이상 서비스를 이용한 적이 없는 경우
- 기타 정상적인 서비스 운영에 방해가 될 경우
② 상기 이용제한 규정에 따라 서비스를 이용하는 회원에게 서비스 이용에 대하여 별도 공지 없이 서비스 이용의
일시정지, 이용계약 해지 할 수 있습니다.
제 17 조 (전자우편주소 수집 금지)
회원은 전자우편주소 추출기 등을 이용하여 전자우편주소를 수집 또는 제3자에게 제공할 수 없습니다.
제 6 장 손해배상 및 기타사항
제 18 조 (손해배상)
당 사이트는 무료로 제공되는 서비스와 관련하여 회원에게 어떠한 손해가 발생하더라도 당 사이트가 고의 또는 과실로 인한 손해발생을 제외하고는 이에 대하여 책임을 부담하지 아니합니다.
제 19 조 (관할 법원)
서비스 이용으로 발생한 분쟁에 대해 소송이 제기되는 경우 민사 소송법상의 관할 법원에 제기합니다.
[부 칙]
1. (시행일) 이 약관은 2016년 9월 5일부터 적용되며, 종전 약관은 본 약관으로 대체되며, 개정된 약관의 적용일 이전 가입자도 개정된 약관의 적용을 받습니다.