전쟁/lena tuts4you

[Lenatuts4you] 10-3. CConvert

Sean(slay) 2022. 11. 2. 16:29
반응형
반응형

 

Write-up 쓴 날짜 : 2022-09-30 16:50

 

MSVBVM50.DLL
1.29MB

 

cconvert 파일은 악성파일로 탐지되어서인지 업로드가 안된다.

 

주제 - Continued reversing techniques in VB, use of decompilers and a basic anti-anti-trick


분석 1

 

 

cconvert 프로그램을 실행하면 위와 같이 나온다.

 

오른쪽 하단에 UNREGISTERED 문자열이 있다.

 

 

About 버튼을 누르면 위와 같이 뜨는데 하단에는 "Unregistered - Crack Me If You Can!" 문자열이 뜨고 있고, Register 버튼을 누르면 위와 같이 User Name과 Registration Code를 입력받는다.

 

 

임의의 값으로 slay/slay를 입력하면 위와 같이 "Sorry, Better Luck Next Time!" 문자열이 뜬다.

 


분석 2

 

 

이 프로그램은 VB로 만들어졌다.

 

 

디버거 내의 문자열 찾기 기능을 이용하면 위와 같이 문자열들이 나타난다.

 

문자열들 중 "Nice work! You're Now Registered!" 문자열을 참조하는 부분으로 간다.

 

 

409FCD 주소에서 해당 문자열을 참조하는데

 

409FBE 주소에서 조건 분기를 한다.

 

조건 분기를 할 때 조건은 409F98 주소에서 test 명령어에 의해 정해진다.

 

조건 분기가 이루어지면 "Sorry, Better Luck Next Time!" 문자열을 출력한다.

 


풀이 1

 

 

"Nice work! You're Now Registered!" 문자열을 띄울 것인지 "Sorry, Better Luck Next Time!" 문자열을 띄울 것인지 조건 분기가 있는 이 부분은 validate 버튼을 눌렀을 때 동작되는 함수 부분이다.

 

스크롤을 쭉 올려서 409C70 주소에 있는 함수 스택 프레임 프롤로그에 BP를 걸고 실행한다.

 

 

이름과 코드 입력 부분에 slay/slay를 입력하고 Validate를 누른다.

 

 

F8 키를 눌러 쭉 진행하다보면 위와 같이 409F76 주소에서 vbaVarTstEq 함수를 호출하는데 이 함수는 같은지 비교하는 함수이다.

 

이 함수의 인자로 esi 레지스터가 가리키는 함수의 반환값인 eax의 값이 넘어가는데 eax에는 19F1F4 주소가 담겨있고 스택에서 19F1F4 주소의 값을 확인하니 8이다.

 

그리고 스택에서 "REG-2300-CODE" 문자열이 보인다.

 

 

이어서 F8 키로 진행하다보면 409FBE 주소에서 조건 분기를 하는 것이 보이는데

 

왠지 "REG-2300-CODE"가 Registration Code일 것 같다.

 

 

REG-2300-CODE가 Registration Code 일 것이라는 건 일단 추측이므로 확실하게 하기 위해 409FBE 주소의 명령을 위와 같이 바꾸어 등록 성공 메세지가 뜨게 한다.

 

패치한 파일을 저장하고 패치된 파일을 실행한다.

 

 

패치된 파일을 실행 한 후 위와 같이 입력한 뒤 Validate를 누르면 Nice work 문자열이 뜬다.

 

 

그러면 위와 같이 재시작하라는 문구가 뜬다.

 

확인 버튼을 누르면 프로그램이 종료된다.

 

 

프로그램을 재실행하면 위와 같이 Register에 성공했다.

 


풀이 2

 

 

이전에 스택에 있는 데이터를 보고 REG-2300-CODE가 답일 것이라는 추측을 했었는데

 

위와 같이 입력해보면 등록 성공 메세지가 뜬다.

 

 

다른 이름에 같은 Registration Code를 입력해도 성공하는 것으로 보아 특정 암호 알고리즘 없이 Registration Code는 고정적인가 보다.

반응형