반응형

Anti-Disassembly 로 많이 사용되는 EB FF 코드에 대해 간단히 살펴보자.

 

EB는 1바이트(-128 ~ +127) 이내 거리로 이동하는 Jump Short 명령이다.

위 그림에서 0x0040123F EB 03은 다음 명령어 주소(0x00401241)를 기준으로 03바이트 이동한 0x00401244로 이동한다.

 

EB 03을 EB FF로 바꿔보자.

FF는 -1을 의미하기 때문에 다음 명령어 주소 0x00401241에서 -1만큼 이동한 0x00401240으로 이동하라는 뜻이다. 그래서 화살표가 다른 곳을 가리키지 않고 명령어 자신을 가리키고 있다. (잘린것 처럼 보인다)

 

엔터키를 눌러 Jump 명령을 실행해 보면 EB FF 명령 중간인 FF의 위치, 0x00401240으로 이동한다.

 

※ 참고

ANTI-DISASSEMBLY TECHNIQUES

Assembly “wrapping”: a technique for anti-disassembly

 

반응형
Posted by J-sean
:

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

반응형

Visual Studio Debugging Breakpoint

 

Use the right type of breakpoint

 

 

Log to Output window

 

 

반응형
Posted by J-sean
:
반응형

아래 링크를 참조해 WinDbg를 설치한다.

Windows 디버거 설치

 

WinDbg를 실행하고 Settings를 클릭한다.

 

Debugging settings - Debugging paths - Default symbol path:에 위와같이 세팅한다.

심볼 파일이 디버깅 할 파일과 같은 경로에 있거나 path에 지정한 경로(I:\windbgsymbols)에 있으면 된다.

※ 기본 심볼 서버: https://msdl.microsoft.com/download/symbols

※ 기본 캐시 폴더: C:\ProgramData\dbg

 

Symbol path for Windows debuggers

 

디버깅할 파일을 로드하면 관련 심볼 파일도 로드된다.

 

심볼파일(.pdb)을 로드할 때 WinDbg는 타임 스템프 등을 고려한 버전 체크를 하는데 버전이 맞지 않으면 로드하지 않는다. 아래 명령을 사용하면 심볼파일의 버전에 관계없이 로드할 수 있다.

[한 모듈의 심볼파일만 로드]

.reload /i Module_Name

ex) .reload /i myapp.exe

[모든 모듈의 심볼파일 로드]

.reload /i

 

2023.07.02 - [Reverse Engineering] - WinDbg 버전(타임스템프) 일치하지 않는 심볼파일 로드하기

 

반응형
Posted by J-sean
:
반응형

유니티와 Visual Studio를 이용해 디버깅 해 보자.

 

Cube를 하나 생성하고 스크립트를 추가한다.

 

매 프레임마다 X축으로 1 이동하는 스크립트를 작성한다.

 

이동하는 코드에 브레이크 포인트를 설정한다. (F9)

 

디버깅을 시작한다. (Attach to Unity 버튼을 클릭하거나 F5를 누른다)

 

 

유니티에 C# 디버거가 연결되었다는 창이 뜬다. 'Enable debugging for this session' 버튼을 클릭한다.

 

오른쪽 하단에 'Debugger Attached' 표시(파란색 벌레)가 나타난다. Play 버튼을 클릭한다.

 

브레이크 포인트에서 실행이 멈춘다.

 

디버거와 유니티를 확인하며 디버깅을 진행한다.

 

 

유니티 실행시 처음부터 디버깅이 가능하게 설정할 수 도 있다. (Code Optimization On Startup을 Debug로 바꾼다)

 

반응형
Posted by J-sean
: