본문 바로가기

[Riversing]/[코드엔진] BASIC

(20)
[코드엔진] basic4 코드엔진 사이트에 들어가 basic4 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn) 이번 프로그램은 안티디버깅을 내재하고 있는 프로그램인가보다. 패킹은 되어있지 않았고, 프로그램을 실행하면 정상 정상 정상 이라고 뜨다가 ollydbg 를 이용하여 실행하면 디버깅 당함 디버깅 당함 거린다. 내가 디버깅을 하고있다는걸 걸린것이다. 코드를 분석해보자. f8 을 이용하여 진행하다 보면 위의 사진처럼 DWORD PTR FS:[30] BYTE PTR DS:[EAX+2] 라는 코드가 나오는데, DWORD PTR FS:[30] 의 경우 PEB 구조체를 호출하는 코드이다. (PEB구조체에 대해서는 나중에 따로 글을 쓰도록 하겠다.) BYTE PTR DS:[EAX+2] 는 PEB 구조체의 멤버 IsDeb..
[코드엔진] basic3 코드엔진 사이트에 들어가 basic3 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn) 우선 프로그램을 Peid 로 확인해본다. 패킹이 되어있지는 않고, 문제에서 알 수 있다시피 visual basic 기반으로 짜여진 프로그램인듯 하다. 프로그램을 실행해보면 위 사진과 같이 뜨고 암호를 아무거나 입력해 로그인해보려 하면 에러가 뜬다. 독일어인듯하다. 이 프로그램은 사용자가 패스워드로 입력한 값을 스트링비교함수를 이용하여 비교 한 뒤 맞으면 통과, 틀리면 위 사진처럼 에러를 내보내는 프로그램인 듯 하다. 비주얼베이직에서 스트링 비교함수의 이름은 vbaStrCmp 이다. 위 사진과 같이 ollydbg를 이용해 이 프로그램에서 사용된 함수들의 목록을 확인해보니, 내가 찾던 vbaStrCmp 함수..
[코드엔진] basic2 코드엔진 사이트에 들어가 basic2 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn) xp 환경에서 파일을 실행해 봤더니 아래와 같은 에러가 뜬다. 주소로 보이는 0f505633c9 가 보인다. 일단 따로 적어 놓았다. 프로그램 실행이 안되니 odb를 이용해 정적분석을 해보자. 안된다. PeID로 뜯어보자. PE파일이 아니란다. 그리고 패킹이되어있지 않다. 그럼 HxD 로 뜯어보자. 맨 위에 보이는 4D 5A( MZ ) 라는 코드는 PE파일인지 아닌지를 확인 할 때 사용하고, PE파일 처음부터 2바이트까지 (4D 5A) 로 시작하는 부분이 e_magic 이 차지하는 공간이다. 또 이 바이너리를 계속 확인하다보면 .data 섹션이 나오는데, 이 섹션은 그 속성이 읽고 쓸 수 있는 가장 일반..
[코드엔진] Basic1 코드엔진 Basic1 을 풀어보자. 우선 코드엔진 사이트에 들어가 challenges 탭의 basic1 문제를 다운받는다. (무료임) 파일을 다운받고 압축을 풀어야 하는데 password 가 걸려있다. 사이트에 친절하게 나와있다. ( PW : codeengn ) 압축을 풀고 실행파일을 실행해보면 아래와 같은 창이 뜬다. CD-Rom 으로 생각하게끔 만들라고 한다. 중요한 말인 것 같으니 기억한다. 확인 버튼을 누르면 이건 CD-Rom이 아니잖앗! 하며 프로그램이 끝난다. 문제파악은 끝났다. 이 실행파일의 어딘가에서 Drive가 어떤건지 판별하는 부분을 찾아 CD-Rom 이라고 판단하게끔 수정하면 될 것 같다. OllyDbg를 이용해 분석해보자. 일단 F8을 눌러 쭉 진행해본다. 그러면 00401018 주..