본문 바로가기

CodeEngn RCE

CodeEngn Basic RCE 20 18Byte를 읽는 함수임으로, 18Byte짜리의 파일이 필요하다. 이 부분이 시리얼키 확인 부분입니다. 분석 요약 키 파일의 바이트씩 읽음 41+n 과 XOR 그 값이 NULL이라면 끝냄 그 값을 DS:[4020F9]에 더해서 넣음, n++ DS:[4020F9]의 값과 키 데이터의 마지막 4Byte를 Little-Endian으로 읽어서 비교한다. 같다면, 크랙완료! 이렇게 다 풀고 나면, 18자중 사용하지 않은 Byte가 생기게 되는데, 그렇기 때문에, 답이 여러 개가 나올 수 있다. 그래서 CodeEngn.com에서 인증하기가 까다로운데, 질문자의 의도를 생각해 보자. 답이 금방나온다. :) 다 풀고 나면 나오는 그림 근데, , 왜 "오빠 짱인데?!" 일까? 리버싱은 남자의 학문인 걸까? ㅋㅋㅋ 의문.. 더보기
CodeEngn Basic RCE 19 AutoItCompile로 된 이 파일은 자동적으로 IsDebuggerPresent 함수로 보호가 되어있다. IsDebuggerPresent 의 리턴값을 0으로 수정하여, 탐지를 피하자. (3번째 줄을 Xor eax,eax 로 수정) 문제가 몇 밀리세컨드후에 종료되나 이었으므로 관련되어 보이는 함수에 브레이크포인트를 걸겠다. 모든 timeGetTime 과 스크릿샷에는 없지만 Sleep함수에 브레이크 포인트를 걸었다. 이 곳에서 멈추게 되는데, timeGetTime 과 Sleep이 있는 것으로 보아 이 곳인 것 같다. 확실하게 하기 위해서 분석을 해보자 MSDN에서 timeGetTime을 검색한 화면이다. 시스템이 시작했던 시간부터 지금까지의 시간을 밀리세컨드로 반환한다. 이 값은 DWORD이며, 0 ~ .. 더보기
CodeEngn Basic RCE 17 원래 이름을 3자리 이상 입력해야 하는 것을 1자리만 받도록 수정 정답일 경우 환영 메시지 박스를 출력하는데, 이것을 패스워드를 출력하도록 수정 해서 BruteForce를 해야 하는 문제 같다. 이렇게 파일을 수정하면 나름 풀기 쉽다. 더보기
codeengn basic rce 4 이 문제는 메인을 찾는 게 다이다. OllyDBG로 프로그램을 열고, 메인 부분을 찾아가면 디버거 상태인지 알아보는 함수와 비교 후 출력해주는 것이 다이다. 메인을 찾는 법 여러 가지가 있는데 일일이 들어가 봐도 되고, 프로그램을 실행시켜보고 관찰 한 뒤의 분석이 있다. 이 프로그램의 경우 출력하는 것이 다이므로, 출력하는 문자열을 찾아 들어가도 되고, 프린트가 천천히 되는 것으로 보아, Sleep함수가 있을 것으로 유추 할 수도 있다. 그리고 이렇게 작은 프로그램은 일일이 찾아도 힘들지 않다. 더보기
codeengn basic rce 3 풀고 나니 문제를 풀 이유가 없다. 그냥 검색을 통해 알아도 된다. 구지 프로그램을 들여다 본다면.. OllyDBG로 프로그램을 열고 오른쪽 마우스 클릭 후 Search for -> All intermodular calls 를 통해 모든 함수들을 볼 수가 있다. 이 중 스트링 비교함수를 찾으면 된다. 더보기
codeengn Basic RCE 2 풀이 문제 Codeengn Basic RCE 2 문제 실행 파일이 손상되었다고 했고, 실제로도 실행이 안 되는 파일이다. 이 파일을 가지고 유추해 볼 수 있는 방법은 패스워드가 Static으로 저장되어있다면, 파일 내에 어디인가 저장이 되어 있을 것 패스워드가 알고리즘으로 인증되는 것이라면, 파일 내에 알고리즘 소스가 저장되어 있을 것 패스워드가 네트워크를 타고 인증 받는 것이라면 인증서버의 주소가 파일 내에 있을 것 기타,, 여러 가지 다른 방법 문제에서 주어진 단서가 얼마 없기 때문에 유추한 모든 방법을 다 시도해 보기로 했다. 나는 이 중 1번에서 답을 찾을 수 있었다. 1번 방법의 자세한 설명 Windows 실행 파일은 PE 라는 구조로 되어있다. 이 PE를 전부 설명하자면 너무 길어짐으로 생략한다.(.. 더보기
Abex Crack me 1 && Codeengn Basic RCE 1 실행 시킨 화면 프로그램이 나에게 HD를 CD-Rom이라고 생각하게 만들라고 한다. 여기서 잠시! HD 보다는 HDD가 맞는 말이다. Hard Disk 를 줄인 HD인 것 같은데, HD는 주로 High Definition (고선명, 고화질)의 뜻으로 많이 쓰이고, 하드 디스크는 HDD ( Hard Disk Drive )라는 명칭으로 더욱 잘 쓰인다. 어쨌든, 위의 과정을 보기 위해서 OllyDBG 로 열어 보았다. OllyDBG 로 abex 1st crackme 를 연 모습 GetDriveTypeA 라는 API로 C:\의 드라이브 타입을 알아오는 것으로 보인다. 이 API를 알아보기 위하여 MSDN에서 검색한다. msdn을 검색한 모습이다. CDROM 으로 인식시키라고 했으므로, CD-ROM의 리턴 값으.. 더보기