ABOUT ME

Today
Yesterday
Total
  • Basic RCE L14, KeyCrackmMe - #2
    리버싱/리버싱스러운것 2023. 6. 9. 03:54

     

    뭔 잡놈이 반겨준다 입력값을 입력하면 시리얼 밑의 시리얼 값과 대조하는 그런 문제다

     

    본 문제는 upx로 패킹되어있는데 패킹안하고 푸는 방법이 있을 것 같지만 OEP로 날아가서 봐도 원본에 쓰인

     

    문자열들이 죄다 박살나있기 때문에 도저히 내 지식으로는 풀 수 없다 판단, 언패킹후 풀이하였다

     

     

     

    문자열 모음을 보면 대조결과에 따라 다른 메세지들을 출력할때 쓰는 문자열들이 보인다

     

    성공시 출력되는 메시지로 가본다

     

     

     

    거기서 위로 좀 올리면 시리얼제조공장이 보인다.

     

    소문자 a를 입력했을때의 생성과정인데

     

    정확히 알려드리자면 abc를 입력했을 때

     

    처음에 한 글자 a(61)을 불러오고 61x61 = 24C1

    그 값을 ESI에 넣어주고

    61 >> 1 = 30 을 EBX에

    ADD ESI EBX = 24C1+30 = 24F1

    거기서 원래 문자값(61을뺴줌) = SUB ESI EDX = 24F1 - 61 = 2490 이게 시리얼값

     

    그 다음은 b인데

    b(62) 62x62 = 2584 이것을 전에값 2490 이랑 더함 2490+2584 = 4A14

    거기서 62 >> 1 = 31

    이걸 4A14에 더함 = 4A14 + 31 = 4A45

    4A45 - 62 = 49E3  이런식으로 계속 쌓음

     

    그럼 이제 입력값이 CodeEngn 일때를 구해야되는데 간단하다

     

     

    네임값을 입력하고 나온 시리얼이 ESI에 저장되어있기 떄문에 이 값을 시리얼에 고대로 넣어주면된다

     

    129A1은 16진수이므로 10진수로 바꿔서 써줘야한다

     

     

    '리버싱 > 리버싱스러운것' 카테고리의 다른 글

    리버싱 예제) CodeEngn Basic L16  (3) 2024.12.26
    함수호출규약  (0) 2023.06.18
    Basic RCE L10  (0) 2023.06.06
    Notepad_upx.exe 분석  (1) 2023.06.01
    실행압축 - 194p  (0) 2023.05.30
Designed by Tistory.