일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 콜리젼 도메인
- 스패닝 트리 알고리즘
- BPDU
- TCP/IP
- 네트워크
- 브리지 우선순위
- ip주소
- 루핑
- 루트 포트
- 서브넷
- FTZ level3
- Path Cost
- 코드엔진 basic 5
- 브리지 ID
- 데지그네이티드 포트
- 시스템해킹
- Root Bridge
- Non Root Bridge
- 코드엔진 풀이
- 링크 대역폭
- 서브넷팅
- 치트엔진 풀이
- 코드엔진
- 세그먼트
- code engine
- 해커스쿨 FTZ
- 네트워크 장비
- code enigne
- 루트 브리지
- 서브넷 마스크
- Today
- Total
목록Reversing (19)
IT 블로그 !!
OEP를 구한 후 성공 창으로 가는 OPCODE를 찾는 것이 이번 문제입니다. 일단 다운로드를 받고 파일을 실행시켜 봅시다. 실행시켜보면 위와 같은 창이 뜹니다. 그러나 입력창에 아무것도 입력이 되지 않습니다. 우선 올리디버거로 열어봅시다. 실행화면이 아까와는 달라졌습니다. 일단 OEP를 찾아보면프로그램에 브레이크를 걸고 계속 실행을 했는데도 실행이 됩니다. 게다가 프로그램조차 실행이 되지 않습니다. 심지어 브레이크를 걸고 다시 실행시켰더니 브레이크가 없어지기까지 합니다. 아까부터 프로그램을 열 때마다 계속 이 창이 뜹니다. 아마도 이 파일은 패킹되어 있을 확률이 매우 높습니다. 패킹이란 쉽게 말하면 압축입니다. 그냥 압축이 아니라 실행파일을 압축하는 것이지요.패킹은 용량을 줄이고 보호 목적으로 암호화를..
StolenByte를 구하라는 것이 이번 문제입니다. StolenByte는 훔친 바이트라는 뜻입니다. 프로그램의 한 부분의 코드를 훔쳐내어 다른 부분으로 옮겨진 코드를 말합니다. 우선 파일을 실행해 봅시다. 키 파일을 못 찾았다고 나옵니다. 올리디버그로 파일을 열어보겠습니다. 일단 OEP를 찾아봅시다. 코드를 쭉 살펴보며 마지막 JNP를 해서 간 0040100C가 OEP일수 있습니다.00407387에 오른쪽 마우스 -> Follow를 눌러 들어갑니다. 코드들을 보게 되면 아까 보았던 'Click OK to check for the keyfile' 문구 가 보아지 않습니다.Well done, Error MassageBox도 다 있는데 프로그램 실행을 하자마자 처음 뜨는 이 박스는 코드 내에서 보이지 않습니..
OEP를 구하는 게 이번 문제입니다. OEP는 정상적인 파일을 디버거로 제대로 디버깅했을 때 시작하는 위치를 이야기합니다. 파일을 실행시켜봅시다. 계산기가 나옵니다. 우선 올리디버거로 실행 시켜 봅시다. 코드 처음이 PUSHAD로 시작하는 걸로 봐서는 UPX로 패킹되어있을 가능성이 높습니다. PEID로 확인해봅시다. 언 패킹을 진행 후 올리디버거로 열면 실제 프로그램 시작 주소인 OEP를 확인할 수 있습니다. 01012475가 OEP인 것을 확인 할 수 있습니다.
C드라이브의 볼륨 명을 참조 해, 최종적으로 변경되는 시리얼 킷값을 구하는 것이 목표이다. 우선 C드라이브의 이름을 CodeEngn으로 바꾼 후 프로그램을 실행시켜 봅시다. 입력한 시리얼값이 옳지 않다고 뜹니다.파일을 열어보겠습니다. 일단 오류메세지박스가 뜨는 부분을 먼저 살펴봅시다.004010FC를 보게 되면 EAX – 0의 값이 0이 나올 경우 JE를 실행하고 성공 창이 뜨게 되도록 설정되어있습니다. 즉 EAX – 0 = 0이 되어야 참이 된다는 소리입니다. 참이 됐을 경우 JE를 통해 00401117로 JMUP를 하게 됩니다. 00401117은 성공박스가 뜨는 곳이지요. 즉 EAX가 0이 되게 만들어 주어야합니다. 일단 CMP함수에 break를 걸고 실행시켜 봅시다. 보면 EAX의 값이 1이 되어있..
언팩 후, OEP와 시리얼을 찾으라고 합니다. 프로그램을 실행시켜보겠습니다. 아무 키나 입력 후 Check Serial을 눌러봅시다. 이렇게 잘못된 등록키라고 Error창이 뜹니다 우선 OEP의 개념에 대해서 알아봅시다. OEP란 Original Entry Point로 실제 프로그램의 시작 위치를 이야기합니다. 그렇다면 먼저 PEID로 프로그램의 정보를 얻어봅시다. UPX패킹 돼 있음을 확인 할 수 있습니다언패킹 한 후 올리디버그를 통해 파일을 열어봅시다. 성공적으로 언팩이 되었습니다. 프로그램의 시작은 00401360으로 시작합니다. 그러면 이 00401360이 이 프로그램의 OEP가 됩니다. Wrong 메시지를 찾기 위해 5번에서 했던 것처럼 문자열을 찾아봅시다오른쪽 마우스 -> Search For ..
프로그램의 등록키를 찾는것이 이번 목표입니다.우선 프로그램을 실행시켜보겠습니다. 파일을 실행시키면 이런 창이 뜹니다Unregistered에 crackme라고 입력 후 Register now!를 눌러 보겠습니다. 잘못된 시리얼이 라고 거절당했다. 이번에는 이것을 올리디버그로 열어봅시다. 처음 PUSHAD로 되어있는 것으로 보아 UPX패킹 되어있을 확률이 높습니다. UPX는 단순한 압축 기술중 하나입니다. EXEINFO PE로 확인해 보니 UPX로 패킹되어있습니다. UPX패커로 풀어보겠습니다.. UPX패커로 풀어주면 이렇게 풀었다고 나옵니다.이제 다시 프로그램을 올리디버그로 실행시켜보겠습니다. 아까보인 Warning창을 찾기 위해오른쪽 마우스 – Search for – All referenced text s..
디버거를 탐지하는 함수 이름을 알아내는 게 이번시간 목표입니다.일단 프로그램을 실행시켜 봅시다. 보는 것처럼 정상이라는 문구만 지속적으로 출력하고 있습니다. 올리디버그를 통해서 프로그램을 실행시켜 보겠습니다. 아까는 ‘정상’ 이라는 문구만 떳지만 올리디버그로 실행시켜 보니 갑자기 ‘디버깅 당함’ 이라는 문구가 뜨고 있습니다. F8키를 통해 한 문장 한 문장 씩 실행시켜 보겠습니다.실행을 하다 보면 00408453 까지는 아무 일 없이 잘 되다가 갑자기 00408454부터 디버깅 당함이 출력이 되고 있습니다. 자세히 보면 0040100F를 불러오고 난후 바로 디버깅 당함이 출력되었습니다. 즉 디버깅 함수는 0040100F에 있다는 것을 알 수 있습니다. 0040100F로 한번 가봅시다. 보게 되면 0040..
비주얼베이직에서 스트링 비교함수 이름은? (구글하면 나오는데...) 하지만 한번 풀어보겠습니다!!파일을 실행시켜보겠습니다. 파일을 실행하지 못한다고 나옵니다. msvbvm50.dll을 다운받아 설치한 후 다시 실행시키도록 합니다. 다음과 같이 뜹니다. 딱 보면 알겠지만 이 창에 뜬 언어는 영어가 아닙니다. 정확한 뜻은 모르겠습니다. 우선 확인을 눌러보겠습니다. 확인을 누르면 다음과 같이 나옵니다. 일단 아무 말이나 빈칸에 입력해보겠습니다. 아무글자나 넣어봤더니 Error가 뜹니다. 이제는 본격적으로 올리디버그를 통해 프로그램의 동작원리를 알아보겠습니다. 지금 보여준 부분은 매우 극히 일부분입니다. 이번 3번 문제는 1번문제와 달리 문제의 양이 매우 많습니다. 이렇게 많지만 이중에서 우리들은 비밀번호를 알..
이번문제는 정상적인 실행파일이 아닙니다. 따라서 정상적인 실행파일로 만들거나 분석을 해야 합니다. 실제로 실행을 해보면 이렇게 에러가 발생합니다. 이 파일을 올리디버그로 열어도 올리디버그로도 에러창이 뜨면서 실행이 불가능합니다. 이 문제는 리버싱툴 중에 하나인 헥스 에디터(Hex Editor)라는 프로그램을 사용해야합니다. 헥스 에디터란 파일을 실행시키지 않고서 PE(Portable executable)파일들의 포맷들을 분석할 수 있게 해주는 프로그램입니다. 여기서 PE파일들이란 윈도우 운영 체제에서 사용되는 exe, DLL, object코드, Fon 폰트 파일등을 위한 파일 형식을 이야기합니다. 자 이제 본격적으로 문제를 풀어보겠습니다. 이것이 헥스에디터를 실행한 후 파일을 열었을 때 나오는 첫 화면입..
코드엔진 문제 중에서 Basic 1번을 풀어보겠습니다. HDD(하드)를 CD-ROM으로 인식시키기 위해서는 GetDriveTypeA의 리턴 값이 무엇이 되어야 하는가? 자 우선 올리디버그를 열어서 문제를 살펴보도록 합시다. 예상과 달리 코드가 매우 짧습니다.F9를 눌러서 함수를 실행시켜 보면 [그림 1] [그림 2] 그림 1에서는 너의 HD를 CD-ROM으로 인식시키라는 뜻이고그림 2는 인식시키지 못했으므로 Error가 난 것입니다. 우리는 이제 Error가 나지 않게끔 문제를 풀어 봅시다. 위 코드에서 00401000부터 00401000E는 “Make me think your HD is a CD-ROM”의 메시지 창을 띄우는 코드입니다. 문제에서 GetDriveTypeA의 반환 값을 물어봤으니 GetD..