리버싱 핵심원리 책 저자 블로그

리버싱 핵심원리 책으로 공부중.


Code Window

기본적으로 Disassembly Code를 표시하여 각종 Comment, label을 보여주며, 코드를 분석하여 loop, jump 위치 등의 정보를 표시합니다.


Register Winodw
CPU register 값을 실시간으로 표시하며 특정 rgister들은 수정도 가능합니다.

Dump Winodw
프로세스에서 원하는 Memory 주소 위치를 Hex와 Ascll / 유니코드 값으로 표시하고 수정도 가능합니다.

Stack Window
ESP register가 가리키는 프로세스 stack memory를 실시간으로 표시하고 수정도 가능합니다.


- 예제. 4가지 명령어를 이용해 메인함수를 찾자.
Restart 단축키 = [ Ctrl + F2 ]
기능 : 다시 처음부터 디버깅 시작 디버깅 당하는 프로스세스를 종료하고 재실행.

Step Info 단축키 = [ F7 ]
하나의 OP Code 실행 CALL 명령을 만나면, 그 함수 코드 내부로 따라 들어감

Step Over 단축키 = [ F8 ]
하나의 OP Code 실행 CALL 명령을 만나면, 따라 들어가지 않고 그냥 함수 자체를 실행

Execute till Reurn = [ Ctrl + F9 ]
함수 코드 내에서 RETN 명령어까지 실행(함수 탈출 목적)



- 단축키

Go to = [ Ctrl + G ]

원하는 주소로 이동(코드/메모리를 확인할 때 사용, 실행되는 것은 아님)


Execute till Cursor = [ F4 ]

Cursor위치까지 실행(디버깅하고 싶은 주소까지 바로 갈 수 있음)


Comment = [ ; ]

주석


Label = [ : ]

Label 추가


Set/Reset BreakPoint = [ F2 ]

BP 설정/해제


Run = [ F9 ]

실행(BP가 걸려있으면 그곳에서 실행이 정지됨)


Show the current EIP = [ * ]

현재 EIP 위치를 다시 보여줍니다.


Show the previous Cursor = [ - ]

직전커서 위치를 다시 보여줍니다.


Preview Call / JMP address = [ Enter ]

커서가 CALL / JMP 등의 명령어에 위치해 있다면, 해당 주소를 따라가서 보여줌(실행되는 것이 아님, 간단히 함수내용을 확인 때 유용함)


View - BreakPoints = [ ALT + B ]

브레이크 포인터들을 볼수 있음. 브레이크 포인터를 더블클릭하면 해당 주소로 갑니다.


Assemble = [ Space ]

어셈블리 코드 작성


Edit data = [ Ctrl + E ]

데이터 편집


All intermodular calls = [ 마우스 메뉴 Search for - All intermodular calls]

코드에서 호출되는 모든 API 함수보기


Name in all Modules = [ 마우스 메뉴 Search for - Name in all modules ]

모든 API 함수보기



예제 결과 화면

단순하게 Hello World!라고 메시지 박스가 생성됨.


찾았다. 요놈 메시박스

덤프 윈도우 에 아스키코드를 보면 헬로우 월드가 있다.



Hello world!를 Good Messags!로 변경함.



Hello world!가 아닌 Good Messags!가 출력됨.

꿀잼.


반응형

'Programming > Reverse Engineering' 카테고리의 다른 글

자바 디컴파일(Java Decompiler)  (0) 2018.03.21
ILSpy(Decompiler)  (0) 2017.02.05
함수 호출 규약(Calling Convention)  (0) 2016.04.06
abex' crackme (크랙 연습 예제)  (0) 2015.05.29
엔디언 표기법  (0) 2015.05.21
문자열 패치  (0) 2015.04.26