Security/Reversing.kr

[Reversing.kr] Easy Keygen

PhoB 2023. 6. 7. 01:20

※이번 프로그램은 cmd창으로하면 맞았던 틀렸던 바로 꺼집니다 파워쉘로 실행해보시는걸 추천드립니다.※

아무거나 막 넣어봤는데 역시나 틀렸다고 나온다.

그래도 Easy Crack처럼 뭔가 메세지가 나왔으니 이 부분을 문자열 검색으로 찾아보자.

제일 먼저나오는 Input Name을 찾았다. 이 근처를 잘 보면

call 명령어가 두개가 나온다.

하나는 print문이고 하나는 입력값을 받는 scanf함수이다.

입력을 실행한 직후 edi에 esp+18의 값을 집어넣고있다. esp+18의 값을 덤프창에서 따라가보자.

입력한 값이 잘 들어와있다. 이후 멍때리며 계속 F8을 누르다보니

함수를 호출한번 호출하고 나니 메모리 덤프에서 뭔가 변화가 생겼다.

추가로 좌측의 화살표를 보니 화살표가 위로 올라가는 것을 보아

하니 for문인것 같아서 F9를 눌러서 계속 실행시켰더니 

이런 값이 나왔다. 혹시모르니까 한번 시리얼 키에 넣어보았다.

시리얼 키를 찾았다. 반복문을 통해서 시리얼 키를 만들어내는것 같다.

근데 사실 이게 끝이 아니다.

파일을 다운로드 받으면 ReadMe파일이 있는데 해당 파일을 열어보면

저 위에 쓰여진 키에 해당하는 이름을 찾으라는것 같다.

나는 여기서 시간을 꽤 잡아먹었다.

위에서 Input Name이후 반복문을 통해서 시리얼 값을 만들어 내는것을 알아냈다.

반복문 중에서 해당 부분을 자세히 보면 xor연산을 통해서 시리얼 키 값을 만들어내고 있음을 알 수 있었다.

그렇다면 ecx에는 뭐가 들어가고 edx에는 뭐가 들어가고 있는걸까

반복문을 실행해 보면서 우측 스택창을 보면

첫 반복

 

ECX에는 10 , EDX에는 44('D')가 들어가 있다.

두번째 반복

ECX에 20 ,EDX에 6F('o')가 들어가있다.

계속해서 반복해보면 ECX에는 10,20,30이 들어가고 EDX에는 내가 입력한 값이 한글자 한글자씩 들어가고있다.

즉, 입력한 값 한글자 한글자와 10,20,30을 돌아가며 xor연산을 한 결과는 위에서도 보았듯이 두글자씩 나오며 최종결과가 5B134977135E7D13이어야 한다는 소리다.

[Target Name] ^ (1020301020301020) = 5B134977135E7D13이라는 소리다.

XOR연산의 성질중에 XOR을 연속해서 하면 XOR하기전의 맨 처음 값으로 돌아가는 성질이 있다. 그 성질을 이용하여 5B134977135E7D13에 1020301020301020을 xor해준다면 그 값이 나온다.