4e 91 43
48 8d 45
20 52 32
CodeEngn Advance REC 14
14
Serial : NH6-0-0091008D0052 일때 Name은 무엇인가
이 문제는 키값을 만들기는 쉬운데 중간중간에 분석을 어렵게 하는 쓸데없는 코드들이 많았다.
먼저 인증이 성공했을 시 출력해주는 문자열인 "Registered Successfully" 을 찾고 위쪽에서부터 실행하다보면
name 을 이용해 만든 serial 과 입력한 serial 값을 비교하는 함수가 있고
그 바로 위에 함수인 CALL 00404bb8 에서 Serial 을 만들어 낸다는 것을 알수있다.

그 함수로 따라들어가서 분석해보면
키값을 만드는 과정은
name을 반복해서 적은 후에
name을 12글자로 만들어준다..
ex)
name : ludwings 라면
ludwingsludwings 로 만든후
ludwingsludw 으로 잘라낸다.
그 후에,
NH KeyGenMe6 과 1글자씩 값을 더해 앞에 00을 붙인다..
ex)
ludwingsludw
NH KeyGenMe6
l 의 아스키코드가 0x01
N의 아스키코드가 0x11이라면
"0012" 로,
u가 0x02
H가 0x22면
"0024"로
d가 0x03..... 생략..
이걸 12문자에대해 다 수행하고 합쳐준다
"0012002400~~~~"
그리고 앞에 12글자만 잘라내면 된다.
즉, 제일앞의 3글자만 시리얼을 만드는데 사용된다는 것이다.
그렇다면 문제에서 Serial은 NH6-0-0091008D0052 였고
0091008D0052 에서 역연산 해주면된다..
N : 0x4e
H : 0x48
' ': 0x20
이고 이 값들을 각각 0x91, 0x8d, 0x52에서 빼주면 정답이 되겠다.
4e - 91 = 43
48 - 8d = 45
20 - 52 = 32
댓글을 달아 주세요
비밀댓글입니다