본문 바로가기

CAT-Security/미분류

[문제풀이] abexcm5 분석

문제는 쉬운편이고, 단순히 점프문 수정이라든지 비교하는부분의 값들을 바꾸면 되는 문제입니다.

그래서 문제 자체의 풀이보다는 함수가 어떻게 흘러가고 호출되며 무슨일을 하는지에

초점을 맞춰서 공부 했습니다.

 

2.jpg

 

 

abexcm5의 실행 화면 입니다. 인증키를 요구하고 틀린지 맞는지를 확인 합니다.

 

1.jpg

Ctrl + N을 눌러서 abexcm5의 함수 목록을 확인 했습니다.

GetDlqItemTextA는 입력을 받는 함수이고

Istrcat은 C언어의 strcat의 함수와 비슷한 함수이고

Istrcmp는 C언어의 strcmp 함수와 비슷한 함수입니다. (이름 거의 똑같네요.....)

 

맨처음 GetModuleHandleA의 시작 주소를 구합니다.(DialogBoxParmA의 생성을 위해)

 

3.jpg

우선 DialogBoxParmA를 호출해서 사용자의 입력을 기다립니다.

그 뒤 사용자의 시리얼값을 입력 합니다. 사용자가 입력한 값이 저장됨을 확인 해씁니다.

 

4.jpg

 

그 뒤에 볼륨 인포메이션이라고하면서 뭔가의 값을 저장하는데 안쓰입니다.

5.jpg

 

그 뒤에 istrcat은 문자열을 이어주는 함수 입니다.

아무것도 없는 0040225C 공간에 4562-ABEX를 이어줘서 문자열 복사가 된것 처럼 되었습니다.

6.jpg

 

그 뒤 DL에 2의 값을 주고 4562 이 부분의 문자열들을 +1씩 해줍니다.

즉 5673이 되고, 6784가 되는것을 확인 할수 있었습니다.

7.jpg

 

그 뒤  L2C-5781이라는 문자열을 PUSH하고, 그 밑에 바뀌었지만은

00402000 이라는 공간에 L2C-5781을 저장 합니다.

그 뒤에 +2씩 해준값인 6784-ABEX를 PSUH하고 00402000곳에 붙여 버립니다.

그래서 L2C-5781784-ABEX가 완성 됩니다.

 

8.jpg

 

 

이 문자열을 사용자가 입력한 문자열과 비교 합니다.

 

9.jpg

 

00402000 이곳을 사용자가 입력한 부분으로 바꾸거나

00402324 이곳을 시리얼 부분으로 바꾸거나

점프문을 수정하거나

아예 처음부터 시리얼을 입력하면은 인증이 확인됨을 확인 했습니다.


'CAT-Security > 미분류' 카테고리의 다른 글

리그 오브 레전드 첫 금장  (0) 2012.11.24
TCHAR, _tmain등 (SBCS, MBCS, WMCS)의 이해 및 정리  (1) 2012.11.22
스터디 3주차  (0) 2012.11.18
아파치 설정법 모음  (0) 2012.11.13
sdfsdf  (0) 2012.11.13