파일분석
-
CodeEngn(basic) crackme4 풀이Reversing/CodeEngn(Basic) crackme 2019. 3. 31. 16:10
크랙미4 풀이입니다. 5까지는 무난하게 풀겠네요. ? 프로그램은 계속 정상만 출력하는 기능을 하나요. 아무래도 디버깅을.. 일단 코드구요, 아직은 힌트가 없죠. 이쯤에서 문제를 봅시다. 문제는 디버거 프로그램을 탐지하는 함수의 이름을 묻고 있습니다. 그걸 키워드(디버거 탐지 함수)로 해서 구글링하면 함수 IsDebuggerPresent 가 나오는데요, 간략히 설명하고 가겠습니다. PEB 구조체의 디버깅 상태값을 확인하여, 디버깅 당하는 상태라면 1, 아니면 0을 리턴하는 함수입니다. 커널 모드의 디버거는 탐지 불가하며, kernel32.dll에서 호출되는 함수이구요. 보통 프로그램의 보호 차원에서 쓰인다고 합니다. 아무래도 악성코드나 백신코드 등에서 디버깅을 잘 하지 못하도록 하는 역할로 쓰일거 같네요(..
-
CodeEngn(basic) crackme3 풀이Reversing/CodeEngn(Basic) crackme 2019. 3. 31. 15:48
크랙미3 풀이하겠습니다. 스터디카페 와서 일단 5까지는 오늘 풀어보려고요. 문제는.. 일단 abex 크랙미에서 자주 겪었던 거죠? vbastrcmp 함수였습니다. 그냥 물어본 건 아무래도 아닐겁니다. 기억해놓고 일단 프로그램을 봅시다. 아니, 일단 넘어갑시다. 뭐 아무래도 Regcode 부분에 패스워드를 넣는 것 같네요. 아무거나 치면 아니라고 에러 뜹니다. 역시 vbastrcmp 함수는 패스워드와 입력값의 비교를 위해 물어본 것 같네요. 유의하면서 올리디버거를 켜봅시다. ? 일단 VB를 사용한 프로그램인 거는 알겠는데, 이것만 봐서는 감이 안 잡히죠. text strings를 확인해서 힌트를 찾겠습니다. 유니코드 문자열들을 찾았습니다. 들어가보죠 뭔가 위에 이상한 문자열이 비번일 거 같긴 한데 일단 이..
-
CodeEngn(basic) crackme2 풀이Reversing/CodeEngn(Basic) crackme 2019. 3. 31. 14:49
문제는 이러하네요. 그럼 올리디버거로 바로 분석하러 가 면 흑우되는겁니다. 애초에 실행 파일에 문제가 생겨서 디버깅도 안되거든요. 어쩌지 하다가 HxD로 열면 되겠다 싶었습니다. 어차피 16진수로 돼 있을거고, 비밀번호만 찾으면 되니깐요. PE 파일 분석한 이후로 다시 킬 일이 없다 생각했는데.. 내리면 MessageBoxA니 하면서 함수의 이름들이 나열됩니다. 잘 찾아온 거 같네요. 크랙미#1? 제작자의 이름도 나오구요. 실패화면과 성공화면의 문자열들이 나오죠. 그럼 맨 밑의 저 이상한 문자열이 패스워드라고 생각되겠습니다. 간단하죠? abex' 보다 쉬운 거 같네요 아직까지는. 레쓰비.. 2019.3.31
-
CodeEngn(basic) crackme1 풀이Reversing/CodeEngn(Basic) crackme 2019. 3. 31. 14:35
abexcm 5까지 끝내고 코드엔진의 크랙미로 돌아왔습니다 이유요? 없어요 풀이할게요 근데 첫번째 크랙미는 abex 크랙미 첫번째거랑 같아서.. 이번엔 정석대로 풀어볼게요 지난번엔 점프하는걸로 그냥 끝냈으니 이번엔 코드의 원리를 살펴보며 풀어봅시다 우리가 눈여겨봐야할 함수, GetDriveTypeA입니다. 드라이브의 타입을 파악하는 함수니까요. 이 문제의 키라고 생각할 수 있겠죠? hlp에서 찾아본 결과, 그렇죠. 드라이브의 타입을 파악하는 함수입니다. 그런데 여기서는 CD-ROM 드라이브가 되는 값이 DRIVE_CDROM입니다.는 사실 위에서부터 0, 1, 2...로 세서 6번째니까 그 값이 5예요. 다시 말하면, 이 함수에서의 DRIVE_CDROM 값은 5란 말입니다. 근데 이 문제에서는 사실 큰 상..
-
abex' crackme5 풀이Reversing/abexcm 2019. 3. 29. 23:43
이거.. 후딱 하고 집 가서 잘래요.. 크랙미 4개 풀었으니 오늘은 굉ㅈ아히 보람찬 하루였던 걸로.. 실행창임니다 아무거나 입력했읍니다 아니래요 확인 누르면 꺼집니다 그럼 디버거 킵시다 으음 다행히 보기 싫었던 VB 프로그램은 아니군요 좀 아래로 내리다 보면 성공화면과 실패화면의 문자열들이 나옵니다 근데 그것보다 그 위에 lstrcat 함수의 기능이 궁금하네요 고로 hlp를 킵니다 appends one string to another이니까 문자열들을 서로 붙여서 출력한다는 뜻 같네요 그럼 여기서 StringToAdd 의 요소들이 신경쓰이네요, 아마도 StringToAdd 문자열들이 서로 붙여질 거 같습니다 그럼 우리가 할 거는 조건 명령인 JE에 BP를 걸고 실행하는 거죠? 조건문 실행 직전에 아마 그 ..
-
abex' crackme 4 풀이Reversing/abexcm 2019. 3. 29. 22:50
글쓰기 에디터의 업데이트 후 불편한 게 있다면 글을 정성들여 다 써놓고 다시 보면 사진이 몇개 빠져있는 경우가 있네요. 처음엔 대수롭지 않게 생각하고 수정했지만 수정한 뒤에도 사진이 없어지는 걸 보며 구제불능인가 싶어 깊은 빡침을 느꼈습니다 *^^* 몰라요, 풀이할게요 실행창입니다 아무리 뭐라 적어도 아래 Registered 버튼은 활성화되지 않네요. 별 수 있나요, 여기서 디버거 열어야죠. 뭔가 특정히 보이는 게 없이 쭉 명령들만 나열된 걸로 봐선 크랙미 2처럼 VB로 짜인 프로그램이 아닐까 싶네요. 정답 힌트를 찾아봅시다. referenced text strings에서 뭔가를 찾았습니다! 바로 들어가보죠 음, 아까 실행창의 타이틀과 그 내용이죠. 그런데 이 창은 아무래도 registered 버튼이 활..
-
abex' crackme 3 풀이Reversing/abexcm 2019. 3. 29. 21:56
오히려 크랙미 3이 2보다 쉬워서 간단히 풀었습니다. 나중에 2에서 어떤 방식으로 시리얼값을 지정하는지도 포스트해야 공부가 될텐데.. 암튼 바로 풀어보죠 실행하면 키파일을 확인하기 위해 확인 버튼을 누르라고 합니다. 근데 아직 키파일 같은 건 없죠. 간결한 프로그램이네요. 약간 크랙미 1에서 본듯한 형식이죠? MessageBoxA 등이 명확하게 구분되어 있으니 편하겠네요. 일단 크게 나눠봅시다. 초반에 뜨는 MessageBoxA, 그리고 CreateFileA? 이건 뭘까요? 아무튼 초반 부분이구요 이게 조건문 & 각 조건별로 나누어지는 창의 종류.. 로 후반 부분이라고 볼 수 있겠습니다. 그렇다면 CreateFile이 뭘지 win32.hlp에서 확인해봤습니다. 기본적으로 파일 / 오브젝트를 만들거나 읽어..
-
abex' crackme 2 풀이Reversing/abexcm 2019. 3. 29. 19:44
드디어 티스토리 글쓰기 에디터가 바뀌었군요! 사실 전에 게시판 같던 에디터가 불편해서 다시 네이버 블로그로 갈아탈까 생각했지만, 이제 그런 고민을 더 안 해도 될 것 같아요 몹시 신나네요 ㅎㅎㅎ 바로 풀이 들어가겠습니다. 일단 프로그램을 실행했을 때 나오는 창입니다. 처음에는 아무거나 넣는 겁니 다. Name : 1234, Serial : 1234 했더니 틀렸다며 약올리네요. EP는 이러합니다. 아직은 크게 힌트가 될만한 게 없어요 조금 위로 올리면 EP 직전까지 MSVBVM60.------- 하면서 뭔가가 잔뜩 있는데 vba니 Var이니 하는 거 보면 함수 같죠? 뭐랄까, 이것들은 VB 전용 엔진들이에요. C의 내장함수처럼 미리 뭔가를 명시하는거죠. 일단 그렇게 생각하고 넘어가요. 그럼 아까 봤던 프로..