본문으로 바로가기

고퍼

현재위치 :: HOME BLOG CATEGORY SEARCH ARCHIVE TAGS MEDIA LOCATION GUESTBOOK

네비게이션

  • 홈
  • 태그
  • 미디어로그
  • 방명록
관리자
  • 블로그 이미지
    G0pher

    Information Security

    링크추가
  • 글쓰기
  • 환경설정
  • 로그인
  • 로그아웃

prob1.c 핸드레이

prob1.c 12345678910111213141516171819202122232425262728293031323334353637383940Dump of assembler code for function main:0x80483d0 : push %ebp0x80483d1 : mov %ebp,%esp0x80483d3 : sub %esp,8 0x80483d6 : mov DWORD PTR [%ebp-4],0xa 0x80483dd : mov DWORD PTR [%ebp-8],0x140x80483e4 : mov %eax,DWORD PTR [%ebp-4] 0x80483e7 : cmp %eax,DWORD PTR [%ebp-8] 0x80483ea : jle 0x8048400 0x80483ec : mov %eax,DWOR..

Study/reversing 2017. 9. 19. 19:35

abex Crackme 1번 Line By Line

0040101D | 46 | inc esi | esi를 증가시킨다0040101E | 48 | dec eax | eax를 감소시킨다0040101F | EB 00 | jmp cd.401021 | 401021로 점프00401021 | 46 | inc esi | esi를 증가시킨다00401022 | 46 | inc esi | esi를 증가시킨다00401023 | 48 | dec eax | eax를 감소시킨다00401024 | 3B C6 | cmp eax,esi | eax와 esi를 비교한다00401026 | 74 15 | je cd.40103D | 같다면 40103D로 점프 0040103B | EB 13 | jmp cd.401050 | 401050으로 점프

Study/reversing 2017. 9. 19. 18:01

인터럽트에 대해 알아보자

인터럽트(Interrupt)란? 인터럽트란 프로그램 실행중에 입출력장치나 예외상황이 발생하여 처리가 필요할 때 cpu에게 알려서 진행중인 작업을 중단하고 해당 문제를 먼저 처리할 수 있도록 하는과정을 말한다 인터럽트의 종류 하드웨어 인터럽트 전류공급의 문제나 입출력 요청이 있는것과 같은 하드웨어적인 오류로 인한 인터럽트를 말한다 소프트웨어 인터럽트(트랩) 프로그램상의 오류나 예외발생 또는 의도적으로 발생시킨 인터럽트를 말한다 인터럽트가 이루어지는 과정 인터럽트 발생시 CPU는 현재 실행중인 프로그램의 상태를 레지스터 메모리에 저장한다 인터럽트의 원인이 무엇인가를 찾아낸 다음 인터럽트 처리 루틴을 실행시킨다 저장해놓은 원래 상태를 복구시킨다

Study/reversing 2017. 8. 24. 16:17

코드의 흐름을 변경하는 어셈블리어 명령에 대해 알아보자

JMP 무조건 분기명령이라고 불리는 친구다 그 이름처럼 오퍼랜드가 가리키는 곳으로 프로그램의 흐름이 바로 변경된다 옵션에는 127byte 범위 내에서 점프하는 short같은 세그먼트 내에서 점프하는 near현재 세그먼트를 벗어나는 far 이 있다 EIP값이 저장되지 않아 다시 돌아올 수 없다 CALL 함수를 호출할 때 사용되는 명령이다 이 역시 오퍼랜드가 가리키는 곳으로 프로그램의 흐름이 변경된다 JMP와 다른점은 함수가 끝나고 다시 복귀할 수 있도록 EIP값이 변경되기 전에 기존의 위치를 스택에 저장한다는 점이다 물론 다시 돌아올때는 스택에서 해당 정보를 꺼내어 복귀한다 RET CALL을 통햬 호출된 함수에서 다시 복귀하기 위해 사용하는 명령이다 스택에 저장된 정보를 기반으로 흐름이 바뀌는 것이기 때문..

Study/reversing 2017. 8. 24. 15:22

함수의 호출 : 스택 프레임과 규약 그리고 프롤로그&에필로그

스택 프레임이란? 함수가 호출되었을 때 해당 함수가 가지는 공간 구조를 말한다 스택 프레임의 구조 LIFO 구조로 쌓이며 괄호로 이야기 하면 더 쉬울것 같다 [ { ( [ [ ] ] ) } ] 이처럼 좌우 대칭이 되는 구조라고 생각하면 될것 같다 개략적으로 나타내면 push func_one()push func_two()pop func_two()pop func_one() 위와 같고 실제로 어셈블리어에서는 다음과 같은 구조를 띈다 push ebp ---> 현재 ebp를 스택에 저장해놓는다mov ebp, esp ---> ebp를 최상단으로 옮긴다 . . . ---> 새로운 함수의 내용 mov esp, ebp ---> esp값을 복원(위의 코드엔 없음)pop ebp ---> 저장해놓았던 ebp값을 복원ret -..

Study/reversing 2017. 8. 24. 14:44

메모리 구조에 대해 알아보자

아래서부터 살펴보자 코드(.text)영역 프로그램의 코드가 저장되는 영역이며 CPU가 코드영역에 저장된 명령들을 하나씩 가져가서 처리한다 데이터(.data & .bss)영역 전역변수와 정적변수, 배열, 구조체 등이 저장되는 영역이며 초기화된 데이터는 .data에 저장되고, 초기화되지 않은 데이터는 .bss에 저장된다 프로그램이 실행될때 생성되어 프로그램이 종료되면 시스템에 반환된다 힙 영역 동적으로 메모리를 할당 할 때 필요한 메모리 영역이다 크기가 유동적이어서 필요에 의해 할당하고 해제할 수 있다 힙 영역은 낮은주소에서 높은주소순으로 할당된다 스택 영역 지역변수와 매개변수(parameter)처럼 짧게 사용되는 데이터를 저장하는 영역이다 스택영역은 함수의 호출과 함께 할당되며 함수의 호출이 완료되면 소멸..

Study/system 2017. 8. 24. 08:29

abex Crackme 1번

abex 크랙미 첫번째 문제다 실행시켜보자 나의 하드디스크가 CD-Rom인것처럼 인식하도록 만들어야하는것 같다 확인을 누르자 바로 CD롬이 아니라고 뜬다 디버거를 통해 분석해보자 주요 코드들을 찾아볼 수 있었다 위에서부터 분석해보자 MessageBox라는 API 함수를 통해 처음 보았던 창을 띄우는것을 알 수 있다 그다음에 C:\\라는 문자열을 스택에 넣고 GetDriveType 함수를 호출한것을 보아 변수로 넘어간 드라이브명을 가지고 CD롬인지 아닌지 확인하는것 같다 여기서 첫번째 풀이법을 생각해볼 수 있다 push하는 값을 실제 CD롬의 이름으로 바꾸어 주는것이다 다시 코드로 돌아와서 eax를 건드리는 것을 보아 GetDriveType에서 리턴한 값이 CD롬인지 아닌지 판단할 수 있게 해줌을 추측할 ..

Wargame/etc 2017. 8. 24. 07:00

브레이크 포인트(Break Point)를 알아보자

브레이크 포인트(Break Point)란? 이는 중단점 또는 중지점이라고 부르며 프로그램을 의도적으로 잠시 또는 완전히 멈추게 하는 장소를 말한다 디버깅을 목적으로 브레이크 포인트를 걸게 되며 브포라고 줄이기도 한다고 한다 브레이크 포인트를 설정함으로서 레지스터와 같은 다양한 공간의 값들을 확인하면서 프로그램을 분석할 수 있다 브레이크 포인트의 종류 브레이크 포인트에도 몇가지 종류가 있다 소프트 브레이크 포인트(Soft Break Point) 프로그램을 디버깅할 때 가장 흔하게 쓰이는 방법으로서 한 바이트의 명령을 통해 프로세스 실행을 중지시키는 방법이다 그러나 이러한 방법은 실제 코드가 변경되어 CRC체크섬을 통해 변경여부를 확인해 프로그램을 종료시켜버릴 수 있다는 단점이 있다 이러한 경우를 우회할 수..

Study/reversing 2017. 8. 24. 05:39
  • 이전
  • 1
  • ···
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • ···
  • 49
  • 다음

사이드바

NOTICE

  • 전체 보기
MORE+

CATEGORY

  • 전체보기 (364)
    • Programing (102)
      • C (38)
      • Batch Script (3)
      • Python (25)
      • Java (9)
      • Android (0)
      • HTML (12)
      • php (5)
      • Javascript (7)
      • Scratch (3)
    • Study (110)
      • web (11)
      • network (20)
      • reversing (31)
      • system (39)
      • crypto (9)
      • AI (0)
    • Wargame (85)
      • webhacking.kr (25)
      • wargame.kr (0)
      • LOS(eagle-jump) (21)
      • LOS(rubiya) (32)
      • reversing.kr (0)
      • etc (7)
    • CTF (0)
    • ETC (53)
      • knowledge (37)
      • status (16)

RECENTLY

  • 최근 글
  • 최근 댓글

최근 글

최근댓글

Trackback

TAG

  • 웹 해킹
  • 웹
  • web
  • injection
  • writeup
  • Python
  • 네트워크
  • 시스템
  • webhacking.kr
  • HTML
  • SQL
  • 리버싱
  • 파이썬
  • 어셈블리어
  • Los
MORE+

ARCHIVE

CALENDAR

«   2025/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 31

LINK

  • ♡
  • DESIGN 아띠 그래픽
  • 이종찬
  • 박상현
  • 이창현
  • 송인봉
  • 신동철
  • 박준형
  • 유현진
  • 박형찬
  • 박형찬
  • 이우진
  • 조학근
  • 박홍주

VISITOR

오늘
어제
전체
  • 홈으로
  • 방명록
  • 로그인
  • 로그아웃
  • 맨위로
SKIN BY COPYCATZ COPYRIGHT 고퍼, ALL RIGHT RESERVED.
고퍼
블로그 이미지 G0pher 님의 블로그
MENU
  • 홈
  • 태그
  • 미디어로그
  • 방명록
CATEGORY
  • 전체보기 (364)
    • Programing (102)
      • C (38)
      • Batch Script (3)
      • Python (25)
      • Java (9)
      • Android (0)
      • HTML (12)
      • php (5)
      • Javascript (7)
      • Scratch (3)
    • Study (110)
      • web (11)
      • network (20)
      • reversing (31)
      • system (39)
      • crypto (9)
      • AI (0)
    • Wargame (85)
      • webhacking.kr (25)
      • wargame.kr (0)
      • LOS(eagle-jump) (21)
      • LOS(rubiya) (32)
      • reversing.kr (0)
      • etc (7)
    • CTF (0)
    • ETC (53)
      • knowledge (37)
      • status (16)
VISITOR 오늘 / 전체
  • 글쓰기
  • 환경설정
  • 로그인
  • 로그아웃
  • 취소

검색

티스토리툴바