본문 바로가기
🔧 리버싱

Dreamhack 리버싱 문제풀이: rev-basic-8

by 불타는 참새 2023. 11. 1.

 

x=arr[i]

(x*0xFB)&0xFF=답

 

AND 연산 역연산-> 같으면 1 다르면 0, XOR 연산자의 반대

10110

01101 

00100

 

00이면1

01ㅇ면0

11이면1

00이면1

01이면0

 

x*0xFB=답(XOR연산의 반대)0xFF

x= 답(XOR연산의 반대)0xFF / 0xF

 

이런식으로 거꾸로 풀려다가 포기..

그냥 아스키 코드 처음부터 시작까지 하나씩 비교해가며 출력해줬다..

 

#include<stdio.h>

int main(void)
{
	int i, j;
	int arr[0x15]={0xAC, 0xF3, 0x0C, 0x25, 0xA3, 0x10, 0xB7, 0x25, 0x16, 0xC6, 0xB7, 0xBC, 0x07, 0x25, 0x02, 0xD5, 0xC6, 0x11, 0x07, 0xC5};
	
	for(i=0; i<0x15; i++)
	{
		for(j=33;j<127;j++)
		{
			if(((j*0xFB)&0xFF)==arr[i])
			{
			printf("%c", j);
			break;
			}
		}
	}
}