목록CTF/Reversing (26)
안 쓰던 블로그
.exe파일을 실행하면 계산기가 실행되는데, 메모장이 실행되게 하는 문제 일단 올리디버거로 열어준다 브레이크 포인트 걸고 F9로 여기까지 이동 push로 calc.exe문자열을 넣어주고 call을 해서 계산기를 실행시키고 있다 즉, call은 시스템 함수임을 알 수 있다 시스템 함수는 notepad.exe를 하면 메모장이 열리고 그런 의미다 우클릭-덤프에서 따라가기로 00406030 주소로 이동하면 calc.exe가 있다 이 부분을 notepad.exe로 바꾸면 될 것이다 바꾸는 건 아스키코드표에 HEX값 참고해서 바꿔준다 덤프 창에서 해당 부분 스페이스바 누르면 바꿀 수 있다 notepad.exe = 6E 6F 74 65 70 61 64 2E 65 78 65 근데 이 부분이 덮어쓰기를 하는 거라 지금은..
.exe파일을 하나 주는데 실행할 수 없다고 뜬다. 이걸 실행되게 만드는 게 문제 PEview로 파일을 가져오면 모든 아이템을 이쁘게 볼 수 없다는 에러가 뜬다 왜냐면 원래 있어야 할 섹션 부분이 없기 때문이었다 파일마다 섹션은 다 있어야 하고, 보통 .text, .rdata, .data 3개 정도는 있어야 프로그램 코드를 읽을 텐데 이 부분이 없어서 실행이 되지 않고 있었다 섹션이 원래 몇 개였는지 할 수 있는 방법 IMAGE_NT_HEADERS->IMAGE_FILE_HEADER Number of Sections가 0이라서 섹션이 다 지워져 버린 것 여기까지 0xCE부분 주소를 확인하고 닫은 뒤(동시 실행이 불가함) 해당 부분 수정하기 위해서 HxD에서 열어 준다 HxD를 열었으면 먼저 수정할 곳을 찾..
프로그램을 실행하면 CD롬을 채우라고 하고 확인을 누르면 실패 메시지가 뜬다 올리디버거에서 문자열을 찾아본다 바로 나왔다 해당 주소로 이동한다 보통 이런 성공/실패 선택지는 분기문 기준으로 나뉘기 때문에 그 주변만 가면 다 확인 가능하다 cmp eax, esi: eax, esi를 비교해서 je: 두 값이 같으면 점프 근데 eax, esi값이 다르기 때문에 점프 안 하고 바로 아래로 진행되어 실패 메시지 박스를 출력했었다 실행 흐름을 바꿀 수 있는 방법 je를 jne로 바꿔서 같지 않으면 점프로 수정 보기->파일패치 로 .exe확장자로 뽑는다
주요 레지스터 EAX: 산술, 논리연산. 함수 반환값 저장 EDX: 곱셈, 나눗셈 연산. EAX레지스터랑 함께 사용 ECX: 반복 명령어 사용시 반복 카운터로 사용되는 값 저장 ESP: 스택 프레임에서 스택 가장 끝 지점 주소 저장. Push, Pop명령에 따라 4바이트씩 이동 EBP: 스택프레임의 스택 시작 지점 주소 저장. 스택 프레임 소멸되기 전까지 값 변화 없다 주요 어셈블리 명령어 MOV: 시작지에서 목적지로 데이터 복사 (대입) PUSH: 스택에 값을 넣는다 (ESP의 값이 4만큼 줄어들고 새로운 값 들어감) POP: ESP레지스터가 가리키고 있는 위치의 스택 공간에서 4바이트만큼을 피연산자에 복사 후 ESP레지스터값+4한다 CALL: 함수 호출 시 사용(호출 후 반환된 값은 EAX에 저장) ..
Le4rN TO Cr4cK 사이트에 있던 문제였는데 지금 들어가보니 사이트가 없어진거같다.. 다운받고 압축을 풀면 메모장과 exe파일이 나온다.exe파일을 실행하면 알림창이 두개가 나오는데 첫번째 알림을 확인하면 다음으로 넘어간다. 올리디버거에서 실행시켜보자 보면 00401026에 JE SHORT abexcom1. 0040103D 부분이 에러창과 정상 실행창을 결정하는 분기점으로 보인다.여기를 점프시켜 건너뛰어버리면 해결할 수 있을 것이다. 선택 된 상태에서 스페이스바를 눌러 JE부분을 JMP로 수정해 강제로 점프시킨다. 다시 실행시키면 정상적으로 실행되었다는 창이 뜬다. ---- 파일을 저장하려면 수정한 창에서 우클릭→Copy to executable→All modifications를 선택한다.저장하냐..