HookMain.exe 디버깅먼저 키보드 후킹을 설치해주는 HookMain.exe 디버깅한다.올리 디버거로 열어보자. 위의 그림은 EP의 코드이다. 전형적인 VC++의 스텁 코드이다. 핵심 코드 찾기 위해서는 몇 가지 방법이 존재한다. 1. 한 줄씩 트레이싱2. 관련 API 검색3. 관련 문자열 검색하기 한 줄씩 트레이싱하는 것보단 API 또는 문자열 검색 방법을 먼저 해보겠다.HookMain.exe.을 실행보면 이 프로그램의 기능 - 키보드 후킹과 출력되는 문자열 - "Press 'q' to quit!" 을 알고 있다.이 문자열을 참조하는 코드 전/후에 우리가 관심이 있는 코드가 있을 것이다. 이제 문자열을 찾아보자. All referenced text strings 항목을 선택하면 아래와 같은 그림이..
이번에는 실행 압축 테스트를 해보려고 한다. 실제로 notrpad.exe를 실행 합축해보자.사용할 패커는 UPX이다. 무료이며 사용이 편리하며 기본 기능에 충실하기에 인기가 있다. 먼저 upx파일이 위치한 폴더로 가서 CMD 창에 UPX를 입력해보자. 아래의 화면에 보이는 것과 같이 입력을 해주면 메모장이 압축되어 지는 것을 볼 수 있다.참고로 ZIP 압축을 하면 35,231 크기로 줄어든다. 일반적인 ZIP 압축보다 압축률이 떨어진다고 볼 수 있는데,그 이유는 결과물이 PE 파일이기 때문에 PE 헤더를 추가해야 하고, 압축해제를 위한 코드도 넣어야 하기 때문이다. notepad_upx.exe와 NOTEPAD.EXE 파일 비교해보자. 위의 그림은 UPX 패커의 특징이 잘 나타나 있다. 1. PE head..
본문의 내용은 제가 찾은 블로그의 내용을 해석해서 올리는 것입니다. Huffman 는 비손실 데이터 압축을 위해 사용되는 압축 알고리즘이다. 여기에는 밑바탕이 되는 이론이 있다. 각각의 ASCII 코드는 항상 8비트와 함께 표현되는데, 만약 우리가 a에서 z까지의 문자로만 이루어진 자료를 가지고 있다면우리는 알파벳 문자를 5비트로 표현할 수 있다. 2^5 =32이므로 이것은 26개의 문자를 표현하기에 충분하다.그래서 일반적으로 데이터를 저장하려는 메모리를 줄일 수 있다. 예를 들어 코드들이 있다. -> 바이너리 코드는 아래와 같이 충분히 표현 가능하다. a = 00000b = 00001c = 00010d = 00011e = 00100 좀 더 효울적인 접근은 다양한 길이를 사용하는 것이다. 여기서 다양한 ..
이 블로그는 제가 공부한 것을 바탕으로 정리 목적으로 사용되고 있습니다. 작성 내용중 부족한 부분이나 잘못된 부분을 지적해주시면 감사하겠습니다 (꾸벅) PE 포맷 PE(Portable Executable)은 윈도우 운영체제에서 사용되는 실행 파일, DLL, object 코드, FON폰트 파일등을 위한 파일 형식이다. PE 포맷은 윈도우 로더가 실행 가능한 코드를 관리하는데 필요한 정보를 캡슐화한 데이터 구조체이다. 종류 주요 확장자 종류 주요 확장자 실행 계열 EXE, SCR 드라이버 계열 SYS, VXD 라이브러리 계열 DLL, OCX, CPL, DRV 오브젝트 파일 계열 OBJ 설명을 위해서 노트패드 파일을 이용하여 헥스 에디터 HxD로 열어보도록 하겠다.HxD로 노트패드를 여는 방법은 (기준은 윈도..
이 블로그는 제가 공부한 것을 바탕으로 정리 목적으로 사용되고 있습니다.작성 내용중 부족한 부분이나 잘못된 부분을 지적해주시면 감사하겠습니다 (꾸벅) crackme라는 프로그램은 크랙 연습 목적으로 작성되어 공개된 프로그램이다. crackme를 분석해보면 실제로 디스커버리와 디스어셈 코드에 익숙해지는 효과가 있다고 한다. 이 프로그램은 아주 유명하기 때문에 해외에는 물론 국내에도 abex’crackme를 설명한 사이트가 많다고 한다. 이제 OllyDbg로 프로그램을 실행시키기 전에 abex’crackme 파일을 실행시켜보자. 프로그램을 실행시키면 위와 같은 메세지 박스가 나오는데, 의미로 HD를 CD-Rom으로 인식시켜라. 라고 한다. 무슨 의미인지.. 한번 확인을 눌러 보자. 새로운 메세지 박스가 떴는..
이 블로그는 제가 공부한 것을 바탕으로 정리 목적으로 사용되고 있습니다.작성 내용중 부족한 부분이나 잘못된 부분을 지적해주시면 감사하겠습니다 (꾸벅) 프로세스에서 스택 메모리의 역할을 한다. 1. 함수 내의 로컬 변수 임시 저장 2. 함수 호출 시 파라미터 전달 3. 복귀 주소 저장 실제로 스택이 어떤 식으로 동작하는지 알기 위해 OllyDbg를 이용해서 알아보자. 처음 exe파일을 실행시키면 위와 같은 상태가 된다. 스택 포인터(ESP)의 값은 12FFC4이다. 우측 하단의 스택 창을 보면 ESP가 가리키는 주소와 그 값을 보여준다. STEPINTO[F7] 명령으로 401000주소의 PUSH 100을 실행시킨다. 위의 그림을 보면 ESP의 값은 12FFC0로 4바이트가 줄어들었다. 그리고 현재 스택 포..
이 블로그는 제가 공부한 것을 바탕으로 정리 목적으로 사용되고 있습니다.작성 내용중 부족한 부분이나 잘못된 부분을 지적해주시면 감사하겠습니다 (꾸벅)PACKING 실행 압축이라는 뜻을 가지고 있다. 일반적으로 우리가 흔하게 알고 있는 zip, rar과 같은 압축은 그 압축을 해제 시켜야만 해당 프로그램을 실행시킬수 있다. 그에 반해 패킹은 있는 그대로 일반 프로그램처럼 실행은 가능하다. 다시 말하면 압축을 푸는 과정없이 바로 프로그램을 실행할 수 있는 것을 실행압축이라고 한다. 압축에는 두가지 방법이 존재한다. 비손실 압축과 손실 압축이 존재한다. 먼저 비손실 압축이란 무엇일까? Lossless Data Compression은 파일의 크기를 줄여서 보관 및 이동에 용이하도록 하려는 목적을 가지고 있다. ..
이 블로그는 제가 공부한 것을 바탕으로 정리 목적으로 사용되고 있습니다.작성 내용중 부족한 부분이나 잘못된 부분을 지적해주시면 감사하겠습니다 (꾸벅) 함수의 호출 규약에 대해서 알아보려 한다. 리버싱을 하기 위해 디버기를 켜고 바이너리를 올려 놓았다. 제일 먼저 해야 할 일이 무엇일까? 해야 할 일은 바로 지금 보이는 이 함수의 역할은 무엇이고 파라미터는 이러한 구조로 넘어가는 구나!!!를 알아야 될거 같다. 즉 각 함수의 역할을 파악하는 것이다.코드의 목적을 알아낸다면 리버스 엔지니어링 작업의 50%를 달성한 것이나 다름없다고 한다.함수 호출 규약에는 여러 가지 방식이 있다.대표적으로 __cdcel, __stdcall, __fastcall, __thiscall 이렇게 네가지가 있다.여기서 우리가 확인할..
이 블로그는 단지 제 개인 공부를 정리해둔 것입니다. 제가 올린 내용 중 잘못된 부분이 있으면 지적해주시면 감사하겠습니다. 꾸벅 먼저 구글에서 검색한 레지스터에 대해 알아보겠습니다. 레지스터 위키백과, 우리 모두의 백과사전. 이동: 둘러보기, 검색 레지스터 (register, resistor)는 다음을 의미한다. 저항기 (resistor) 하드웨어 레지스터 (hardware register) 프로세서 레지스터 (processor register) 시프트 레지스터 (shift register) 상태 레지스터 (status register) 더 레지스터 (The Register) 위와 같다고 합니다. 처음에 뭐지라는 생각이 듭니다. 레지스터라는 것들이 총 6개가 보이는데 그 중 가장 컴퓨터 내부적으로 관련이..
이 블로그는 단지 제 개인 공부를 정리해둔 것입니다.제가 올린 내용 중 잘못된 부분이 있으면 지적해주시면 감사하겠습니다.꾸벅 기본적인 어셈블리어 공부 어셈블리는 한 번에 한가지 동작 밖에 못 한다.어셈블리의 명령 포맷은 명령어 + 인자 로 구성이 되는데, 명령어를 다른 말로 하면 옵코드(Opcode)라 하며 인자는 오퍼랜드(Operand)라 한다.만약 인자가 즉 오퍼랜드가 두개가 나오면 먼저 나온 오퍼랜드가 목적지, 나중에 나오는 오퍼랜드가 출발지가 된다. 즉 mov eax, ebx 면 ebx(출발지)를 eax(목적지)로 옮기라는 의미가 된다. 어셈블리어의 기본 명령어 push, pop : 스택에 값을 넣는 것이 push, 그리고 스택에 있는 값을 가져오는 것이 popmov : 단지 값을 넣는 역할lea..
- Total
- Today
- Yesterday
- 허프만 알고리즘
- CBrush
- 실행 압축
- arp
- 서버
- 오일러 프로젝트 12번
- 와이어샤크
- 패킷
- tipssoft
- Tips
- 키보드 메시지 이벤트
- 오일러 프로젝트 14번
- 이미지게임
- 2의 1000승
- tipsr강좌
- MFC
- tipsoft
- 비손실 압축
- 약수 500개
- 팁스강좌
- 오일러 프로젝트 16번
- TIPS강좌
- 오일러 프로젝트 11번
- 오일러
- 오일러 프로젝트 8번
- 헤더
- 화투이미지맞추기
- 오일러 프로젝트 13
- Omok
- 오일러 프로젝트 10본
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |