Reversing&Write up/Study

[HandRay] 함수 호출 패턴, 구조체 패턴, 코드 패치

Jubil 2018. 1. 13. 15:12
반응형

함수 호출 패턴


함수를 호출하는 쪽 : Caller

호출되는 함수 : Callee


인자의 개수, 인자의 타입, 리턴 값을 보면 어떤 함수인지 찾기 쉬움.


CALL 명령은 돌아가야할 주소를 stack에 push하고 함수로 jmp한다.

__cdecl


함수 프롤로그

PUSH EBP - 이전 EBP의 위치 기억

MOV EBP, ESP - EBP를 ESP으로 옮김

SUB ESP, 0C - 지역 변수의 크기 할당


함수 에필로그

MOV ESP, EBP - ESP를 EBP로 옮김

POP EBP - 기억했던 이전 위치를 다시 EBP로 옮김

RETN - 돌아가야할 주소로 jmp



구조체 패턴


멤버들이 연속적으로 할당됨.



코드 패치


어셈블리어 영역, Data 영역을 변조하는 것이 가능하다.

Code 영역 변경하는 방법

어셈블리 영역을 클릭하고 space를 누르면 된다.

프로그램을 다시 실행하면 원래의 코드로 돌아오게 된다.

코드를 수정하고 복사본을 저장하려면 Copy to executable -> All modifications


Data 영역을 변경하는 방법

변경하고자 하는 위치에 커서를 두고, space 누르고 값을 입력해주면 된다.


반응형