개인 공부/리버싱 (16) 썸네일형 리스트형 Reversing Lena4 레나4 문제 풀이(pixtopianbook107.exe, PixtopianBook.exe) 풀이에 사용된 프로그램 OS : Proxmox, Windows10 S/W : x32dbg 00. 문제 파악하기 00-1) 관리자 권한으로 pixtopianbook107.exe를 설치하기 관리자 권한으로 프로그램을 순서대로 설치한다 00-2) 프로그램 실행해서 문제 파악하기 프로그램을 실행시켰을 때 등록이 되지 않은 프로그램이라는 것을 알 수 있다 또한 그룹을 3개까지만 등록할 수 있다는 것을 알수 있다 프로그램을 등록 된것 처럼 프로그램에 출력시키고, 그룹을 추가하는데 제한을 풀어주는 것으로 문제를 풀 것이다 01. 디버거를 이용하여 문제 풀기 00-1) X32 메모리 맵에서 unregistered 문자열 수정하기.. Reversing Lena3 레나3 문제 풀이(RegisterMe, RegisterMe.Oops) 풀이에 사용된 프로그램 OS : Proxmox, Windows10 S/W : OllyDBG, PEview, HxD ※ 레나2 문제는 레나 1과 똑같은 문제라서 레나 3을 풀겠습니다 00. RegisterMe.exe 실행해서 문제 파하기 00-1) 처음 폴더에 2개의 실행파일을 확인 RegsiterMe.exe를 실행시켜본다 처음 Remve the nags to register가 뜨고 You need to register me now! 가 뜨고 Oops! I am not registered!! 가 뜨는 것을 확인 01. 디버거로 실행 파일 파악하기 처음 0x401011 ~ 0x40101F에서 nags가 나오는 것을 볼 수 있다 이것을 안나.. Reversing Lena1 레나1 문제 풀이(reverseMe) 풀이에 사용된 프로그램 OS : Proxmox, Windows10 S/W : OllyDBG 00. reverseMe.exe 실행해서 문제 파악하기 새로운 라이센스를 구입하라? 라이센스 키를 알아내거나 프로그램을 수정해서 라이센스를 업데이트 해야할것 같다 01. 디버거로 프로그램 파악하기(사용디버거 : OllyDBG1.1) CreateFileA, ReadFile을 봐서 파일을 생성하고 읽을 것으로 추측한다 02. 첫 번째 조건문 파악하기 0x401078 CMP EAX, -1이 의미하는 것은 Keyfile.dat 파일이 있는지 없는지 파악하는 조건문인다 첫 번째 분기로 존재 할경우 0x40109A로 가고 없을 경우 새로운 라이센스를 구입하라는 메시지박스를 화면에 출력한다.. Reverse Engineering-12(FSC_Level2) 연산 루틴 리버싱 - 시리얼 추출 방법 F-Secure Reverse Engineering (FSC) 2007년 F-Secure 해외 백신 회사에서 개최한 리버스 엔지니어링 대회 문제들이다 문제의 스타일은 일반적인 시리얼 연산 루틴이 주를 이루고 있다 ※ 공부 목적으로 문제를 풀기 때문에 최대한 분석하고 여러 방법으로 푸는 것을 목적으로 했습니다 FSC Level 2 00. 프로그램의 Import 함수 확인하기 00-1) PEiD로 프로그램 파악하기 PEiD로 FSC_Level2.exe가 UPX1로 패킹되어 있는 것을 확인할 수 있다 안에 있는 Import문을 확인 하기위해서는 언패킹을 하고 확인 해야한다. 언패킹 방법은 수동 언패킹과 프로그램을 이용한 언패킹이 있는데 지금은 프로그램을 이용한 언패킹을 .. Reverse Engineering-11(FSC_Level1) 연산 루틴 리버싱 - 시리얼 추출 방법 F-Secure Reverse Engineering (FSC) 2007년 F-Secure 해외 백신 회사에서 개최한 리버스 엔지니어링 대회 문제들이다 문제의 스타일은 일반적인 시리얼 연산 루틴이 주를 이루고 있다 ※ 공부 목적으로 문제를 풀기 때문에 최대한 분석하고 여러 방법으로 푸는 것을 목적으로 했습니다 FSC Level 1 00. FSC_Level1.exe를 실행 정답을 입력하지 않을 경우 Sorry, this key is not valid! 라는 문구가 나오는 것을 확인했다 01. PE 분석하기 분석 도구 : PEview, PEiD 분석 순서 : 패킹 여부 확인 -> PE 구조 파악 -> Import 함수 확인 [1] 패킹 여부 확인 컴파일러 부분에 Noti.. Reverse Engineering-10 (MFC) MFC(Microsoft Foundation Classes) 마이크로 소프트에서 제공하는 클래스의 집합 통합 개발 환경을 위한 Visual C++에 부속되는 클래스 라이브러리 윈도우 어플리케이션을 개발에 적합한 환경으로 제공되는 프레임 워크 ※ 리버스 엔지니어링에 필요한 MFC 구조 메시지 처리 방식 MFC는 객체 지향언어로 설계돼 있고, C++ 방식을 그대로 따른다 이벤트 처리 방식을 이용해 각 프로시저가 만들어져 각 이벤트를 처리하는 함수에 대한 분석이 필요하다 프로시저에 해당하는 핸들러를 찾는 것이 가장 중요 초기화 루틴 찾기 MFC 프로그램이 초기화 될 때 많은 액션을 취하는 경우가 많다 MFC 초기화 루틴을 찾을 수 있어야한다 rdata + virtual function MFC는 클래스로 구성되.. Reverse Engineering-009(strcat ~ strlwr) 문자열 컨트롤 strcat C/C++에서 헤더파일 string.h에서 지원하는 문자열 (char*, char[])을 이어 붙이는 문자열 연결 함수이다 함수 원형은 char* strcat(char* 문자열 변수, const char* 복사해서 붙일 변수) strcat()은 특히 바이러스나 악성코드에서 흔히 볼 수 있는 런타임 함수!! #include #include #include int main() { char szMalware[MAX_PATH]; GetSystemDirectory(szMalware, MAX_PATH); strcat(szMalware, "\\explorer.dll"); printf("szMalware: %s\n", szMalware); } sub esp, 10C로 스택을 268 Byte .. Reverse Engineering-008(strcpy) 문자열 컨트롤 문자열 컨트롤은 프로그래밍의 기본 중 기본! -> 리버싱 엔지니어링 할때도 알아야하는 코드 중 하나!! 기본적인 strcpy, strcat의 구조를 알아두면 문자열 뿐만 아니라 보안 프로그램이나 악성코드 등에서도 많이 사용하는 바이너리 컨트롤에 대해서 많이 이해할 수 있다!! strcpy C/C++에서 헤더파일 string.h에서 지원하는 문자열 char*, char[] 타입의 문자열을 복하사하는 함수이다 함수 원형으로 char* strcpy(char* 복사받을 변수, const char* 복사할 함수); // ===== strcpy 코드 ===== #include #include// stcpy() 사용! #include// MAX_PATH 사용! => 최대 경로 길이 제한 int main.. 이전 1 2 다음