리버싱 엔지니어링/리버싱 핵심 원리
-
3 리틀 엔디언 표기법리버싱 엔지니어링/리버싱 핵심 원리 2022. 2. 6. 03:14
3.1 바이트 오더링(Byte Ordering) : 컴퓨터 메모리에 데이터를 저장하는 방식 빅 엔디언, 리틀 엔디언 두가지 방식이 있다. 3.1.1 리틀 엔디언 & 빅엔디언 예제 코드 BYTE b = 0x12; WORD w = 0x1234; DWORD dw = 0x12345678; char str[] = "abcde"; 각 엔디언 방식에 따른 데이터 저장 방식 백 엔디언 : 앞에서부터 순차적으로 저장 리틀 엔디언 : 역순으로 저장 str 문자열이 엔디언 방식에 상관없이 동일한 이유? : char 배열이기 때문에 각 바이트를 하니씩 연속해서 저장하기 때문에 리틀 엔디언에서도 순서대로 저장하는 것
-
2 Hello World! 리버싱(1)리버싱 엔지니어링/리버싱 핵심 원리 2022. 2. 5. 01:41
2.1 Hello World! 프로그램 #include "windows.h" #include "tchar.h" int _tmain(int argc, TCHAR *argv[]) { MessageBox(NULL, L"Hello World!", L"www.reversecore.com", MB_OK); return 0; } 해당 코드 *Release 모드로 빌드해서 실행파일(.exe) 만들기 *Release 모드 : 디버깅 정보를 삽입하지 않고, 코드를 최적화시켜 실행하여 파일의 크기를 줄여준다. 코드가 간결해져서 디버깅하기에 편리 속도, 크기면에서 유리 프로그램 배포시 릴리즈 모드로 배포 2.1.1 디버거와 어셈블리 언어 개발도구(Visual C++)를 이용해 C 언어 소스코드(.cpp)를 빌드하면, 실행파일..
-
1 리버싱 엔지니어링리버싱 엔지니어링/리버싱 핵심 원리 2022. 1. 7. 20:31
1. 리버스 엔지니어링 (Reverse Engineering, RE : 역공학) : 장치 또는 시스템을 분석하여 기술적인 원리를 이해하며 단점을 보완하고 새로운 아이디어를 추가하는 일련의 작업. 거꾸로 해석하는 기술 컴파일 과정을 거꾸로 하는 것 리버싱(reversing)이라고도 함 2. 리버싱 방법 정적 분석 : 파일의 겉모습을 관찰하여 분석하는 방법 - 파일을 실행하지 않고 파일의 종류(exe, doc 등), 헤더, 실행 압축 여부 등의 다양한 내용을 확인 - 디스 어셈블러를 이용해 내부 코드와 구조 확인 - 동적 분석 방법에 참고자료가 됨 동적 분석 : 파일을 직접 실행시켜 분석하고, 디버깅을 통하여 코드 흐름과 메모리 상태 등을 자세히 살펴보는 방법 - 파일, 레지스트리, 네트워크 등을 관찰하며 ..