피드로 돌아가기
Solving IP Endianness in x64 Assembly: A Single-Pass Algorithm
Dev.toDev.to
Security

Single-Pass 역순 빌드 알고리즘을 통한 IP Endianness 변환 최적화

Solving IP Endianness in x64 Assembly: A Single-Pass Algorithm

JM00NJ2026년 6월 27일4advanced

Context

Network Byte Order(Big-Endian) 데이터를 x86/x64의 Little-Endian 환경에서 처리할 때 발생하는 바이트 순서 역전 현상 분석. 기존 고수준 언어의 inet_ntoa() 의존성 없이 Pure Assembly 환경에서 IP 주소를 ASCII 문자열로 변환하는 과정의 병목 지점 식별.

Technical Solution

  • Big-Endian IP 데이터를 Little-Endian 레지스터로 로드 시 발생하는 데이터 스크램블 현상을 해결하기 위한 바이트 단위 추출 설계
  • 표준적인 '변환 후 문자열 반전' 방식의 2-Pass 구조를 제거하고, 읽기와 쓰기를 동시에 역순으로 처리하는 Single-Pass Backward Build 알고리즘 도입
  • AX 레지스터의 DIV 연산 시 AH(나머지)와 AL(몫)의 간섭을 방지하기 위한 정밀한 레지스터 관리 및 Zeroing 처리
  • sockaddr_in 구조체의 오프셋 7부터 4까지 역순으로 읽고, 15바이트 출력 버퍼의 끝에서 시작점으로 역순 저장하여 자연스러운 좌우 정렬 구현
  • 마지막 옥텟 처리 시 조건문을 통한 점(.) 구분자 삽입 제어로 불필요한 문자 제거 및 버퍼 오버런 방지

1. Byte-Order 차이가 발생하는 이기종 시스템 간 데이터 교환 시 Endianness 변환 로직 검토

2. 문자열 반전이 필요한 알고리즘 설계 시, 데이터 읽기-쓰기 방향을 일치시켜 Loop 횟수를 줄이는 Single-Pass 전략 고려

3. Assembly 수준의 저수준 최적화 시 DIV 연산 전후의 레지스터 상태(AH/AL) 오염 여부 확인

원문 읽기