1. 기드라 디컴파일
- scanf 함수를 보면, 입력값이 &DAT_0804a020 위치에 저장됨
- FUN_08048451() 함수 내부에서 scanf로 입력받은 위치를 검사하고 있음.
2. 조건
- DAT_0804a020 == 0x78
- DAT_0804a021 == '1'
- DAT_0804a022 == 0x7c
- DAT_0804a023 == 0xdd
- DAT_0804a024 == 'X'
- DAT_0804a025 == '\0'
올바른 입력값을 얻기 위해, 각 문자에 XOR 해주면 되겠다.
* XOR의 특징 이용
# input 값을 구하기
result = [0x78, '1', 0x7c, 0xdd, 'X', '\0']
input = []
input.append(result[0] ^ 0x34)
input.append(ord(result[1]))
input.append(result[2] ^ 0x32)
input.append(result[3] ^ 0x88)
input.append(ord(result[4]))
input2ascii = ''.join(chr(i) for i in input)
print(input2ascii)
=> L1NUX
'보안 > 리버싱' 카테고리의 다른 글
reversing.kr - Easy Unpack (0) | 2024.08.26 |
---|---|
reversing.kr - Easy Keygen (0) | 2024.08.26 |
x64 assembly basic (0) | 2022.07.10 |
Dreamhack Quiz: x86 Assembly 2 (0) | 2022.07.10 |
86 Assembly: Essential Part(1) quiz (0) | 2022.07.08 |