리버싱
-
CodeEngn(basic) crackme6 풀이Reversing/CodeEngn(Basic) crackme 2019. 3. 31. 22:14
으음.. 이렇게 열정적으로 풀이를 올릴 필요는 없을듯 한데.. 일단 풀이하겠습니다. 시리얼값을 체크하네요. 뭐 자주 봐왔던 화면이죠? 이 창은 코드가 압축됐음을 알려줍니다. 즉 압축을 풀어야겠죠 전과 같은 UPX로 압축된 코드입니다. 아직 어떤 언어인지는 모르겠습니다만, 일단 압축을 풀겠습니다. C++로 작성된 언어군요..! 뭐 별 차이는 없겠거니 하면서 올리디버거로 열겠습니다. 누가 봐도 굉장히 수상한 문자열이죠, 바로 들어가겠습니다. 앞서 GetDlgItemTextA 함수가 호출되고, 그 뒤에는 성공했을 때 뜰 창이 있습니다. 일단 GetDlgItemTextA 함수의 역할을 살펴보죠. 간단히 말하면, 대화상자에서 문자열을 검색하는 역할을 하는 함수인 겁니다. 이걸 본다면 시리얼값을 유저의 입력값중에서..
-
CodeEngn(basic) crackme5 풀이Reversing/CodeEngn(Basic) crackme 2019. 3. 31. 16:46
레쓰비 주는 자판기가 고장났어요. 굉장히 아쉽지만 8층이나 되는 스터디카페에서 레쓰비 하나땜에 내려가기는 귀찮고.. 정말 슬프네요. 크랙미나 풀게요. ㅋㅋㅋㅋ네 실행한 창이구요 그냥 저대로 Register now ! 버튼을 누르면 에러창(Beggar off!)이 뜹니다. 또 vbastrcmp 함수를 찾아봐야 하나요? 일단 보죠. ? 뭐죠 ?? 뭔가 실마리가 안잡히네요. 이 모든 문자열을 읽으면 흰머리가 날테니 관두고 뭔가 이상한 이 프로그램의 종류를 확인합시다. UPX - Delphi, 뭔가 이중 프로그램인가요? 라고 생각할 수 있겠지만, UPX 는 파일 압축 프로그램입니다. 알집 같은 거요. 반디집이나. 근데 특이한 점이라면 exe 파일로 실행하는 게 아니라 cmd에서 직접 쳐줘야 합니다. 그 뭐지 약..
-
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 버튼이 활..