u_short Malware_L03(u_short * data,u_short length)
{
register long value;
u_short i;
for(i=0;i<(length>>1);i++)
value+=data[i];
if((length&1)==1)
value+=(data[i]<<8);
value=(value&65535)+(value>>16);
return(~value);
}
일단 대충 보면, 내가 보기엔 쉬프트이리저리해서 줏어온 데이터를 값에다 집어넣고 변환시키는 것같아보인다
마지막엔 반전 시키넹
🔍 이 함수가 하는 일 분석 (Malware_L03)
이 코드는 입력 데이터(data)를 특정 방식으로 처리하여 u_short 값을 반환하는 함수야.
너가 말한 것처럼 비트 연산(shift)과 덧셈 연산을 통해 데이터를 변환하는 걸 볼 수 있어.
✅ 1️⃣ 코드 분석
u_short Malware_L03(u_short * data, u_short length)
{
register long value; // 누적 합계를 저장하는 변수 (32비트)
u_short i;
// (1) 데이터의 16비트 단위 합 계산
for(i = 0; i < (length >> 1); i++)
value += data[i]; // 데이터 배열의 모든 16비트 값들을 더함
// (2) 데이터 길이가 홀수일 경우 처리 (마지막 8비트 처리)
if((length & 1) == 1)
value += (data[i] << 8); // 남은 8비트를 상위 8비트로 이동 후 더함
// (3) 32비트 값을 16비트로 변환 (carry를 고려한 처리)
value = (value & 65535) + (value >> 16);
// (4) 결과를 반전(~) 후 반환 (1의 보수 처리)
return (~value);
}
✅ 2️⃣ 이 코드의 목적
- 16비트 단위로 데이터를 누적하여 합산
- 데이터 길이가 홀수일 경우 마지막 8비트를 고려하여 처리
- carry(넘침)를 반영하여 최종 16비트로 조정
- 결과값을 1의 보수(Negation) 처리 후 반환
📌 이 함수는 "체크섬(Checksum)"을 계산하는 코드로 보임.
✅ 3️⃣ 기능 요약 (이 함수가 하는 일)
🛠 16비트 체크섬(Internet Checksum) 계산
- 입력된 data[]의 모든 16비트 값들을 더함
- carry(넘치는 값) 처리 (value = (value & 65535) + (value >> 16);)
- 결과값을 반전(1의 보수)
**즉, 인터넷 패킷에서 많이 사용되는 **"IP 헤더 체크섬" 또는 "UDP/TCP 체크섬"을 계산하는 알고리즘이야!
✅ 4️⃣ 어디에 사용될까?
📌 이 함수는 IP 헤더 체크섬 또는 UDP/TCP 체크섬 계산에 사용될 가능성이 큼!
즉, 패킷 변조 / 무결성 체크를 우회하려는 악성코드일 가능성이 높아.
💡 인터넷 패킷에서 체크섬이란?
- 네트워크 패킷(데이터)을 전송할 때, 오류가 발생했는지 확인하기 위해 사용됨.
- 보통 IP 헤더, UDP, TCP 패킷에서 16비트 체크섬을 사용.
- 이 코드와 동일한 방식으로 체크섬이 계산됨.
✅ 5️⃣ 결론
이 함수는 인터넷 패킷에서 사용되는 "16비트 체크섬"을 계산하는 함수야.
(즉, IP/UDP/TCP 패킷에서 데이터 무결성을 확인하는데 사용됨.)
📌 악성코드에서는 주로 네트워크 패킷 변조, 우회 또는 백도어 통신에 활용될 가능성이 높아!
🚀 즉, 네트워크 트래픽을 조작하거나, 무결성 체크를 우회하려는 의도로 사용될 수 있음.
허억 그 네트워크 공부에서 맨날 나오던 체크섬이 이렇게 계산되는거였다....캬
쩐다..공격과 방어는 거꾸로 그자체네. 거울이다 거울..
역으로 거슬로 올라가는게 신기하다
정답은 checksum
'Dreamhack > Dreamhack Wargame (Challenge)' 카테고리의 다른 글
[177] IT 비전공자 [dreamhack] reverse_decoding문제풀기 (0) | 2025.03.10 |
---|---|
[176] IT 비전공자 [dreamhack] [CodeEngn] Malware L05문제풀기 (0) | 2025.03.10 |
[174] IT 비전공자 [dreamhack] Race with me?문제풀기 (0) | 2025.03.07 |
[173] IT 비전공자 [dreamhack] nikonikoni문제풀기 (0) | 2025.03.06 |
[172] IT 비전공자 [dreamhack] Logical문제풀기 (0) | 2025.03.05 |