-
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