Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

kaka09

code engn basic 7 본문

Reversing

code engn basic 7

kaka09 2017. 7. 31. 21:03

[사진] 1-1


해당 문제는 C드라이브의 이름을 CodeEngn 으로 바꿨을때 시리얼이 어떻게 변하는지를 묻는 문제다. C드라이브를 바꾸기전에 생성되는 시리얼 값을 분석해보자




[사진] 1-2


004010d0 영역에 있는 DialogBoxParamA 함수에 의해 생성된 입력창에 AAAA를 입력하면 [사진]1-2 처럼 String2에 AAAA가 들어간다. 그리고 밑에 있는 String1 영역에 시리얼 값처럼 보이는걸 확인 할 수 있다. 밑에 IstrcmpiA 라는 문자열 비교함수를 실행시키는 것을 미루어 보아 문자열이 서로 일치하는지 비교하는 함수인것 같다. 




[사진] 1-3


그대로 값을 넣어보고 실행하면 [사진]1-3 처럼 시리얼 값이 틀리다는 경고창이 출력 된다. 그럼 이제 String1에 들어있는 값을 입력하여 어떻게 처리하는지 지켜보자





[사진] 1-4


String1에 들어있는 값으로 입력하였더니 serial 번호가 일치한다는 창이 출력되었다. 즉 String1에 들어 있는 값이 serial 값임을 알 수가 있다. 그럼 이제부터 C 드라이브를 CodeEngn으로 바꿔서 시리얼값이 어떻게 변하는지 확인해보자




[사진] 1-5


C드라이브를 CodeEngn으로 바꿔도 아무런 변화가 없어서 D드라이브에 CodeEngn 으로 바꿨더니 제대로 인식이 되었다. 아무튼 D드라이브를 CodeEngn으로 바꿔 보았더니 String1의 값이 바뀐 것을 확인 할 수 있다. 




[사진] 1-6


GetVolumeInformation 이라는 함수에 의해 드라이브의 정보를 갖고오고 그것을 conoatString에 전달해주는 식의 원리로 파악된다. 따라서 C드라이브의 이름이 바뀌면 변경된 드라이브명이 conoatString에 담겨진다고 볼 수 있다. 그 다음 IstrcatA 함쑤예 의햬 CodeEngn과 4562-ABEX 값이 합쳐져 CodeEngn4562-ABEX 으로 된다.




[사진] 1-7


그 다음 ADD DWORD PTR DS: 명령어에 의해 Code 총 4글자가 각 한글자씩 +1을 진행한다. code->dode->dpde->dpee->dpef 순으로 EDX 례지스터가(정확히는 DL) 0이 될 때 까지 반복한다. 최종적으로 반복하고나면 Code->Eqfg 값으로 변화된다.




[사진] 1-8



그리고 L2C-5781와 EqfgEngn4562-ABEX 값이 합쳐져 L2C-5781EqfgEngn4562-ABEX와 같은 형태가 되면서 최종 키 값이 생성 된다고 할 수있다.







'Reversing' 카테고리의 다른 글

code engn basic 9  (0) 2017.08.01
code engn basic 8  (0) 2017.08.01
code engine basic 6  (0) 2017.07.31
code engine basic 5  (0) 2017.07.27
code engine basic 4  (0) 2017.07.27