[- Disclaimer -]
아래 내용은 정보보안 공부 목적으로 작성된 것이나, 이를 토대로 허가되지 않은 대상에 실습을 진행할 경우 해킹 시도로 간주하여 법적 처벌을 받을 수 있음을 알려 드립니다.
32 bit <-> 64 bit 간 차이
✦ CPU의 32/64 bit 지원 여부
✧ 한 번에 송/수신 가능한 Data 크기
→ Bus 선 수에 따라 32/64 bit가 결정 됨
✦ OS의 32/64 bit 지원 여부
✧ 포인터 주소 크기에 따라 32/64 bit가 결정 됨
64 bit Programming의 포인터 자료형 Casting 시 주의점
✦ 포인터 주소 크기가 4 byte에서 8 Byte가 되므로 Casting 할 때 다른 걸로 Casting
#include <stdio.h>
int main() {
int arr[10] = {0,};
int arrVal = (int)arr;
printf("pointer: %d\n", arrVal);
return 0;
}
Plain Text
복사
pointer: 6487536
--------------------------------
Process exited after 0.08532 seconds with return value 0
계속하려면 아무 키나 누르십시오 . .
Plain Text
복사
#include <stdio.h>
int _tmain() {
int arr[10] = {0,};
int arrVal = (int)arr; // Syntax Error 발생
printf("pointer: %d\n", arrVal);
return 0;
}
Plain Text
복사
#include <stdio.h>
int wmain() {
int arr[10] = {0,};
int arrVal = (int)arr;
printf("pointer: %d\n", arrVal);
return 0;
}
Plain Text
복사
64 bit 기반 Programming Model
✦ Windows
✧ LLP64 Model
✦ UNIX
✧ LP64 Model
Polymorphic 자료형 (=다형성)
✦ A가 B나 C의 특징을 지님
✦ PTR이 들어가서 포인터형으로 오해하지 말자. Polymorphic 자료형은 포인터 형이 아님. PTR이 들어간 이유는 포인터 연산을 활용하기 위한 자료형일 뿐임
#if defined(_WIN64) // _WIN64일 경우 64 bit 처리
typedef __int64 LONG_PTR;
typedef unsinged __int64 ULONG_PTR;
typedef __int64
typedef unsigned __int64 UINT_PTR;
#else // _WIN64가 아닐 경우 32 bit 처리
typedef long LONG_PTR;
typedef unsigned long ULONG_PTR;
typedef int INT_PTR;
typedef unsigned int UINT_PTR;
#endif
Plain Text
복사
주소 값의 차를 출력하는 프로그램
✦ UINT
✧ 32 bit 지원
✦ UINT_PTR
✧ 32/64 bit 동시 지원
#include <windows.h>
#include <tchar.h>
UINT CallDistance(UINT a, UINT b) {
return a - b;
}
int _tmain() {
INT val1 = 10;
INT val2 = 20;
_tprintf(_T("Position %d, %d \n"), (UINT)&val1, (UINT)&val2);
CallDistance((UINT)&val1, (UINT)&val2);
return 0;
}
#if defined(_WIN64)
typedef unsigned __int64 UINT_PTR;
#else
typedef unsigned int UINT_PTR;
#endif
Plain Text
복사
Position 6487580, 6487576
--------------------------------
Process exited after 0.07511 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
Plain Text
복사



