본문 바로가기

전체 글

(43)
1, 2장 요약 정적 분석과 동적 분석 1) 정적 분석 파일의 겉모습을 관찰하여 분석하는 방법으로 파일을 실행하지 않는다. 파일의 종류(EXE, DLL, DOC, ZIP 등), 크기, 헤더(PE) 정보, Import/Export API, 내부 문자열, 실행 압축 여부, 등록 정보, 디버깅 정보, 디지털 인증서 등의 다양한 내용을 확인한다. 2) 동적 분석 파일을 실행시켜서 그 행위를 분석하고, 디버깅을 통해 코드 흐름과 메모리 상태 등을 자세히 살펴보는 방법으로 파일, 레지스트리, 네트워크 등을 관찰하면서 프로그램의 행위를 분석한다. 또한 디버거를 이용해 프로그램 내부 구조와 동작 원리를 분석할 수 있다. 원하는 코드를 빨리 찾는 방법 코드 실행 방법 : 프로그램의 기능이 명확한 경우 명령어를 하나하나 실행하면서 원하는..
Basic level 1 처음 프로그램을 실행시키면 왼쪽 창이 나타나는데 "OK"를 누르면 오른쪽창이 나타난다 프로그램을 실행시키면 BP를 걸어둔 주소에서 실행이 멈추게 된다. 그리고 레지스터값을 확인하면 EAX값이 3으로 변한 것을 알 수 있다 다시말해 "GetDriveTypeA" 함수의 리턴값은 3이다 EAX가 ESI보다 1 작으므로 처음 리턴값 3에서 +1해서 리턴값을 4로 바꿔주면 성공 메시지가 출력된다 참고 MSDN에서 "GetDriveTypeA" 함수를 검색하면
level 9 이번장에는 비주얼베이직 시리얼키를 찾는 것이 목표이다. 비주얼베이직 뿐만 아니라 자바, 파이썬과 같은 고급언어들은 디컴파일을 해야한다. 비주얼베이직에서 주로 사용하는 함수들이다. __vbaVarTstEq __vbaVarTstNe __vbaVarCmpEq __vbaStrCmp __vbaStrComp __vbaStrCompVar 그럼 해당함수를 사용하는 모든 주소에 BP를 설치해 분석을 진행할 수 있는데 F2로 BP를 걸면 안된다. 왜냐하면 여기가 실행이 됐을 때 BP를 거는게 F2다. 하지만 __vbaVarTstEq는 주소를 참조하는 곳이므로 다른 방법으로 BP를 걸어야 한다. 해당 문자열이 올바른 시리얼인지 판별하려면 아까 걸어둔 BP를 제거해야 한다. (Alt + B)를 눌러서 BP상태 창을 띄운 뒤 ..
level 8 프로그램 왼쪽 상단에 "? - Register"를 클릭하면 등록창이 나오는데 아무 값이나 입력하고 "OK"버튼을 누르면 "Invalid Key!"라는 문자열로 분석을 시작하자 즉, CALL ArtGem.00434C00에서 어떤 일이 발생한다는 것을 알 수 있다 "0043856E"번지안에는 register key를 체크하는 함수가 있다는 것으로 알 수 있다.
컴퓨터구조2 컴퓨터 구조의 접근방법 레지스터를 디자인하자 레지스터를 디자인의 핵심 1. 레지스터를 몇 비트로 구성할 것인가? 2. 몇 개 정도로 레지스터를 구성할 것인가? 3. 레지스터 각각을 무슨 용도로 사용할 것인가? 명령어 구조 및 명령어를 디자인하자 저장소 : 레지스터 피연산자1, 2 : 레지스터 or 숫자 명령어에 따라 조합이 달라짐 "레지스터 r1에 있는 값과 숫자 7을 더해서 레지스터 r2에 저장하라"는 의미 연산 대상이 되는 피연산자는 숫자가 될 수도 있고, 레지스터가 될 수도 있다. r2 = r1 + r3 -> 레지스터 r1와 r3에 있는 값을 더해서 r2에 저장하라 r2 = r1 + 4 -> 레지스터 r1에 저장된 값과 숫자 4를 더해서 r2에 저장하라 저장된 데이터가 숫자를 표현하는 것인지, 레지..
컴퓨터구조1 컴퓨터 시스템의 주요 구성요소 컴퓨터 하드웨어의 구성 CPU 중앙처리장치 연산을 담당 메인 메모리 램(RAM)이라는 저장장치로 구성되는 메인 메모리는 컴파일이 완료된 프로그램 코드가 올라가서 실행되는 영역 프로그램 실행을 위해 존재하는 메모리 입출력 버스(Input/Output Bus) 컴퓨터를 구성하는 구성요소 사이에서 데이터를 주고 받기 위해 사용되는 경로 - 어드레서 버스 : 메모리의 몇번지에 있는 데이터를 가져갈 것인지에 대한 주소 전송 - 데이터 버스 : 데이터 전송 - 컨트롤 버스 : CPU가 원하는 바를 메모리에 전달할 때 사용(메모리가 원하는 바를 CPU에 전송)된다. CPU의 구성요소 ALU(Arithmetic Logic Unit) - 연산을 담당한다. - ALU가 처리하는 기본적인 연산..
level 5 "F7"을 눌러서 안으로 들어가면 4BD510번지로 이동하는데, 다시 "F8"을 누르면서 분석을 진행한다. 소프트웨어 BP, 하드웨어 BP 비교 정리 소프트웨어 BP : 올리디버거로 보면 빨강색이지만 가상메모리를 열어서 직접 보면 0xCC로 패치된다. "F9"를 누르면 0xCC로 패치된 곳에서 멈춘다. 0xCC를 어셈블리어로 바꾸면 INT 3이다. INT 3이라는 명령어를 실행코드 앞단에다가 설정함으로써 CPU가 이 명령을 실행할 때, 핸들러가 제어권을 디버거에게 넘겨주는 원리(명령어의 처음 1Byte를 INT 3으로 변경하는 형태로 구현) 오직 RAM에서만 실행할 수 있다. * INT : CPU가 예외처리를 하기 위해 인터럽트를 발생한다. * INT 3 : BP 인터럽트 하드웨어 BP : CPU내에서 ..
level 4 우선 PixtopianBook을 설치한다. 위와 같은 과정은 잘못된 루틴으로 빠진 것인데, 안티 디버깅 기법이다. 위와 같은 상황을 해결하기 위해선 예외적인 처리를 해줘야한다. 이 문제에선 패치해야 하는 문자열이 3개가 있다. 1. 이 프로그램에 있는 "UNREGISTERED VERSION"을 "REGISTERED VERSION"으로 바꿔서 사용버전처럼 모양을 바꿔볼 것이다. 2. 3. "Unregistered version v1.07"을 볼 수 있는데 원래라면 "Help - Register Now"를 눌러서 등록을 해야 상용 프로그램으로 사용할 수 있다. 문자열 수정은 끝났다. 이번엔 2개의 기능 제한을 풀어볼 것이다. 1. Pixtopia는 유저 프로그램이고 나머지 DLL들은 시스템에서 불러와주는 프..