디버깅을 해보려고 아무값이나 입력을했더니



3자리 이상이여야 한다고 해서 cmp eax,2로 실행파일을 바꿨다.



메시지 창을 띄우기전 조건을 보니 입력한 이름으로 만들어진 키값과 내가 입력한 키값을 비교해서 성공메시지를 띄울것인지를 판단한다.



중단점을 함수두개를 걸었는데 분석 결과 밑의 함수는 문자열을 비교해주는 함수이고 


위의 함수가 name을 가지고 키값을 만들어 주는 함수이다.



함수를 분석해보면 크게 4개의 연산 과정이 있는데



‘ – ‘ 문자를 기준으로 5자리로 나뉘는데 각 자리를 산출해내는 연산을 한다.


 3번째 연산 과정은 3,4번째 자리를 같이 산출하는 것 같다.


Name 2글자라고 했고 2번째 연산과정이 가장 짧고 코드로 구현하기 쉬워서 


2번째 연산 과정을 숫자와 알파벳 대소문자 조합을 통해 name을 만들어 코딩해봤다.




2번째 자리는 53b4가 되야하는데 연산을 해서 앞 4바이트를 가져오기 때문에 


53b4000~53b4999까지의 결과가 나오는 값들을 출력해 보았다.


출력된 값중 하나를 입력하니 인증이 되었다.

'문제 > CodeEngn_Advance' 카테고리의 다른 글

CodeEngn Advance 10  (0) 2017.02.07
CodeEngn Advance 09  (0) 2017.01.10
CodeEngn Advance 07  (0) 2017.01.10
CodeEngn Advance 06  (0) 2017.01.10
CodeEngn Advance 05  (0) 2017.01.10

+ Recent posts