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;
}
}
}
}
'🔧 리버싱' 카테고리의 다른 글
Dreamhack 리버싱 문제풀이: rev-basic-9 (1) | 2023.11.01 |
---|---|
Dreamhack 리버싱 문제풀이: rev-basic-7 (0) | 2023.11.01 |
Dreamhack 리버싱 문제풀이: rev-basic-6 (1) | 2023.11.01 |
(⊙_⊙)?Dreamhack 리버싱 문제풀이: rev-basic-5 (0) | 2023.11.01 |
Dreamhack 리버싱 문제풀이: rev-basic-4 (0) | 2023.11.01 |