포인터 관련 연산 질문
질문 드립니다..
리버싱 입문이라서 기초가 많이 부족합니다.
IDA로 디스어셈블 하면 보통
저런 *(_BYTE *)(a1+i) 형태가 많이 나오던데,
**첫번째 질문 : **
해석해보면 _BYTE형 포인터(_BYTE *)로 a1에 +i만큼 포인터를 이동한 곳에 있는 곳의 값 결국 a1[i] 요런 형태로 해석하는게 맞을까요?
그리고, 궁금한 것이
일반적으로 C언어 코딩할 때와 다르게 IDA가 무언가 해석해서
두번째 질문 :
_BYTE, unsigned __int8, __int64 등등으로 복잡하게 보이는 것으로 바꾸어주는데 해당 자료형들도 다 정의가 되어있나요?
#reversing
작성자 정보
답변
1
qwerty
CTF First Place
-
넵, 그렇습니다.
char a1[]
을a1[i]
로 접근하는 것과 동일합니다. -
IDA에서 기본적으로 정의되어 있는 타입으로, 해당 타입들은 자유롭게 사용자가 사용할 수 있습니다.
실제로 C에도 해당 자료형이 존재하며, 말씀 주신 내용을_BYTE
->signed char
orunsigned char
unsigned __int8
->uint8_t
__int64
->long long int
/int64_t
정도로 대응할 수 있을 것 같습니다