본문 바로가기

Reversing23

[리버싱 핵심 원리] 7장, 스택 프레임 07, 스택 프레임 - ESP는 수시로 변하기 때문에 스택에 저장되어진 변수, 파라미터에 접근하고자 할 때 ESP 값을 기준으로 하면 프로그램을 만들기 힘들고 CPU가 정확한 위치를 참고할 때 어려움이 있다. - 어떤 기준 시점(함수 시작)의 ESP의 값을 EBP에 저장하고 이를 함수 내에서 유지해준다면, ESP 값이 아무리 변하더라도 EBP를 기분(base)으로 안전하게 해당 함수의 변수, 파라미터, 복귀 주소에 접근할 수 있다. - EBP 레지스터 베이스 포인터 역할 //스택 프레임의 구조 PUSH EBP ;함수 시작(EBP를 사용하기 전에 기존의 값을 스택에 저장) MOV EBP, ESP ; 현재의 ESP(스택 포인터)를 EBP에 저장 ... ; 함수 본체 ; 여기서 ESP가 변경되더라도 EBP가 .. 2020. 11. 7.
[리버싱 핵심 원리] 11장, Lena's Reversing for Newbies 11장, Lena's Reversing for Newbies 확인을 누르면 아래와 같이 Regcode를 입력하는 부분이 나온다. 메세지 박스가 뜨면서 두 가지를 지시한다. 1) 모든 성가신 Nags를 없애라. 2) registration code를 찾아라. 전형적인 serial crackme이다. 화면의 파란 글씨를 읽어보면 registration을 위해 'SmartCheck'을 사용하라고 하고 있다. (SmartCheck는 Numega 사에서 만든 유틸리티이며 크래커들이 애용하는 툴 중 하나이다.) 올리디버거로 먼저 열어보았을 때 화면은 다음과 같다. [마우스 오른쪽 클릭] - [Search for] - [All referenced text strings] 검색을 통해 성공부분을 따라 들어가면 main.. 2020. 11. 7.
[리버싱 핵심 원리] 10장, 함수 호출 규약 10장, 함수 호출 규약 함수 호출 규약? Calling Convention은 우리 말로 '함수 호출 규약'이라고 한다. 이것은 '함수를 호출할 때 파라미터를 어떤 식으로 전달하는가?'에 대한 일동의 약속이다. 함수 호출 전에 파라미터를 스택을 통해서 전달한다. 스택이란 프로세스에서 정의된 메모리 공간이며 아래 방향(주소가 줄어드는 방향)으로 자란다. 또한 PE 헤더에 그 크기가 명시되어 있다. 즉 프로세스가 실행될 때 스택 메모리의 크기가 결정된다(malloc/new 같은 동적 메모리 할당과는 다르다). Q, 그렇다면 함수가 실행완료되었을 때 스택에 들어있던 파라미터는 어떻게 해야 될까요? A, 그대로 둔다. 스택에 저장된 값은 임시로 사용하는 값이기 때문에 더 이상 사용하지 않는다고 하더라고 값을 지.. 2020. 11. 7.
[리버싱 핵심 원리] 15장, UPX 실행 압축된 notepad 디버깅 15장, UPX 실행 압축된 notepad 디버깅 15.1 notepad.exe의 EP Code 원본의 notepad.exe의 EP 코드이다. 010073B2 주소에서 GetModuleHangleA() API를 호출해서 notepad.exe. 프로세스의 ImageBase를 구한다. 그리고 010073B4와 010073C0 주소에서 각각 MZ와 PE 시그니처를 비교한다. 15.2.notepad_upx.exe의 EP Code notepad_upx.exe를 OllyDbg로 열어보면 위와 같은 경고 메세지 박스가 나타난다. 디버거가 해당 파일이 압축되었다고 판단하였다. 예/아니오 중에 아무거나 선택해서 넘어가면 UPX EP코드가 나타난다. EP 주소는 01015330이며, 이곳은 두 번째 섹션의 끝부분이다. 실.. 2020. 11. 7.
[리버싱 핵심 원리] 14장, 실행 압축 14장, 실행 압축 14.1_데이터 압축 데이터 압축 : 큰 용량을 작은 용량으로 적절한 압축 알고리즘을 사용하여 크기를 줄이는 것 - 데이터 손실 없이 100% 원래대로 복원할 수 있으면 비손실 압축, 원래대로 복원할 수 없다면 손실 압축이라고 한다. 1. 비손실 압축(Lossless Data Compression) : 파일 크기를 줄여서 보관 및 이동에 용이하도록 하여는 목적으로 사용 - 7-zip, 빵집과 같은 압축 프로그램을 이용하여 파일을 압축하는 경우 - 대표적인 비손실 압축 알고리즘 : Run-Length, Lempel-Ziv, Huffman 등 - 많은 알고리즘이 있지만 적어놓은 3개의 알고리즘만 이해하면 나머지는 쉽게 이해가 가능함 - ZIP, RAR 등도 근본 압축 개념은 결국 Run-.. 2020. 10. 31.
[Reversing.kr] Easy Keygen 압축을 해제하니 txt 파일과 exe 파일이 함께 압축되어 있었다. txt 파일을 확인해보니 위와 같은 문구가 적혀있었다. exe 파일을 실행시키면 input name, input serial이라는 문구가 뜬다. 이름과 serial을 입력하라는 뜻인 것 같다. 메모장에 있는 serial이 힌트인 것 같다. 메모장의 serial과 연관된 이름을 찾으면 문제를 해결할 수 있을 것 같다. exe 파일을 올리디버거로 분석하기 위해 넣어 보았다. [마우스 우클릭] - [Search for] - [All referenced text strings]를 눌러 string을 확인했다. All referenced text strings는 문자열을 검색하는 방법이다. Corret!와 Wrong이 보인다. 이 문구가 name.. 2020. 10. 4.