Position.zip
Position.exe
ReadMe.txt
ReversingKr KeygenMe
Find the Name when the Serial is 76876-77776
This problem has several answers.
Password is ***p
- ExeinfoPe
- IDA 7.0
- ExeinfoPe로 해당 PE 파일을 열어보았다.
- 다음과 같은 특징을 알 수 있다.
- Windows GUI
- Microsoft Visual C++
- 32bit
- IDA로 해당 PE 파일을 열어보았다.
- Name, Serial과 관련된 문자열을 찾아보았다.
Input Name
,Input Serial
,Correct!
,Wrong
Correct!
,Wrong
이 참조되는 함수@print_genuine
의 call graph를 그려보았다.@judge_genuine
함수의 결과에 따라 설정될 문자열이 정해진다.
@judge_genuine
함수의 call graph 를 그려보았다.- 이를 요약하면 다음과 같다.
- 입력받은
Name
의 유효성을 확인한다.- 길이가 4글자이다.
- 영어 알파벳 소문자이다.
- 4글자 모두 서로 다른 글자이다.
- 입력받은
Serial
의 유효성을 확인한다.- 길이가 11글자이다.
- 6번째 글자가
-
이다. - 여기서 나머지 글자가 숫자인지 확인은 안하지만, 이후 과정을 보면 숫자여야 한다.
- 입력받은
Name
을 이용하여 이에 맞는Serial
을 생성한다. - 생성한
Serial
이 입력받은Serial
과 일치하는지 확인한다.- 만약 일치한다면,
1
을 리턴한다. - 만약 일치하지 않는다면,
0
을 리턴한다.
- 만약 일치한다면,
- 입력받은
- 해당 함수의 로직을 python script로 구현해보았다.
Position.py
Name
과Serial
의 유효성을 검증할 수 있다.Name
과Serial
둘 중 하나만 주어졌을 때, 그에 맞는 나머지를 구할 수 있다.
76876-77776
에 맞는Name
을 구했을 때 여러가지 문자열이 나온다.- 이중
***p
에 맞는 문자열을 제출한다.