처음부터 차근차근

리버싱 본문

정보보안

리버싱

_soyoung 2022. 3. 12. 16:23
반응형

리버싱(Reversing)

Reverse : 역전, 반대로 전환

리버싱이란 역설계 즉, 완제품을 보고 완제품의 설계도를 다시 그리는 것 지식이나 설계 정보를 추출하는 것이다.

이것을 리버싱 엔지니어링이라고 한다.

 

비유를 하자면 안이 보이지 않는 상자를 알아내는 것이다.

상자가 어떻게 생겼는지, A를 상자 안에 넣었더니 B가 나왔는데 어떻게 나온 것인지 알아내는 것이다.

 

 

리버싱이 필요한 사람

  • 악성코드를 분석하고자 하는 사람
  • 내가 개발한 제품을 지키고 싶은 사람
  • 다른 사람이 만든 프로그램의 원리가 궁금한사람

 

리버싱의 응용 분야

  • 소프트웨어: 악성코드 분석, 취약점 분석, 라이센싱/크래킹, 버그헌팅
  • 하드웨어(포렌식): 하드디스크 분석, loT 기기 분석

 

 

WinHex로 실행파일 수정하는 방법

WinHex : 파일의 내용을 HEX (16진수) 형태로 볼 수 있는 프로그램

 

방법

1. Visual Studio를 이용해서 간단한 c언어를 이용한 실행파일을 만들고 

그 실행 파일은 WinHex에서 연다.

 

2. 그 다음 Find Text 기능을 이용해 내용을 찾은 다음

내용을 수정한다.

 

이때 주의할 점이 수정할 때 백스페이스(지우기)를 사용하면 안된다.

WinHex는 백스페이스까지 문자로 보기 때문에 내용이 지워지기는 커녕 파일이 깨질 수 있다.

그래서 백스페이스를 사용하지 않고 그 위에 바로 문자를 써야한다. 

 

실습

hello -> Yes!!로 수정함

cyj1.exe, lyh1.exe, ajh1.exe : hello  -->  ksy!!로 수정

 

 

 

올리디버거(OllyDbg)

OllyDbg : 2진수 파일 분석기

오브젝트 파일과 라이브러리로부터 루틴을 찾아낸다.

구성

4개의 윈도우

Code window : (세부 창 순서대로 적음) 명령어가 실행될 주소, 기계어, 기계어를 어셈블리어로 바꿔놓은 것, 주석 표시

Register window: 레지스터의 값을 표시

Dump window : Address 주소를 ASCII코드로 해석해놓은 창

Stack window : 프로세스의 스택 주소, 스택 값 표시

 

단축키

의미 설명
F9 Run 프로그램을 실행
CTRL+F2 Restart Program 프로그램을 재실행
F7 Step Into 명령어를 한 줄씩(call 명령어실행시 함수내부로 들어가서 수행)
F8 Step Over 명령어를 한 줄씩(call 명령어실행시 함수내부로 들어가지 않고  수행)
CTRL+G Go To 특정 주소 위치로 이동
F2 Toggle BreakPoint 브레이크 포인트를 설정/해제
; Comment 주석을 추가

 

실습

pretty -> happy

happy -> pretty

 

 

 

+ Debug 폴더 안에 있는 .exe 파일과 

Release 폴더 안에 있는 .exe 파일의 다른 점

 

용량이 다르다.

Debug 안 실행파일 > Release 안 실행 파일

build하면 Release 폴더 안에 실행 파일이 생긴다.

즉 Release 안 실행 파일은 build를 한 것 이기 때문에 사용자가 꼭 필요한 것들만 추려서 최종 프로덕트로 만든거라서 용량이 더 적다.

 

 

 

 

출처 : 정보보안(22-1학기)고수정교수 강의 내용 변형 및 요약

반응형

'정보보안' 카테고리의 다른 글

Crack(코드우회)  (0) 2022.03.31
리버싱과 어셈블리어  (0) 2022.03.27
Patch  (0) 2022.03.19
Steganography(스테가노그래피)  (0) 2022.03.11
보안의 3대 요소, TCP/IP, RFC, 인터넷 아카이브, 피들러, 구글 해킹  (0) 2022.03.06
Comments