본문 바로가기

보안/리버싱3

스택 프레임 스템 프레임이란? -ESP(스택 포인터)가 아닌 EBP(베이스 포인터) 레지스터를 사용하여 스택 내의 로컬 변수, 파라미터, 복귀 주소에 접근하는 기법 ESP레지스터의 값은 프로그램 안에서 수시로 변경되기 때문에 스택에 저장된 변수, 파라미터에 접근하고자 할 때 ESP 값을 기준으로 하면 프로그램을 만들기 어렵고, CPU가 정확한 위치를 참고하기 힘듭니다. 그래서 함수 시작의 ESP값을 EBP에 저장하고 이를 함수 내에서 유지해주면, ESP값이 아무리 변하더라도 EBP를 기준으로 안전하게 해당 함수의 변수, 파라미터, 복귀 주소에 접근할 수 있습니다. 스택 프레임의 구조 PUSH EBP ;함수 시작(EBP를 사용하기 전에 기존의 값을 스택에 저장) MOV EBP,ESP ;현재의 ESP를 EBP에 저장 ... 2019. 8. 2.
2. abex' crackme 1 파일을 실행하면 이렇게 뜹니다. 어떻게 크랙을 하는 것인지 분석해볼게요. 옆쪽에 보면 저희가 띄워야 되는 구문은 ok, I really thing that your HD is a CD-ROM! :p 구문을 띄워야 되는 것을 알 수 있어요. 옆에 주석을 보면서 어셈블리어를 분석해볼게요. push: 스택에 값 입력 call : 지정된 주소의 함수 호출 inc : 값 1 증가 dec : 1감소 jmp : 지정된 주소로 점프 cmp : 주어진 두 개 operand 비교 je : 조건 분기 cmp eax,esi 를 비교합니다. JE SHORT 0040103D 는 두 값이 같으면 40103D로 점프하고 아니면 그대로 진행합니다. 저희가 원하는 값으로 나오게 할려면 JE ~~~ 구문을 JMP 0040103D로 바꿔주.. 2019. 7. 29.
1. 문자열 패치 이 소스를 실행하면 Hello World 라는 문자를 출력하는 메세지 박스 창이 뜹니다. 이 메세지를 다른 메세지로 패치해볼게요. 우선 ollydbg를 실행해서 이 exe파일을 엽니다. 메인함수를 찾아보도록 합시다. 우클릭 눌러서 search for 에서 name in all modules를 누릅니다. 그리고 messageboxw를 타이핑 하면, 이렇게 찾을 수 있습니다. 여기에 f2를 눌러 브레이크포인트를(bp) 설정하고, f9를 눌러 실행합니다. 오른쪽 아래에 보면 이런 내용이 있습니다. 첫 번째는 address , 두 번째는 value, 3번째는 comment 입니다. meesageboxw는 0D1758 에서 호출 되었고, 함수 실행이 종료되면 0D175E주소로 리턴한다는 뜻입니다. 이제 패치해보도.. 2019. 7. 19.