리버스 엔지니어링

Reverse engineering

역엔지니어링(역엔지니어링 또는 역엔지니어링이라고도 함)은 이전에 만든 장치, 프로세스, 시스템 또는 소프트웨어가 정확히 어떻게 작업을 수행하는지에 대한 통찰력이 거의 없는 상태에서 연역적 추론을 통해 이해하려고 하는 프로세스 또는 방법입니다.기본적으로 시스템을 복제하거나 강화하기 위해 시스템을 열거나 해부하는 과정입니다.검토 중인 시스템과 채택된 기술에 따라 리버스 엔지니어링 중에 습득한 지식은 사용되지 않는 오브젝트의 용도 변경, 보안 분석 또는 동작 [1][2]방법에 도움이 될 수 있습니다.

프로세스는 수행 대상 객체에 따라 다르지만 모든 리버스 엔지니어링 프로세스는 정보 추출, 모델링 및 검토의 3가지 기본 단계로 구성됩니다.정보 추출은 작업을 수행하기 위해 모든 관련 정보를 수집하는 관행을 말합니다.모델링은 수집된 정보를 추상적 모델로 결합하여 새로운 객체나 시스템을 설계하기 위한 가이드로 사용할 수 있는 관행을 말합니다.검토는 선택된 [1]추상화의 타당성을 확인하기 위한 모델의 테스트를 말합니다.리버스 엔지니어링은 컴퓨터 공학, 기계 공학, 설계, 전자 공학, 소프트웨어 공학, 화학 [3]공학시스템 [4]생물학 분야에 적용할 수 있습니다.

개요

다양한 분야에서 리버스 엔지니어링을 수행하는 데는 여러 가지 이유가 있습니다.리버스 엔지니어링은 상업적 또는 군사적 [5]: 13 이점을 위한 하드웨어 분석에 그 기원을 두고 있습니다.그러나 역엔지니어링 프로세스에서는 어떤 식으로든 아티팩트를 만들거나 변경할 필요가 없습니다.원래 [5]: 15 생산에 관련된 절차에 대한 추가 지식이 거의 없거나 전혀 없는 제품에서 설계 특성을 추론하는 분석일 뿐입니다.

경우에 따라서는 리버스 엔지니어링 프로세스의 목표는 단순히 레거시 시스템[5]: 15 [6]재문서화가 될 수 있습니다.역설계된 제품이 경쟁사의 제품인 경우에도 목표는 모방하는 것이 아니라 경쟁사 [7]분석을 수행하는 것일 수 있습니다.역엔지니어링은 상호 운용 가능한 제품을 만드는 데도 사용될 수 있으며, 미국과 유럽연합의 일부 협소한 법률에도 불구하고, 그러한 목적을 위해 특정 역엔지니어링 기술을 사용하는 것의 합법성은 20년 [8]이상 전 세계 법원에서 뜨거운 논쟁을 벌여왔다.

소프트웨어 리버스 엔지니어링은 소프트웨어의 유지보수 및 개선을 위한 기본 소스 코드에 대한 이해를 향상시키는 데 도움이 될 수 있으며 관련 정보를 추출하여 소프트웨어 개발에 대한 결정을 내릴 수 있으며 코드의 그래픽 표현은 소스 코드에 대한 대체 뷰를 제공할 수 있습니다.이것에 의해, 검출에 도움이 됩니다.소프트웨어의 버그나 취약성을 수정해 주세요.일부 소프트웨어가 개발됨에 따라 설계 정보와 개선 사항이 시간이 지남에 따라 손실되는 경우가 많지만, 손실된 정보는 대개 리버스 엔지니어링을 통해 복구할 수 있습니다.또한 이 프로세스를 통해 소스 코드를 이해하는 데 필요한 시간을 단축할 수 있으므로 소프트웨어 [9]개발의 전체 비용을 절감할 수 있습니다.또한 리버스 엔지니어링을 통해 소프트웨어에 기록된 악성 코드를 검출하고 제거할 수 있습니다.소스 코드를 되돌리면 소스 코드의 다른 용도를 찾을 수 있습니다.예를 들어, 소스 코드를 사용하지 않는 소스코드의 무단 복제를 검출하거나 경쟁사의 제품이 어떻게 [10]제조되었는지 알 수 있습니다.이 프로세스는 일반적으로 소프트웨어나 미디어를 "크래킹"하여 복사 [10]: 7 보호를 해제하거나 개량된 복사 또는 복제품을 만드는 데 사용됩니다.이는 보통 경쟁업체나 [10]: 8 해커의 목표입니다.

멀웨어 개발자는 종종 역엔지니어링 기술을 사용하여 운영 체제의 취약성을 찾아 시스템의 [10]: 5 취약성을 악용할 수 있는 컴퓨터 바이러스를 만듭니다.리버스 엔지니어링은 대체 암호, 대칭 키 알고리즘 또는 공개[10]: 6 암호법취약성을 찾기 위해 암호 해석에도 사용되고 있습니다.

리버스 엔지니어링에는 다음과 같은 다른 용도가 있습니다.

  • 인터페이스.리버스 엔지니어링은 시스템이 다른 시스템에 인터페이스해야 하고 두 시스템이 어떻게 네고시에이트할지를 확립해야 할 때 사용할 수 있습니다.이러한 요건은 일반적으로 상호 운용성을 위해 존재합니다.
  • 군사 또는 상업 스파이.시제품을 훔치거나 포획하여 해체함으로써 적이나 경쟁사의 최신 연구를 알게 되면 유사한 제품을 개발하거나 그에 대한 더 나은 대책을 세울 수 있다.
  • 진부함.집적회로는 대부분의 경우 독자 사양 시스템으로 설계되어 생산 라인에 구축되지만 불과 몇 년 만에 구식이 됩니다.부품이 더 이상 만들어지지 않아 해당 부품을 사용하는 시스템을 더 이상 유지 관리할 수 없는 경우 기존 칩을 새로운 테크놀로지에 통합하는 유일한 방법은 기존 칩을 리버스 엔지니어링한 후 새로운 툴을 사용하여 새로운 칩을 재설계하는 것입니다.리버스 엔지니어링을 통해 해결할 수 있는 또 다른 노후화 문제로는 기존의 레거시 디바이스를 지원(지속적인 운용을 위한 유지 보수 및 공급)해야 한다는 것입니다.그 문제는 군사작전에서 특히 중요하다.
  • 제품 보안 분석.이는 제품의 구성요소의 사양을 결정하고 비용을 추정하여 제품의 작동 방식을 검사하고 잠재적인 특허 침해를 식별합니다.또, 제품 시큐러티 분석의 일환으로서 [11]시스템 컴퍼넌트의 설계를 분해해 분석함으로써 기밀 데이터를 취득하는 것도 있습니다.또 다른 목적은 복사 방지를 해제하거나 액세스 제한을 회피하는 것입니다.
  • 경쟁력 있는 기술 인텔리전스.그것은 경쟁자가 무엇을 하고 있다고 말하는 것이 아니라 실제로 무엇을 하고 있는지를 이해하는 것입니다.
  • 을 아끼다.전자제품이 무엇을 할 수 있는지 알아내면 사용자가 별도의 제품을 구입할 필요가 없어질 수 있습니다.
  • 용도 변경.사용되지 않는 개체는 다른 유용한 방법으로 재사용됩니다.
  • 디자인. 생산 및 디자인 회사들은 실용적인 공예 기반 제조 공정에 Reverse Engineering을 적용했습니다.이 회사들은 3D 스캔, 3D 재모델링 및 재설계를 통해 "역사적인" 제조 컬렉션 작업을 수행할 수 있습니다.2013년 이탈리아 제조업체인 발디와 사비오 피르미노피렌체 대학과 함께 혁신,[12] 디자인 및 생산 공정을 최적화했습니다.

일반적인 상황

기계들

CAD(Computer-Aided Design)가 보급됨에 따라 리버스 엔지니어링은 3D CAD, CAM, CAE 또는 기타 [13]소프트웨어에서 사용할 수 있는 기존 물리적 부품의 3D 가상 모델을 만드는 실행 가능한 방법이 되었습니다.리버스 엔지니어링 프로세스에는 물체를 측정한 후 3D 모델로 재구성하는 작업이 포함됩니다.물리적 물체는 CMM, 레이저 스캐너, 구조화된 광디지털라이저 또는 산업용 CT 스캔(계산 단층 촬영)과 같은 3D 스캔 기술을 사용하여 측정할 수 있습니다.일반적으로 포인트 클라우드로 표시되는 측정 데이터만으로는 토폴로지 정보와 설계 의도가 부족합니다.전자는 점 구름을 삼각형 면의 메시로 변환하여 복구할 수 있습니다.리버스 엔지니어링은 이러한 메쉬를 생산하는 것을 넘어 적절한 경우(평면, 실린더 등) 단순한 분석 표면뿐만 아니라 경계 표현 CAD 모델을 만들기 위한 NURBS 표면에서도 설계 의도를 회복하는 것을 목표로 한다.이러한 모델을 복구함으로써 새로운 요건에 맞게 설계를 변경할 수 있고 제조계획이 작성될 수 있습니다.

하이브리드 모델링은 NURBS와 파라미터 모델링이 함께 구현될 때 일반적으로 사용되는 용어입니다.기하학적 표면과 자유형 표면을 조합하여 사용하면 강력한 3D 모델링 방법을 제공할 수 있습니다.자유형 데이터의 영역을 정확한 기하학적 표면과 결합하여 하이브리드 모델을 생성할 수 있습니다.전형적인 예로는 워터 재킷 및 고내성 [14]가공 영역과 같은 자유형 주조 기능을 포함하는 실린더 헤드의 리버스 엔지니어링이 있습니다.

리버스 엔지니어링은 또한 기업이 기존의 물리적 형상을 디지털 제품 개발 환경에 도입하거나, 자체 제품의 디지털 3D 기록을 만들거나, 경쟁업체의 제품을 평가하는 데에도 사용됩니다.제품의 기능, 기능, 컴포넌트, 비용 견적, 특허 침해 가능성 확인 등에 사용됩니다.

밸류 엔지니어링은 기업에서도 사용되는 관련 활동이며 제품을 분해하고 분석하는 것을 수반합니다.그러나 목표는 비용 절감 기회를 찾는 것입니다.

PCB 리버스 엔지니어링

프린트회로기판의 리버스 엔지니어링은 특정회로기판의 제조데이터를 재작성하는 것을 포함한다.이는 레거시 시스템의 벤치마킹 및 지원을 가능하게 하기 위한 것입니다.

소프트웨어

1990년 전기전자공학협회(IEEE)는 (소프트웨어) 리버스 엔지니어링(SRE)을 "시스템의 구성요소와 그 상호관계를 식별하고 다른 형태 또는 더 높은 추상화 수준에서 시스템의 표현을 생성하기 위해 대상 시스템을 분석하는 과정"으로 정의했다.m"은 소프트웨어 개발의 최종 산물입니다.리버스 엔지니어링은 검토 프로세스일 뿐이며 검토 중인 소프트웨어 시스템은 수정되지 않습니다.수정하지 않으면 리엔지니어링 또는 재구성이 됩니다.역엔지니어링은 제품 사이클의 어느 단계에서나 실행할 수 있으며, 기능적인 최종 [9]제품에서는 실행할 수 없습니다.

리버스 엔지니어링에는 재문서화와 설계 복구라는 두 가지 구성요소가 있습니다.재문서화는 이해하기 쉽도록 컴퓨터 코드를 새롭게 표현하는 것입니다.한편, 디자인 리커버리는 제품의 기능을 완전히 [9]이해하기 위해 제품의 일반 지식이나 개인적 경험에서 추론 또는 추론을 사용하는 것입니다.'개발 사이클을 거꾸로 가는 [15]것'이라고도 볼 수 있다.이 모델에서 구현 단계(소스 코드 형식)의 출력은 기존 폭포 모델의 역방향으로 분석 단계로 역설계됩니다.이 기술의 또 다른 용어는 프로그램 [6]이해입니다.리버스 엔지니어링에 관한 워킹 컨퍼런스(WCRE)는 리버스 [10][16]엔지니어링의 기술을 탐색하고 확장하기 위해 매년 개최되고 있습니다.컴퓨터 지원 소프트웨어 엔지니어링(CASE)과 자동 코드 생성은 리버스 [10]엔지니어링 분야에서 크게 기여하고 있습니다.

난독화와 같은 소프트웨어 안티탬퍼 기술은 독점 소프트웨어 및 소프트웨어 구동 시스템의 리버스 엔지니어링과 리엔지니어링을 모두 저지하기 위해 사용됩니다.실제로 두 가지 유형의 리버스 엔지니어링이 등장합니다.첫 번째 경우 소스코드는 이미 소프트웨어에 사용 가능하지만, 프로그램의 상위 레벨인 문서나 문서화가 불충분하지만 더 이상 유효하지 않은 부분이 발견됩니다.두 번째 경우에는 소프트웨어에 사용할 수 있는 소스 코드가 없으며 소프트웨어에 대해 가능한 하나의 소스 코드를 발견하기 위한 노력은 리버스 엔지니어링으로 간주됩니다.이 용어의 두 번째 용법은 대부분의 사람들에게 더 친숙하다.소프트웨어의 리버스 엔지니어링은 저작권 침해를 피하기 위해 클린룸 설계 기법을 사용할 수 있습니다.

와 관련하여 소프트웨어 엔지니어링에서의 블랙박스 테스트는 리버스 엔지니어링과 많은 공통점이 있습니다.테스터는 보통 API를 가지고 있지만 외부에서 제품을 [17]공격하여 버그와 문서화되어 있지 않은 기능을 찾는 것을 목표로 하고 있습니다.

리버스 엔지니어링의 다른 목적에는 보안 감사, 복사 보호 해제('크래킹'), 가전제품에 자주 있는 접근 제한 회피, 임베디드 시스템(엔진 관리 시스템 등)의 커스터마이즈, 사내 수리 또는 개조, 저비용의 '크래킹' 하드웨어 추가 기능 활성화 등이 있습니다.그래픽 카드 칩셋과 같은 uch) 또는 단순한 호기심만으로 만족합니다.

바이너리 소프트웨어

바이너리 [10]리버스 엔지니어링은 소프트웨어의 소스 코드를 사용할 수 없는 경우에 실행됩니다.이 프로세스를 역코드엔지니어링(RCE)[18]이라고 부르기도 합니다.예를 들어 Java 플랫폼용 바이너리 디컴파일은 Jad를 사용하여 수행할 수 있습니다.리버스 엔지니어링의 유명한 사례 중 하나는 PC BIOS의 첫 번째 비IBM 구현으로, 수년 동안 압도적으로 지배적인 컴퓨터 하드웨어 플랫폼이었던 역사적인 IBM PC 호환 산업을 시작했습니다.미국에서는 소프트웨어의 리버스 엔지니어링이 저작권법[19]공정한 사용 예외에 의해 보호됩니다.Samba 소프트웨어는 Microsoft Windows 시스템을 실행하지 않는 시스템과 파일을 공유할 수 있도록 합니다.Samba 프로젝트에서는 Windows 파일 공유가 어떻게 동작하는지에 대한 정보를 리버스 엔지니어링해야 Windows 이외의 컴퓨터가 파일을 에뮬레이트할 수 있었기 때문에 소프트웨어 리버스 엔지니어링의[20] 전형적인 예입니다.Wine 프로젝트는 Windows API에 대해서도 같은 처리를 하고 있으며, OpenOffice.org는 Microsoft Office 파일 포맷에 대해서도 같은 처리를 하고 있습니다.리액트OS 프로젝트는 NT 지사의 현재 Windows 운영체제와의 바이너리(ABI 및 API) 호환성을 제공하기 위해 노력하고 있습니다.이를 통해 Windows용으로 작성된 소프트웨어와 드라이버를 클린룸 리버스 엔지니어링 프리 소프트웨어(GPL)에서 실행할 수 있습니다.윈도SCOPE는 실행 중인 모든 프로세스의 바이너리 레벨의 그래픽 리버스 엔지니어링을 포함한 Windows 시스템의 라이브 메모리의 모든 내용을 리버스 엔지니어링할 수 있습니다.

잘 알려지지 않은 또 다른 고전적인 예는 1987년에 Bell Laboratories가 원래 Apple Macintosh SE에서 실행되는 Mac OS System 4.1을 리버스 엔지니어링하여 자체 [21]RISC 머신에서 실행할 수 있도록 한 것입니다.

바이너리 소프트웨어 기술

소프트웨어의 리버스 엔지니어링은 다양한 방법으로 실행할 수 있습니다.소프트웨어 리버스 엔지니어링의 세 가지 주요 그룹은 다음과 같습니다.

  1. 컴퓨터 버스나 컴퓨터 네트워크 접속에 접속하여 트래픽 데이터를 공개하는 등 버스 분석기패킷 스니퍼를 사용하는 프로토콜 리버스 엔지니어링에서 가장 널리 사용되는 정보 교환 관찰을 통한 분석.다음으로 버스 또는 네트워크 동작을 분석하여 해당 동작을 모방한 스탠드아론 구현을 생성할 수 있습니다.이것은 특히 리버스 엔지니어링 디바이스 드라이버에 도움이 됩니다.임베디드 시스템의 리버스 엔지니어링은 JTAG 포트나 기타 디버깅 수단 등 제조원이 의도적으로 도입한 툴에 의해 큰 도움이 되는 경우가 있습니다.Microsoft Windows 에서는, 소프트등의 저레벨 디버거가 사용되고 있습니다.ICE가 인기가 많아요.
  2. 디스어셈블러를 사용한 디스어셈블리. 즉, 프로그램의 원시 기계어는 기계어 니모닉을 통해서만 읽고 이해할 수 있습니다.이것은 어떤 컴퓨터 프로그램에서도 작동하지만, 특히 기계 코드에 익숙하지 않은 사람들에게는 꽤 시간이 걸릴 수 있습니다.Interactive Disassembler는 특히 인기 있는 도구입니다.
  3. 디컴파일러를 사용한 디컴파일.이 프로세스는 머신 코드 또는 바이트 코드에서만 사용할 수 있는 프로그램의 소스 코드를 고급 언어로 재작성하려고 시도합니다.

소프트웨어 분류

소프트웨어 분류는 소프트웨어 샘플 간의 코드 관계를 검출하는 데 사용되는 서로 다른 소프트웨어 이진(같은 이진수의 서로 다른 두 버전 등) 간의 유사성을 식별하는 프로세스입니다.이 작업은 기존의 몇 가지 이유(취약성 검출 및 저작권 침해에 대한 패치 분석 등)로 수동으로 수행되었지만, 현재는 많은 샘플에 대해 어느 정도 자동으로 수행될 수 있습니다.

이 방법은 주로 길고 철저한 리버스 엔지니어링 태스크(복잡한 알고리즘 또는 큰 소프트웨어의 완전한 분석)에 사용됩니다.일반적으로 통계 분류는 어려운 문제로 간주되며, 이는 소프트웨어 분류에도 해당되며, 이 작업을 잘 처리하는 솔루션/툴은 거의 없습니다.

소스 코드

다수의 UML 툴은 소스 코드를 Import 및 분석하여 UML 다이어그램을 생성하는 프로세스를 "역 엔지니어링"이라고 합니다.UML 도구 목록을 참조하십시오.

UML은 "리버스 엔지니어링"을 제공하기 위한 하나의 접근 방식이지만, 최근 국제 표준 활동의 진보로 KDM(Knowledge Discovery Metamodel)이 개발되었습니다.이 표준은 프로그래밍 언어 구조의 중간(또는 추상화) 표현과 그 상호 관계를 위한 온톨로지를 제공합니다.객체 관리 그룹 표준(ISO 표준이 되는 과정에서도)인 KDM은 소스, 바이너리 및 바이트 코드의 추출과 분석을 제공할 수 있는 툴과 분석 환경의 개발과 함께 업계에서 입지를 굳히기 시작했습니다.소스 코드 분석을 위해 KDM의 세분화된 표준 아키텍처를 통해 소프트웨어 시스템 흐름(데이터, 제어 및 콜 맵), 아키텍처 및 비즈니스 계층 지식(규칙, 용어 및 프로세스)을 추출할 수 있습니다.이 표준을 사용하면 상세 분석(근본 원인, 영향 등) 또는 파생 분석(비즈니스 프로세스 추출 등)을 위해 다양한 시스템 지식 계층을 상호 연관시킬 수 있습니다.언어의 수, 소프트웨어 언어의 계속적인 진화, 새로운 언어의 발달로 인해 언어 구조를 표현하려는 노력은 끝이 없을 수 있지만, 표준에서는 광범위한 언어 집합과 진화를 지원하는 확장 기능을 사용할 수 있습니다.KDM은 UML, BPMN, RDF 및 기타 표준과 호환되므로 소프트웨어 시스템 전환 및 엔터프라이즈 비즈니스 계층 분석 등의 작업에 시스템 지식을 활용합니다.

프로토콜

프로토콜은 메시지 형식 및 메시지 교환 방법을 설명하는 규칙 집합입니다. 프로토콜 상태 시스템입니다.따라서 프로토콜 역공학의 문제는 메시지 형식과 상태-기계 역공학의 두 가지 하위 문제로 나눌 수 있다.

메시지 형식은 전통적으로 프로토콜 구현이 메시지를 처리하는 방법에 대한 분석을 수반하는 지루한 수동 프로세스에 의해 역설계되어 왔지만, 최근의 연구는 많은 자동 솔루션을 [22][23][24]제안했다.일반적으로 자동 접근법은 다양한 클러스터링 분석을 사용하여 메시지를 클러스터로 그룹화하거나 메시지 처리를 추적하는 프로토콜 구현을 에뮬레이트합니다.

프로토콜의 국가 기계의 역엔지니어링에 대한 작업이 적었습니다.일반적으로 프로토콜 상태 기계는 수동적으로 통신을 관찰하고 관찰된 모든 메시지 시퀀스를 수용하는 가장 일반적인 상태 머신을 구축하려는 오프라인 학습의 프로세스와 메시지의 프로빙 시퀀스를 생성하고 res를 청취할 수 있는 온라인 학습을 통해 학습할 수 있다.프로빙 시퀀스에 핀을 꽂습니다.일반적으로 소규모 상태 기계의 오프라인 학습은 [25]NP-완료라고 알려져 있지만, 온라인 학습은 다항식 시간에 [26]수행할 수 있다.자동 오프라인 접근법은 Comparetti [24]등에 의해, 온라인 접근법은 Cho [27]등에 의해 입증되었다.

암호화 및 해시 함수와 같은 일반적인 프로토콜의 다른 구성 요소도 자동으로 리버스 엔지니어링할 수 있습니다.통상, 자동 어프로치는, 프로토콜 실장의 실행을 추적해,[28] 암호화되지 않은 패킷을 보관 유지하고 있는 메모리내의 버퍼를 검출하려고 합니다.

집적회로/스마트카드

리버스 엔지니어링은 스마트 카드를 분석하는 침입적이고 파괴적인 형태이다.공격자는 화학물질을 이용해 스마트카드의 층을 하나씩 에칭하고 스캔전자현미경(SEM)으로 사진을 찍는다.이 기술은 스마트 카드의 하드웨어와 소프트웨어 부분을 모두 드러낼 수 있습니다.공격자에게 가장 큰 문제는 모든 것을 올바른 순서로 정리하여 모든 것이 어떻게 작동하는지 확인하는 것입니다.카드 제조원은 버스 스크램블링 [29][30]등 메모리 위치를 혼재시킴으로써 키와 조작을 숨기려고 합니다.

경우에 따라서는 스마트 카드가 아직 작동 중일 때 프로브를 연결하여 전압을 측정할 수도 있습니다.카드 제조사는 그 공격을 [31]감지하고 방지하기 위해 센서를 사용합니다.대규모 칩 제조사만 이용할 수 있는 특수 장비와 노력에 대한 대규모 투자가 필요하기 때문에 이 공격은 그리 흔하지 않다.게다가 섀도 어카운트등의 다른 시큐러티 테크닉이 자주 사용되고 있기 때문에, 이 공격의 메리트는 낮습니다.암호화 데이터를 복제하고 PIN을 크래킹하기 위해 칩 앤 PIN 카드에 대한 공격이 멀티팩터 인증에 비용 효율이 높은 공격을 제공할지는 아직 불확실합니다.

완전 리버스 엔지니어링은 몇 가지 주요 단계로 진행됩니다.

SEM을 사용하여 이미지를 촬영한 후 첫 번째 단계는 이미지를 서로 연결하는 것입니다. 각 레이어는 한 번의 샷으로 캡처할 수 없기 때문에 이 과정이 필요합니다.SEM은 회로 영역을 스위프하여 레이어 전체를 커버하기 위해 수백 개의 이미지를 촬영해야 합니다.이미지 스티칭은 수백 장의 사진을 입력으로 받아 전체 레이어의 적절한 중첩된 단일 사진을 출력합니다.

다음으로, 식각 후 샘플을 매번 SEM에 대해 정확히 동일한 위치에 배치할 수 없기 때문에 스티치된 층을 정렬해야 합니다.따라서 실제 회선과 같이 올바른 방법으로 스티치된 버전이 중복되는 일은 없습니다.통상, 3개의 대응하는 점이 선택되고, 거기에 근거해 변환이 적용됩니다.

회로 구조를 추출하려면 정렬된 스티치된 이미지를 분할해야 합니다. 이 분할은 중요한 회로를 강조 표시하여 관심 없는 배경 및 절연 재료로부터 분리합니다.

마지막으로 와이어를 한 층에서 다른 층으로 트레이스할 수 있어 회로의 모든 정보를 포함하는 회로의 넷리스트를 재구성할 수 있다.

군사 응용 프로그램

리버스 엔지니어링은 일반 부대가 현장이나 정보 작전에 의해 획득한 다른 나라의 기술, 장치 또는 정보를 복사하기 위해 사람들에 의해 종종 사용된다.그것은 2차 세계대전냉전시대에 자주 사용되었다.다음은 제2차 세계 대전 이후의 유명한 예입니다.

  • 제리 캔: 2차 세계대전에 참가한 영국과 미군들은 독일인들이 훌륭한 디자인의 가솔린 캔을 가지고 있다는 것을 알아챘다.그들은 그 캔들을 역설계하여 복제했고, 그 캔들은 일반적으로 "제리 캔"으로 알려져 있었다.
  • 팬저스크렉:독일인들은 2차 세계대전 중에 미국 바주카를 포획하여 더 큰 판저슈렉을 만들기 위해 역설계하였다.
  • 투폴레프 Tu-4: 1944년, 일본 상공에서 임무를 수행하던 세 대의 미국 B-29 폭격기가 소련에 착륙하도록 강요당했다.비슷한 전략폭격기가 없었던 소련은 B-29를 모방하기로 결정했다.3년 만에 그들은 거의 완벽한 [32]복제품인 Tu-4를 개발했다.
  • SCR-584 레이더: 제2차 세계대전 후 소련에 의해 복제되었으며, 몇 가지 개조된 것으로 알려져 있습니다.- с 58 58 58 、 б о о 、 б о 、 б о 、 б о scr scr 。
  • V-2 로켓:V-2와 관련 기술에 대한 기술 문서들은 전쟁 말기에 서방 연합군에 의해 포착되었다.미국은 PGM-11 레드스톤 [33]로켓의 개발로 이어진 페이퍼클립 작전을 통해 역공학적 노력을 집중했다.소련은 기술 문서와 계획을 복제하기 위해 생포된 독일 기술자들을 이용했고 생포된 하드웨어로 그들의 복제 로켓인 R-1을 만들었다.그렇게 해서 전후 소련의 로켓 프로그램이 시작되었고, 이것은 R-7과 우주 경쟁의 시작을 가져왔다.
  • 소련이 [34]AIM-9 사이드와인더를 역설계한 K-13/R-3S 미사일(NATO 보고명 AA-2 Atoll)은 1958년 9월 대만(ROCAF) AIM-9B가 중국 PLA MiG-17을 폭발시키지 않고 명중시킨 이후 가능해졌다.미사일은 기체 안에 박혔고 조종사는 소련 과학자들이 말하는 미사일 개발 대학 과정을 가지고 기지로 돌아왔다.
  • BGM-71 TOW 미사일:1975년 5월, 토우 미사일과 매버릭 미사일의 공동 생산에 대한 이란과 휴즈 미사일 시스템 간의 협상은 가격 구조의 이견으로 교착 상태에 빠졌고, 이후 1979년 혁명으로 그러한 공동 생산 계획은 모두 중단되었다.이란은 이후 이 미사일을 역설계하는데 성공했으며 현재 자체 복제품인 투판을 생산하고 있다.
  • 중국은 전투기에서 미사일, MiG-15,17,19,21 (J-2,5,6,7이 됨)과 Su-33 (J-15가 [35]됨)과 같은 많은 서방과 러시아 하드웨어의 예를 뒤집었다.중국의 군사 성장에 대한 보다 최근의 분석은 첨단 무기 [36]시스템에 대한 습관적인 역공학의 내재적인 한계를 지적하고 있다.
  • 제2차 세계대전 중 폴란드와 영국의 암호학자들은 포착된 독일 "에니그마" 메시지 암호화 기계에 취약점이 있는지 연구했다.그 후, 전기 기계 장치인 "폭탄"에 대한 조작을 시뮬레이션하여, "에니그마" 기계의 가능한 모든 스크램블러 설정을 시도하여 독일군이 송신한 암호 메시지를 해독하는 데 도움을 주었다.
  • 또한 제2차 세계대전 중 영국 과학자들은 야간 유도 폭격 임무를 수행하기 위해 루프트바페가 사용한 점점정교한 무선 항법 시스템을 분석하여 물리쳤다.이 시스템에 대한 영국의 대응조치는 매우 효과적이어서, 독일 항공기가 독일 영토로 돌아간 것으로 믿었기 때문에 어떤 경우에는 영국 공군 기지에 착륙하라는 신호에 이끌렸다.

유전자 네트워크

역공학적 개념은 생물학, 특히 유전자 조절 네트워크의 구조와 기능을 이해하는 작업에도 적용되어 왔다.그것들은 생물학적 행동의 거의 모든 측면을 조절하고 세포가 생리적인 과정과 섭동에 대한 반응을 수행하도록 합니다.따라서 유전자 네트워크의 구조와 동적 거동을 이해하는 것은 시스템 생물학에서 가장 중요한 도전 중 하나이며, 기초 [37]연구를 벗어난 몇몇 응용 분야에서 즉각적인 실질적인 영향을 미칩니다.분자생물학과 데이터 과학 방법을 이용하여 유전자 조절 네트워크를 역설계하는 몇 가지 방법이 있다.이들은 일반적으로 6개의 [38]클래스로 구분됩니다.

유전자 네트워크 추론 방법의 6가지 등급에 따르면
  • 공표현법은 두 유전자가 유사한 발현 프로파일을 보일 경우, 공표현으로부터 단순히 어떤 인과관계도 추론할 수 없지만 상관관계가 있을 수 있다는 개념에 기초하고 있다.
  • 배열 모티브 방법은 유전자 프로모터를 분석하여 특정 전사인자 결합 도메인을 찾아냅니다.전사인자가 특정 유전자의 프로모터와 결합할 것으로 예측되면 조절접속을 가설화할 수 있다.
  • Chromatin ImmunoPreciptation(ChIP) 방법은 선택된 전사 인자의 유전자 결합의 게놈 전체 프로파일을 조사하여 그들의 하류 유전자 네트워크를 추론한다.
  • 정형외과 방법은 유전자 네트워크 지식을 한 종에서 다른 종으로 전달합니다.
  • 문헌 방법은 추정 또는 실험적으로 입증된 유전자 네트워크 연결을 식별하기 위해 텍스트 마이닝과 수동 연구를 구현한다.
  • 전사복합체 방법은 전사인자 간의 단백질-단백질 상호작용에 대한 정보를 활용하여 유전자 네트워크의 개념을 전사조절복합체를 포함하도록 확장한다.

종종 유전자 네트워크의 신뢰성은 하나의 네트워크 노드를 제거하는 [39]것이 네트워크의 나머지 노드의 기능에 예측 가능한 영향을 미친다는 원칙에 기초하여 유전자 섭동 실험에 이어 동적 모델링에 의해 테스트된다.유전자 네트워크의 역공학의 응용은 식물 생리의[40] 메커니즘을 이해하는 것에서부터 항암 [41]치료를 위한 새로운 목표의 강조에 이르기까지 다양하다.

특허법과 중복되다

리버스 엔지니어링은 주로 프로세스 또는 아티팩트의 구축, 사용 또는 내부 프로세스의 방식이 작성자에 의해 명확해지지 않은 프로세스 또는 아티팩트를 이해하는 데 적용됩니다.

특허는 발명자가 직접 상세한 공개를 하고 그 대가로 관련된 발명에 대한 법적 보호를 받는 것이 특허의 본질이기 때문에 그 자체를 연구하기 위해 역설계할 필요는 없다.다만, 1개 이상의 특허에 근거해 생산되는 품목에는, 특허가 없고 공개되지 않은 다른 기술도 포함될 수 있다.실제로 리버스 엔지니어링의 공통적인 동기 중 하나는 경쟁사의 제품이 특허 침해 또는 저작권 침해를 포함하고 있는지 여부를 판단하는 것입니다.

합법성

미국

미국에서는 아티팩트나 프로세스가 영업비밀에 의해 보호되더라도 합법적으로 [42]취득된 경우 리버스 엔지니어링이 합법적으로 이루어지는 경우가 많습니다.

컴퓨터 소프트웨어의 리버스 엔지니어링은 종종 계약 위반으로 계약법 및 기타 관련 법률 모두에 해당됩니다.이는 대부분의 최종 사용자 라이센스 계약에서 이를 명시적으로 금지하고 있으며, 미국 법원은 이러한 조건이 존재할 경우 이를 명시적으로 허용하는 저작권법을 무시한다고 판결했기 때문입니다(Bowers v. Baystate[43][44] Technologies 참조).디지털 밀레니엄 저작권법(U.C. § 1201 (f)) 제103조(f)에 따르면, 프로그램을 합법적으로 소유하고 있는 사람은, 「상호 운용성」을 실현하기 위해서 필요한 경우, 그 보호를 리버스 엔지니어링 해 회피할 수 있습니다.이것은 프로그램과 상호작용할 수 있는 다른 장치 및 프로그램을 폭넓게 커버하는 용어입니다.유용한 방법으로 데이터를 주고받을 수 있습니다.이에 따라 습득한 지식을 공유하여 상호 운용성을 [45]위해 사용할 수 있는 제한적인 면제가 존재합니다.

유럽 연합

컴퓨터 프로그램의 법적 보호에 관한 EU 지침 2009/24는 이전(1991년)[46] 지침을 대체하여 유럽연합[47][48]역공학을 지배한다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b "What is Reverse-engineering? How Does It Work". SearchSoftwareQuality. Retrieved 2022-07-27.
  2. ^ "Reverse Engineering". ethics.csc.ncsu.edu. Retrieved 2022-07-27.
  3. ^ Thayer, Ken. "How Does Reverse Engineering Work?". globalspec. IEEE Global Spec. Retrieved 26 February 2018.
  4. ^ Villaverde, Alejandro F.; Banga, Julio R. (6 February 2014). "Reverse engineering and identification in systems biology: strategies, perspectives and challenges". Journal of the Royal Society Interface. 11 (91): 20130505. doi:10.1098/rsif.2013.0505. PMC 3869153. PMID 24307566.
  5. ^ a b c Chikofsky, E.J. & Cross, J.H., II (1990). "Reverse Engineering and Design Recovery: A Taxonomy". IEEE Software. 7 (1): 13–17. doi:10.1109/52.43044. S2CID 16266661.
  6. ^ a b 리버스 엔지니어링 및 프로그램 이해도 조사마이클 L.Nelson, 1996년 4월 19일, ODU CS 551 – 소프트웨어 엔지니어링 조사.arXiv:cs/0503068v1
  7. ^ Vinesh Raja; Kiran J. Fernandes (2007). Reverse Engineering: An Industrial Perspective. Springer Science & Business Media. p. 3. ISBN 978-1-84628-856-2.
  8. ^ Jonathan Band; Masanobu Katoh (2011). Interfaces on Trial 2.0. MIT Press. p. 136. ISBN 978-0-262-29446-1.
  9. ^ a b c Chikofsky, E. J.; Cross, J. H. (January 1990). "Reverse engineering and design recovery: A taxonomy" (PDF). IEEE Software. 7: 13–17. doi:10.1109/52.43044. S2CID 16266661. Archived from the original (PDF) on 2018-04-17. Retrieved 2012-07-02.
  10. ^ a b c d e f g h Eilam, Eldad (2005). Reversing: secrets of reverse engineering. John Wiley & Sons. ISBN 978-0-7645-7481-8.
  11. ^ 인터넷 기술 특별 조사위원회 RFC 2828 인터넷 보안 용어집
  12. ^ Karwowski, Waldemar; Trzcielinski, Stefan; Mrugalsk, Beata; DiNicolantonio, Massimo; Rossi, Emilio (2018). Advances in Manufacturing, Production Management and Process Control. pp. 287–288.
  13. ^ Varady, T; Martin, R; Cox, J (1997). "Reverse engineering of geometric models–an introduction". Computer-Aided Design. 29 (4): 255–268. doi:10.1016/S0010-4485(96)00054-1.
  14. ^ "Reverse Engineering".
  15. ^ Warden, R. (1992). Software Reuse and Reverse Engineering in Practice. London, England: Chapman & Hall. pp. 283–305.
  16. ^ "Working Conference on Reverse Engineering (WCRE)". uni-trier.de. Computer Science bibliography. Archived from the original on 14 March 2017. Retrieved 22 February 2018.
  17. ^ Shahbaz, Muzammil (2012). Reverse Engineering and Testing of Black-Box Software Components: by Grammatical Inference techniques. LAP LAMBERT Academic Publishing. ISBN 978-3659140730.
  18. ^ Chuvakin, Anton; Cyrus Peikari (January 2004). Security Warrior (1st ed.). O'Reilly. Archived from the original on 2006-05-22. Retrieved 2006-05-25.
  19. ^ Samuelson, Pamela & Scotchmer, Suzanne (2002). "The Law and Economics of Reverse Engineering". Yale Law Journal. 111 (7): 1575–1663. doi:10.2307/797533. JSTOR 797533. Archived from the original on 2010-07-15. Retrieved 2011-10-31.
  20. ^ "Samba: An Introduction". 2001-11-27. Retrieved 2009-05-07.
  21. ^ Lee, Newton (2013). Counterterrorism and Cybersecurity: Total Information Awareness (2nd ed.). Springer Science+Business Media. p. 110. ISBN 978-1461472049.
  22. ^ W. Cui, J. Kannan, H. J. Wang.디스커버:네트워크 트레이스로부터의 자동 프로토콜 리버스 엔지니어링.USENIX 보안 심포지엄에 관한 제16회 USENIX 보안 심포지엄 진행, 페이지 1~14.
  23. ^ W. Cui, M. Peinado, K.첸, H.J. 왕, L.일룬-브리즈.Tupni: 입력 포맷의 자동 리버스 엔지니어링.제15회 컴퓨터 및 통신 보안에 관한 ACM 회의의 진행, 페이지 391–402.ACM, 2008년 10월
  24. ^ a b P. M. Compareetti, G. Wondracek, C. Kruegel, E. Kirda.프로스펙스: 프로토콜 사양 추출.2009년 제30회 IEEE 보안 및 프라이버시에 관한 심포지엄의 진행, 페이지 110-125, Washington, 2009.IEEE 컴퓨터 협회
  25. ^ Gold, E (1978). "Complexity of automaton identification from given data". Information and Control. 37 (3): 302–320. doi:10.1016/S0019-9958(78)90562-4.
  26. ^ D. Angluin (1987). "Learning regular sets from queries and counterexamples". Information and Computation. 75 (2): 87–106. doi:10.1016/0890-5401(87)90052-6.
  27. ^ C.Y. Cho, D. Babic, R.신, 그리고 D.Song. Botnet 명령제어 프로토콜의 공식 모델 추론 및 분석, 2010 ACM 컴퓨터 및 통신 보안 회의.
  28. ^ 폴리글롯: 동적 이진 분석을 사용하여 프로토콜 메시지 형식을 자동으로 추출합니다.J. 카발레로, H. 인, Z.량, 그리고 D.Song. 제14회 컴퓨터 및 통신 보안에 관한 ACM 회의, 317–329페이지.
  29. ^ Wolfgang Rankl, Wolfgang Effing, 스마트 카드 핸드북 (2004)
  30. ^ T. Welz: 지불 수단으로서의 스마트 카드 (2008년), ITS-Security Ruhr-Universitét Bochum 세미나
  31. ^ 데이비드 C.Musker: Wayback Machine, IBC Conference, 1998년 6월 10일 2011-07-09년 아카이브된 전자제품 지적재산권 보호 이용
  32. ^ Yeam Gordon과 Vladimir Rigmant, Tu-4: 소련 슈퍼포트리스(잉클리, 영국:Midland, 2002).
  33. ^ "Redstone rocket". centennialofflight.net. Retrieved 2010-04-27.
  34. ^ "중국 공군: 진화하는 개념, 역할, 능력", 미국 국방대학 출판부 중국군사문제연구센터, 277쪽
  35. ^ Chandrashekar, S., R. N. Nagappa, L. Sundaresan 및 N. Ramani, 2011.중국의 기술과 혁신: 항공기 터빈 블레이드용 단결정 초합금 개발 사례 연구, R4-11.ISSSP 국립고등연구소, 방갈로르.http://isssp.in/wp-content/uploads/2013/01/Technology-and-Innovation-in-China-A-case-Study-of-Single-Crystal4.pdf;와 Dillon Zhou, "중국 J-15 전투기: 중국 관리들은 신형 전투기를 중국 오리지널 전투기로 방어하지만 의문점은 남는다" Mic, 2012년 12월 16일https://mic.com/articles/20270/china-j-15-fighter-jet-chinese-officials-defend-new-fighter- - as - chinese - original - but - but - -remainremain
  36. ^ Andrea Gilli와 Mauro Gilli, "중국이 아직 따라잡지 못한 이유: 군사 기술의 우수성과 모방, 역공학, 사이버 스파이 활동의 한계, 국제 보안 43:3 (2019 141-1989, https://doi.org/10.1162/isec_a_00337)
  37. ^ Giorgi, Federico M. (2020). "Gene network reverse engineering: The Next Generation". Biochimica et Biophysica Acta (BBA) - Gene Regulatory Mechanisms. 1863 (6): 194523. doi:10.1016/j.bbagrm.2020.194523. ISSN 1874-9399. PMID 32145356. S2CID 212629142.
  38. ^ a b Mercatelli, Daniele; Scalambra, Laura; Triboli, Luca; Ray, Forest; Giorgi, Federico M. (2020). "Gene regulatory network inference resources: A practical overview". Biochimica et Biophysica Acta (BBA) - Gene Regulatory Mechanisms. 1863 (6): 194430. doi:10.1016/j.bbagrm.2019.194430. ISSN 1874-9399. PMID 31678629. S2CID 207895066.
  39. ^ Tegner, J.; Yeung, M. K. S.; Hasty, J.; Collins, J. J. (2003). "Reverse engineering gene networks: Integrating genetic perturbations with dynamical modeling". Proceedings of the National Academy of Sciences. 100 (10): 5944–5949. Bibcode:2003PNAS..100.5944T. doi:10.1073/pnas.0933416100. ISSN 0027-8424. PMC 156306. PMID 12730377.
  40. ^ Friedel, Swetlana; Usadel, Björn; von Wirén, Nicolaus; Sreenivasulu, Nese (2012). "Reverse Engineering: A Key Component of Systems Biology to Unravel Global Abiotic Stress Cross-Talk". Frontiers in Plant Science. 3: 294. doi:10.3389/fpls.2012.00294. ISSN 1664-462X. PMC 3533172. PMID 23293646.
  41. ^ Lefebvre, Celine; Rieckhof, Gabrielle; Califano, Andrea (2012). "Reverse-engineering human regulatory networks". Wiley Interdisciplinary Reviews: Systems Biology and Medicine. 4 (4): 311–325. doi:10.1002/wsbm.1159. ISSN 1939-5094. PMC 4128340. PMID 22246697.
  42. ^ 「트레이드 시크릿 101」, 특집 기사, 2011년 3월.ASME. 2013-10-31에 회수.
  43. ^ 베이스테이트 바우어스 사건Utsystem.edu 를 참조해 주세요.2011년 5월 29일에 취득.
  44. ^ Gross, Grant. (2003-06-26) 계약 건은 리버스 엔지니어링 개발자 월드에 타격을 줄 수 있습니다.인포월드2011년 5월 29일에 취득.
  45. ^ 이 섹션은 다음과 같습니다.
    (f) 리버스 엔지니어링
    (1) (a)(1)(A)의 규정에도 불구하고, 컴퓨터 프로그램의 복사본을 합법적으로 사용할 권리를 취득한 자는 필요한 프로그램의 요소를 특정하고 분석하는 유일한 목적을 위해 해당 프로그램의 특정 부분에 대한 접근을 효과적으로 제어하는 기술적 조치를 회피할 수 있다.y 독립적으로 작성된 컴퓨터 프로그램과 다른 프로그램과의 상호운용성을 실현하기 위해, 또한 이전에는 회피에 종사하는 사람이 쉽게 이용할 수 없었던 컴퓨터 프로그램의 상호운용성을 실현하는 것. 단, 이러한 식별 및 분석 행위는 이 권원에 의거한 침해가 되지 않는다.
    (2) (a)(2) 및 (b)의 규정에도 불구하고, 개인은 (1)에 따른 식별 및 분석을 가능하게 하기 위해 기술적 조치를 회피하거나 기술적 조치에 의해 제공되는 보호를 회피하기 위한 기술적 수단을 개발 및 사용할 수 있다.다른 프로그램과의 상호운용성을 달성하기 위해 필요한 경우, 이 제목에 따라 침해에 해당하지 않는 범위 내에서 다른 프로그램과의 의존적으로 작성된 컴퓨터 프로그램.
    (3) 제1항에 따라 허용된 행위를 통해 취득한 정보 및 제2항에 따라 허용된 방법은 제1항 또는 제2항에 규정된 자가 독립적으로 작성된 컴퓨터의 상호운용성을 가능하게 하기 위한 목적으로만 해당 정보 또는 수단을 제공하는 경우 다른 사람이 이용할 수 있다.p본 조 이외의 적용법 위반 또는 본 조 이외의 적용법 위반에 해당하지 않는 범위 내에서 다른 프로그램과의 프로그램.
    (4) 본 조의 목적상, '상호운용성'이란 정보를 교환하는 컴퓨터 프로그램 및 교환된 정보를 상호 이용하는 이들 프로그램의 능력을 말한다.
  46. ^ 1991년 5월 14일의 위원회 지침 91/250/EEC. 컴퓨터 프로그램의 법적 보호에 관한 것.Eur-lex.europa.eu 를 참조해 주세요.2011년 5월 29일에 취득.
  47. ^ 2009년 4월 23일 유럽의회 및 이사회 지침 2009/24/EC
  48. ^ 지시문은 다음과 같습니다.

    컴퓨터 프로그램 사본을 이용할 수 있게 된 코드 형식의 무단 복제, 번역, 수정 또는 변환은 저작자의 배타적 권리를 침해하는 것으로 간주됩니다.다만, 그러한 코드의 복제와 그 형식의 번역이, 독립적으로 작성된 프로그램의 다른 프로그램과의 상호 운용성을 실현하기 위해서 필요한 정보의 취득에 불가결한 상황이 존재하는 경우가 있습니다.따라서 이러한 제한된 상황에서만 프로그램의 사본을 사용할 권리를 가진 사람에 의한 또는 그 대리인에 의한 복제 및 번역행위의 수행은 정당하고 공정한 관행과 양립할 수 있으므로, 제8자의 허가를 요구하지 않는 것으로 간주해야 한다.이 예외의 목적은 서로 다른 제조사의 컴포넌트를 포함한 컴퓨터 시스템의 모든 컴포넌트를 연결할 수 있도록 하는 것입니다.저작자의 배타적 권리에 대한 이러한 예외는 제8자의 정당한 이익을 침해하거나 프로그램의 정상적인 이용과 상충되는 방법으로 사용할 수 없습니다.

원천