포인터 관련 연산 질문

image.png

질문 드립니다..

리버싱 입문이라서 기초가 많이 부족합니다.

IDA로 디스어셈블 하면 보통

저런 *(_BYTE *)(a1+i) 형태가 많이 나오던데,

**첫번째 질문 : **
해석해보면 _BYTE형 포인터(_BYTE *)로 a1에 +i만큼 포인터를 이동한 곳에 있는 곳의 값 결국 a1[i] 요런 형태로 해석하는게 맞을까요?

그리고, 궁금한 것이

일반적으로 C언어 코딩할 때와 다르게 IDA가 무언가 해석해서

두번째 질문 :
_BYTE, unsigned __int8, __int64 등등으로 복잡하게 보이는 것으로 바꾸어주는데 해당 자료형들도 다 정의가 되어있나요?

#reversing
작성자 정보
답변 1
avatar
qwerty
CTF First Place
  1. 넵, 그렇습니다. char a1[]a1[i]로 접근하는 것과 동일합니다.

  2. IDA에서 기본적으로 정의되어 있는 타입으로, 해당 타입들은 자유롭게 사용자가 사용할 수 있습니다.
    실제로 C에도 해당 자료형이 존재하며, 말씀 주신 내용을

    • _BYTE -> signed char or unsigned char
    • unsigned __int8 -> uint8_t
    • __int64-> long long int / int64_t

    정도로 대응할 수 있을 것 같습니다

2024.04.01. 18:22
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기