실제 회원제로 운영되고 있고 판매하고 있는 프로그램인듯..

 

 

우선 로직은 엄청 복잡하게 짜놓았다.

 

파일 목록

 

 

 

C++로 제작 되어 있고 MFC UI로 제작되었다.

 

PE info

 

 

 

 

 

 

정상적으로 아무 ID/PW 입력을하고 로그인을 했고 메세지 박스가 출력된다.

 

 

 

단순 API BP만으로 쉽게 찾을수 있을거 같았지만 dummy code가 너무 많았다.

 

 

 

IDA로 확인을 했지만 동적 호출이 너무 많았고, back trace 과정에서 직접 디버깅을 해서 봐야했다.

 

ida1
ida2

 

 

 

 

서버측에 ID 존재 유무를 질의를 한 후 계정에 유무를 확인한다.

 

 

 

전체 로직에서 검증하는 과정이 2개가 존재 했으며 2개 전부 복잡한 로직 수행 뒤 값 검증을 했다.  

Check1: [ESI+2] 값을 통해 test 명령 뒤 분기를 하는데 1값이 아니면 에러 메세지를 뱉었다.

Check2: [EBP+8] 값이 3인지에 대한 여부를 검사한다. 단, 로그인 성공시 에는 1값이여야 정상 로직을 수행했다.

Check1

 

Check2

 

 

 

로직의 흐름은 전부 파악 했고 패치 작업을 해줘야 한다. Code Section은 W권한이 없기때문에 패치가 안된다. VirtualProtect 함수를 이용해 권한 할당을 해줘도 되지만 간단하게 W권한이 있는 DS 영역에 패치를 해줬다.

memorymap
.data
jmp to ds
Code Cave

Code Cave 방식을 택했으며 다른 방식은 값을 변경하기 애매한 디스어셈블들이 많았다.

 

 

최근에 게시글을 많이 못썼는데 앞으로는 자주 올릴예정....ㅠ

 

 

크랙킹 영상도 첨부했습니다.

 

'Crack' 카테고리의 다른 글

CodeEngn Advance RCE L08  (0) 2021.04.09
CodeEngn Advance RCE L09  (0) 2021.04.09
CodeEngn Advance RCE L02  (0) 2021.04.05

+ Recent posts