목록2020/05 (16)
Self-Improvement
메모리 맵 탭으로 들어가본다. 중요한 것들만 작성해본다. [PE Header] consoleapplication2.exe 정보라고 적혀있는 라인은 PE 헤더 정보를 뜻한다. 0xE30000이 시작 주소이며 0x1000 크기를 가지고있다. [Code Segment] ".text" 정보라고 적혀있는 세그먼트는 텍스트 세그먼트 또는 코드 세그먼트라고 불린다. 실행 코드가 들어있는 부분이다. [Data Segment] ".data" 정보라고 적혀있는 세그먼트는 초기화된 데이터가 저장되는 공간이다. 전역변수나 Static변수가 선언되어 있으며 초기값이 설정된 데이터가 저장되어있다. [Resource Data Segment] ".rdata" 정보라고 적혀있는 세그먼트는 문자열과 상수 등이 저장된 공간이다. 읽기 전..
IAT는 프로그램에서 사용하는 라이브러리 테이블이다 CFF Explorer에서 IAT에서 "kernel32.dll"에 속한 API를 확인하고 x32dbg에서 찾아본다. CFF Explorer의 IAT의 Kernel32.dll의 GetVersion API의 INT(Import Name Table) 주소 즉 문자열을 로딩한 주소는 0x75B6이며 Image Base 값 까지 합하면 0x4075b6 주소이며 x32dbg에서 확인해본다. GetVersion() 함수를 사용하는 부분을 알아본다. "Kernel32.dll" API 리스트에서 GetVersion은 2번째에 존재하며 이는 IAT의 위치를 나타내는 FTs에서 2번째 데이터이다. Kernel32.dll의 Fts 값이 0x7000이며 Image Base까지..
VA Vitual Address로 메모리의 절대 주소를 의미한다. 즉 x96dbg로 프로그램을 올렸을시에 로딩된 메모리 주소를 뜻한다. VA = RVA - Imagebase Easy_Keygen.exe 프로그램을 x64dbg에 올린 후 "Input Name:" 문자열이 로딩된 주소는 0x00408060이며 이것이 VA(Vitual Address)이다. RVA Relative Virtual Address로 프로세스 가상 메모리의 상대주소를 의미한다. RVA = VA - Image Base RVA = RAW + VA - PointToRawData 위의 VA가 0x00408060일 시 RVA 는 0x8060이 된다. RAW RAW는 디스크 상의 파일에서의 주소라 하며 우리가 잘 알고 있는 오프셋이라고 부른다...
http://reversing.kr/challenge.php 에서 Easy_CrackMe.exe를 다운받아 준다. 해당 프로그램을 실행하면 입력할 수 있는 메시지 박스와 입력 값이 패스워드와 같지 않다면 "Incorrect Password" 메시지 창이 뜨게 된다. 이 점으로 볼때 패스워드를 찾아야 한다는 것을 알 수 있다. 프로그램을 x32dbg로 열어준다. EIP는 00401188주소에서 시작하며 친절하게 EntryPoint라고 되어있다. 2가지 접근법이 존재한다. 1. 프로그램을 실행했을 때 메시지 박스가 뜬것을 감안하여 F8로 하나씩 실행하면서 메시지 박스를 호출하는 곳을 찾아내고 패스워드를 비교하는 곳도 찾아내어 분석한다. 2. 패스워드가 올바르지 않다고 메시지가 뜬 문자열을 찾은 후 해당 문자..
CASE 구문에서 배운 소스코드의 Main 함수에서 입력값에 따라 [one], [two]...로 문자열을 출력하게 된다. "[one]" 문자열 대신 다른 걸로 출력하게 문자열을 패치해본다. "[one]" 문자열이 저장된 메모리의 7E7B6C 주소로 이동하여 [바이너리패치 - 패치]로 문자열을 변경해준다. 만약의 상황을 위해 패치할때 크기 유지를 체크한 뒤 해준다. "[one]"을 "noONE"으로 패치한 후 확인해보면 정상적으로 변경되어 있다. 만약 기존의 글자보다 길에 써야할 경우에는 이 프로그램이 침범하지 않을 사용하지 않을 공간에 작성한 뒤 명령어를 패치해준다. 위 007E9444 주소를 기존 "[two]" 문자열 주소를 불러오는 어셈블 명령어를 007E9444주소로 변경한다. Space를 누르거나..
x64dbg를 sourceforge에서 다운로드 받았을때 snowman 기능이 존재하지 않았다. https://github.com/x64dbg/snowman/releases/tag/plugin-v1 x64dbg/snowman Snowman Decompiler for x64dbg (LOOKING FOR MAINTAINER) - x64dbg/snowman github.com snowman.dp32, snowman.dp64를 다운로드 해준다. 각 파일을 x32dbg, x64dbg plugin 폴더에 넣어준 뒤 실행하면 snowman 기능을 사용할 수 있다.