반응형
#include <stdio.h>
int rol(unsigned int number, int count) {
for(; count!=0; count--) {
if(number>=0x80) {
number = number<<1;
number = number+1;
number = number&0xFF;
}
else {
number = number<<1;
number = number&0xFF;
}
}
return number;
}
for(; count!=0; count--) {
if(number>=0x80) {
number = number<<1;
number = number+1;
number = number&0xFF;
}
else {
number = number<<1;
number = number&0xFF;
}
}
return number;
}
int main() {
int answer[128] = {0x52, 0xDF, 0xB3, 0x60, 0xF1, 0x8B, 0x1C, 0xB5, 0x57, 0xD1, 0x9F, 0x38, 0x4B, 0x29, 0xD9, 0x26,
0x7F, 0xC9, 0xA3, 0xE9, 0x53, 0x18, 0x4F, 0xB8, 0x6A, 0xCB, 0x87, 0x58, 0x5B, 0x39, 0x1E};
int a = 0; // answer 배열 count 변수
int k = 0; // 정답 문자열 담기
unsigned int c = 0; // 아스키코드 count 변수
int answer[128] = {0x52, 0xDF, 0xB3, 0x60, 0xF1, 0x8B, 0x1C, 0xB5, 0x57, 0xD1, 0x9F, 0x38, 0x4B, 0x29, 0xD9, 0x26,
0x7F, 0xC9, 0xA3, 0xE9, 0x53, 0x18, 0x4F, 0xB8, 0x6A, 0xCB, 0x87, 0x58, 0x5B, 0x39, 0x1E};
int a = 0; // answer 배열 count 변수
int k = 0; // 정답 문자열 담기
unsigned int c = 0; // 아스키코드 count 변수
for(a=0; answer[a]!=NULL; a++) {
for(c=0; c<255; c++) {
k = (rol(c, a))^a;
if(k == answer[a]) {
printf("%c", c);
break;
}
}
}
}
for(c=0; c<255; c++) {
k = (rol(c, a))^a;
if(k == answer[a]) {
printf("%c", c);
break;
}
}
}
}
코드를 완성하고 수정하는데 시간이 굉장히 오래 걸렸다. 대략 4시간은 걸린 듯 하다. 어셈블리어를 분석하는 건 쉽지만 코드를 짜는게 어려운 것 같다.
반응형
'문제풀이 > 리버싱' 카테고리의 다른 글
dreamhack 리버싱 rev-basic-9번 분석과 코드 (0) | 2022.03.15 |
---|---|
dreamhack 리버싱 rev-basic-8번 코드 (0) | 2022.03.15 |
dreamhack 리버싱 rev-basic-6번 코드 (0) | 2022.03.13 |
dreamhack 리버싱 rev-basic-5번 코드 (0) | 2022.03.13 |
dreamhack 리버싱 rev-basic-4을 풀어보자. (0) | 2022.03.12 |