티스토리 뷰

이전 easycrack에 이어서 두번째로 푸는 Reversing.kr 문제.

이전문제와 마찬가지로 olldbg를 사용하여 문제 풀이를 진행하였다.

아래 풀이는 내가 문제 풀이를 한 과정을 기록한 것이다.

 

-풀이

Serial 5B134977135E7D13 때의 이름을 찾는 것이 해커의 목표.

 

 

실행 시켜보면 이름을 입력 받고, 시리얼을 입력받음 맞지 않으면 프로그램 종료됨.

 

 

input bp 걸고 f8 실행
LOCAL.74 = ESP+18
= 19FE008 =>
주소에는 입력 이름이 들어있음.
 

 

ESI 3 비교

 

 

ECX=19FDF8(ESP)+C+0(ESI) =[19FE04] => 입력값 -4 메모리주소

 

19FE6C = 00000

 

19FE08 => 입력값 첫번째

EDI 주소 19FE08 바꿈

 

 

시리얼 입력 받음

 

19FE6C ESI 넣음

19FE08(입력값 첫번째 자리 주소) EAX

 

 

%s%02X

%s%02X의 의도는?

X는 16진수로 바로 출력

02X는 앞의 빈자리를 0으로 출력하고 16진수 출력한다

5B 13 49 77 13 5E 7D 13 16진수 ascii로 변환

 

 

[!!Iw!!^}!!

왜 안돼

 

 

%s%02x가 대체 어떻게 동작하는 지를 모르겠어서 확인함. 일단 입력한 값을 다 가져오고(%s) 그 뒤 %02X는 메모리에 있는 값을 6자리 가져오는 것으로 추측됨..

 

여기 있는 값 51을 가져와서 ecx 에 넣음..

 

DWORD PTR SS: [

STACK 영역의 ESP+10의 4바이트 공간의 값

19FE08의 주소 값(입력한 값의 위치 나타내는 주소 값)을 EDI에 저장하겠다.

ABCEFGHI 를 입력해본 결과

값들은 10, 20, 30 순으로 입력값과 XOR을 실시함.

30이후에는 다시 10, 20, 30.

 

 

xor 계산하기

 

5B 13 49 77 13 5E 7D 13

10 20 30 10 20 30 10 20

4B 33 79 67 33 6E 6D 33

 

K 3 y g 3 n m 3

 

 

 

 

 

 

-아쉬웠던 점

 

문제 풀이를 하면서 아직 코드 해석 능력과 센스가 부족하다는 것을 느꼈다. 해답에 근접했음에도 불구하고 거기서 시간을 좀 끌었던것이 아쉬웠다. 하지만 다음번에는 잘 할 수 있을 것 같다:)


'Write Up > Reversing.kr' 카테고리의 다른 글

Reversing.kr)easycrack.exe 풀이  (0) 2020.07.23
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
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
글 보관함