ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CodeEngn(Basic) crackme17 풀이
    Reversing/CodeEngn(Basic) crackme 2019. 5. 11. 03:18

    이것은 basic 17 풀이입니다 슬슬 끝이 보이네요 ㅎㅋ

    문제부터 확인하고 갑시다 저 Key값이 나오는 Name값을 찾으면 된다는거죠

    어 Name값이 한자리수라는 설명과 달리 한자리수로는 안되네요

    일단 더 치고 Key값도 그렇게 해봤습니다.

     

    아무 일도 일어나지 않네요

    별 특별한거 없어보이구요

    문구 찾아와서 뭔가 복잡해보이는 부분을 찾아왔습니다 아마도 위에 두 문자열은 Name값의 길이를 판단하는 부분일 거 같으니 그 아래를 주목하겠습니다.

    일단 한자리수랬으니 여기 전에 Name값 문자열 길이 비교하는 구문을 이렇게 바꿔줍시다

    그리고 Key, 즉 Serial값은 Name값의 변화에 따라 변하는 거 같으니 암호화 알고리즘이 이후 CALL 구문 중 한 곳에는 있을겁니다 고로 죄다 BP 걸고 다 들어가봅니다

    처음 43A074인데 여기는 뭔가 시리얼값을 만들어주는 특별한게 없어보이네요. 넘깁시다.

    다음 45B850의 CALL 구문인데, 조금 깁니다. F8로 살펴보겠습니다

    근데 스택창?을 봤더니 뭔가 전에 본듯한 네자리의 숫자들이 만들어지네요

    최종적으로 저 CALL 구문을 끝내면 두 시리얼값으로 보이는 값이 보이는데요,

    위가 아마도 Name 입력값의 암호화한 값일 거고, 아래는 제가 입력한 값이죠.

    그리고 자세히 보니 비슷한 기능을 하는 함수?들이 반복됩니다. 형태는 조금씩 다르죠 그래야 암호화니까..?

    그럼 생각을 하고 갑시다, 지금 이 모든 함수들을 보면서 시리얼값을 정확히 유추해내야 할까?

    아니죠, 어차피 시리얼값은 BEDA로 시작하는 어느 값일테니까 그 첫부분만 컴퓨터에게 어떤 수 / 문자가 들어갈지 반복해서 시키면 되는 겁니다.

    프로그래밍 필요합니다 ^

    그래서 맨 처음 암호화 함수의 기능을 하는 코드를 작성하면 위와 같이 되는데요 제가 짠건 아니구요 블로그에서 퍼왔습니다 https://turtledove.tistory.com/27 감사합니다. 히히

    이 코드를 위에 암호화 함수의 코드의 첫부분과 같이 보면 거의 같은 역할을 하는 코드임을 알 수 있는데요

    특이점이라면 뒤에 printf로 그 값을 명시하는 것 정도?

    그래서 실행시키면 이렇게 쭈루룩 나오는데요(i=0x30 => 아스키코드로 30 이상의 문자 / 기호 / 수들만 찾음)

    중간쯤 보면 익숙한 beda가 나오는 것을 볼 수 있습니다 그쵸 F죠

    와! F다! 이러면서 좋다구나 입력하려 하지 마시고 MD5해시로 변환한 뒤에 입력합시다. 그럼 클리어

     

    약간 암호화 알고리즘 나오는 크랙미가 어렵네요. 확실히 전에 정해진 시리얼값과 입력값을 비교해서 어떻게 하는 크랙미는 쉬워진 거 같습니다

    아무튼, 굿밤

     

    2019.5.11

    졸리네요 내일 영재원 시부레?

    'Reversing > CodeEngn(Basic) crackme' 카테고리의 다른 글

    CodeEngn(Basic) crackme3 IDA  (0) 2019.07.06
    CodeEngn(Basic) crackme18 풀이  (0) 2019.05.11
    CodeEngn(Basic) crackme16 풀이  (0) 2019.05.10
    CodeEngn(Basic) crackme15 풀이  (0) 2019.05.09
    CodeEngn(Basic) crackme14 풀이  (0) 2019.05.09
Designed by Tistory.