포스트

리버스 엔지니어링

리버스 엔지니어링이란?


  • Reverse Engineering 또는 역공학
  • 장치 또는 시스템의 기술적인 원리를 그 구조 분석을 통해 발견하는 과정
  • 기계 장치, 전자 부품, 소프트웨어 프로그램 등을 분해해서 분석하는 것
  • 상업적 또는 군사적으로 하드웨어를 분석한 것에서 시작되었음
    • 원본 생산 절차에 대해 전혀 지식이 없는 상태에서, 최종 물품을 가지고 설계 과정을 추론하는 것
  • 제품 개선, 유사 제품 개발, 고장 분석 및 복구, 보안 분석 등에 유용함

특징 및 장점


 - 실전에 쓰이며 검증되고 있는 물건을 토대로 개발하는 것이기 때문에,
  무에서부터 유를 창조하는 것과는 비교도 할 수 없을 정도로 고효율 방식 - 제품 개선 및 개발 시간 단축 - 비용 절감 - 기술 습득  

방법


소프트웨어

  • 정적 분석
    • IDA, ghidra 등 디컴파일러를 사용해 실행 바이너리로부터 소스를 역추출하기도 함
  • 동적 분석
    • ollydbg, x64dbg, GDB 등의 디버거들을 실행시켜놓고 프로그램을 실행시켜 어떤 값이 어떤 명령어와 함께 실행되는지 관찰
  • 리버스 엔지니어링을 막기 위해 프로그램의 분석을 최대한 복잡하게 만들기도 함

하드웨어

  • 제품을 부품 단위로 분해하여, 각 부품의 데이터시트를 찾아보는 방법으로 리버싱

단점 


  • 법적 문제가 발생할 수 잇음
    • 저작권 및 판권
  • 복잡한 제품의 경우 정확도가 제한적일 수 있음
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.