rev-basic-4 풀이
2021. 10. 29. 23:15ㆍDreamhack Wargame
728x90
sub_140001000() 함수의 return값에 따라서 Correct, Wrong가 결정되므로 함수 안에 들어있는 for문을 분석하겠습니다.
그리고 for문을 돌리는 횟수가 0x1C(10진수로 28)인데, byte_140003000에 들어있는 16진수가 기준인 듯합니다.
if문에 들어있는 수식에 해당되지 않는다면 Correct가 나오게 됩니다.
[if문에 들어있는 수식]
(arr[i]<<4)&0xf0 | arr[i]>>4
이제 이 수식을 기반으로 C++ 코드를 짜 보겠습니다.
별다른 역연산은 필요하지 않을 듯합니다.
#include<cstdio>
#include<iostream>
using namespace std;
unsigned char arr[28]={0x24,0x27,0x13,0xC6,0xC6,0x13,0x16,0xE6,0x47,0xF5,0x26,0x96,0x47,0xF5,0x46,0x27,0x13,0x26,0x26,0xC6,0x56,0xF5,0xC3,0xC3,0xF5,0xE3,0xE3,0x00};
int main(){
for(int i=0;i<28;i++){
printf("%c",((arr[i]<<4)&0xf0 | arr[i]>>4));
}
}
728x90
'Dreamhack Wargame' 카테고리의 다른 글
rev-basic-6 풀이 (0) | 2021.11.03 |
---|---|
rev-basic-5 풀이 (0) | 2021.11.03 |
rev-basic-3 풀이 (0) | 2021.10.28 |
rev-basic-2 풀이 (0) | 2021.10.28 |
devtools-sources 풀이 (0) | 2021.09.05 |