main 함수의 디컴파일 코드입니다.
input 값을 if문 안에 sub_140001000 함수로 Correct 와 Wrong 분기합니다.
sub_140003000 함수 내부 디컴파일 코드입니다.
본인이 입력한 글자 >> 4
첫번째 연산 과정에서 구한 결과 값 << 4
두번째 연산 과정에서 구한 결과 값 & 0xF0
세번째 연산 과정에서 구한 결과 값 | 첫 번째 연산 과정에서 구한 값
네번째 연산 과정에서 구한 결과 값과 비교 문자와 같은지
해당 값이 byte_140003000 값과 동일해야 합니다.
byte_140003000 값을 꺼내온 뒤, 입력할 값을 얻는 코드를 짜면 될 것 같습니다.
byte_140003000 값입니다.
위 코드를 기반으로 입력할 값을 얻는 코드를 짜겠습니다.
byte_array = [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, 0x00, 0x00, 0x00, 0x00]
result = []
for val in byte_array:
if val == 0:
break
original_val = ((val & 0x0F) << 4) | ((val >> 4) & 0x0F)
result.append(chr(original_val))
input_string = ''.join(result)
print(input_string)
DH{Br1ll1ant_bit_dr1bble_<<_>>}