본문으로 바로가기

고퍼

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

네비게이션

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

    Information Security

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

어셈블리어, 주소에 접근하기

32비트에선 최대로 4G의 메모리를 사용할 수 있다-> 2^32(주소의 개수) X 1BYTE(한 주소에 할당된 공간) = 4G 어셈블리어에서 주소에 접근하는 방법은 []을 사용하면 된다. EX ) [402000] 올리디버거의 좌측 하단에 있는 창이 메모리 공간에 있는 내용을 표시해준다.이것을 보면서 실습해보자 mov [402000], al 이렇게 적게되면 자동으로 우리가 적지 않은 내용들이 입력이 된다. 이건 나중에 알아보자 이것을 실행하게 되면 AL에 있던 값이 402000에 복사됨을 알 수 있다. 이번엔 반대로 레지스터에 메모리에 들어있는 값을 넣어보자 mov cl, [402000] 여기서 주의해야할점은 mov mem, mem이 불가능하다는 것이다.즉, 메모리에서 메모리로 직접 값을 복사할 수 없다...

Study/reversing 2017. 4. 4. 02:44

어셈블리어의 시작과 기본문법

어셈블리어란? 기계어를 조금 가독성을 높여 사람이 비교적 쉽게 이해할 수 있도록 하는 기계어와 1대1대응 언어이다. 어셈블리어를 어셈블하도록 해주는 작업을 하는것이 어셈블러이다. 어셈블리어는 cpu마다 다르기때문에 어셈블러의 종류가 다양하다 우리는 순수하게 어셈블리어에 대해서만 배울것이기 때문에 올리디버거라는 디버깅프로그램을 이용해 공부할것이다. 우리는 ia32라는 인텔 32비트기반의 어셈블리어를 배울것이다. 어셈블리어에도 당연히 문법이 있다. 문법에 대해서 알아보자 mov eax, 1 mov는 연산자 eax, 1은 피연산자이며 피연산자는 ,(콤마)를 통해 구분한다. 저걸 해석하면 eax에 1이라는 값을 넣어라! 라는 뜻이다. eax는 뭐지? cpu 안에는 레지스터라는 기억장치가 있다. 레지스터에는 4바..

Study/reversing 2017. 3. 30. 04:21

C :: 오름차순과 내림차순

나의 전환점이 되어야할 과제가 주어졌다. 1. 함수를 사용하는 이유2. call by value, call by reference3. 실습34. 과제 - 오름/내림차순 정렬 마지막 과제를 풀어보자 오름/내림차순 정렬이다.정렬과 관련된 알고리즘은 검색하면 최적화된 코드가 많이나온다.하지만 나는 실력향상을 위해서 보지 않고 했다. 그래서 시간도 오래걸렸고 코드가 효율적이지 못하다.그래도 결국에는 인터넷에 나와있는 코드들에서 크게 벗어나지는 못하는것 같다. 아래는 내가 작성한 코드이다. #include void func_e(int ine[]);void func_d(int ind[]); int i,j,k,box; int main(){int input[10];int choice;printf("input : ");..

Programing/C 2017. 3. 29. 22:45

C :: c언어 대소문자 변환

나의 전환점이 되어야할 과제가 주어졌다. 1. 함수를 사용하는 이유2. call by value, call by reference3. 실습34. 과제 - 오름/내림차순 정렬 수업 ppt에 있는 실습3을 풀어보자 실습31) 문자열을 입력받는다2) 입력받은 문자열의 모든 소문자를 대문자로 만들고 출력한다.3) 입력받은 문자열의 모든 대문자를 소문자로 만들고 출력한다.4) 두 기능을 함수로 분리한다.//아스키코드를 참고하며 기존에 존재하는 함수를 사용하면 안된다. 1 #include 2 3 int atoA(int* x) 4 { 5 return (*x)-=32; 6 } 7 8 int Atoa(int* x) 9 { 10 return (*x)+=32; 11 } 12 13 14 int main() 15 { 16 ch..

Programing/C 2017. 3. 29. 10:16

C :: call by value/reference

나의 전환점이 되어야할 과제가 주어졌다. 1. 함수를 사용하는 이유2. call by value, call by reference3. 실습34. 과제 - 오름/내림차순 정렬 두번째로 call by value와 call by reference가 무엇인지 알아보자 먼저 call by value란 무엇일까? 함수 안에서 선언되는 변수는 타함수에서 사용할 수 없다. 지역변수이기 때문이다.그렇다면 우리가 보통 메인함수에서 변수를 받아 사용하는 함수는 어떤 원리로 작동하는 것일까? 여기서 변수의 값이 넘어가는 과정을 call by value라고 한다. 조금 자세히 말하면 실제로 변수가 넘어가는것이 아니라 변수의 값이 타 함수의 변수에 복사되어 저장되는것이다. 그렇기 때문에 다른 함수에서 call by value로 ..

Programing/C 2017. 3. 29. 01:37

C :: 프로그래밍에서 함수를 사용하는 이유

나의 전환점이 되어야할 과제가 주어졌다. 1. 함수를 사용하는 이유2. call by value, call by reference3. 실습34. 과제 - 오름/내림차순 정렬 먼저 첫번째 과제인 함수를 사용하는 이유부터 알아보자 c언어에서 함수를 사용하는 이유는 과연 무엇일까? c언어에서 함수를 사용하는 대표적인 이유는 바로 재사용성때문이다. 재사용성? 메이플 스토리를 예로 들자면 상점에서 어떤 아이템을 골랐을 때 현재 아이템보다 능력치가 얼마나 높은지 알려준다. 이는 어떻게 프로그래밍 되어있을까? 아마도 상점에 있는 아이템 능력치에서 현재 착용한 아이템 능력치를 차감하는 연산을 진행했을 것이다. 그렇다면 메이플스토리에 존재하는 모든 아이템을 출력하려면 어떻게 해야할까? 두 수를 비교하는 코드가 수십, 또..

Programing/C 2017. 3. 28. 22:10

C :: 아스키코드와 패리티비트

곧있으면 케이녹 수업이다 빨리 끝내자! 1. 메뉴입력받아 10진수를 2진수,8진수,16진수로 바꾸어 출력하는 프로그램 만들기 2. 별로 산만들기 4가지방향으로 3. 별로 다이아몬드 만들기 4. 별로 다이아몬드 배경 만들기 5. 아스키코드 조사 마지막으로 아스키 코드에 대해 알아보자 아스키 코드란? 컴퓨터 내부에서 문자를 표현하는 표준적인 부호체계로서, 미국에서 표준화한 정보교환용 7비트 부호체계이다. 아스키코드가 왜 필요하지? 다른 컴퓨터와 통신할 때, 내가 '안녕' 이라는 문자열을 보내고 싶은데 0과 1로 이루어진 컴퓨터끼리 정확한 정보를 주고받기 위해선정해진 규칙이 있어야 한다. 이러한 규칙중 하나가 바로 아스키 코드이다. 아스키코드는 왜 7비트인가? 아스키코드는 8비트를 7비트는 문자구별용으로 사용..

Programing/C 2017. 3. 28. 02:11

C :: for문으로 다이아몬드 출력 및 응용

동기들과 함께 카페에서 과제를 했다....점점 바이오리듬이 깨지는것 같다...ㅠ 1. 메뉴입력받아 10진수를 2진수,8진수,16진수로 바꾸어 출력하는 프로그램 만들기 2. 별로 산만들기 4가지방향으로 3. 별로 다이아몬드 만들기 4. 별로 다이아몬드 배경 만들기 5. 아스키코드 조사 이번에는 다이아몬드와 다이아몬드배경을 만들어보자 최대한 짧게 코딩하고싶어서 복잡하게 식을 일반화 시켜 정리했다. 아래는 배경이 별이되는 코드이다. 위의 코드도 짧게 하고싶었으나.... 이게 내 뇌의 최선인듯하다 ㅠㅜ 아무튼 코드는 성공적으로 컴파일까지 완료했다.

Programing/C 2017. 3. 28. 01:55
  • 이전
  • 1
  • ···
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 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

  • SQL
  • 네트워크
  • Los
  • 파이썬
  • injection
  • HTML
  • 시스템
  • Python
  • 웹
  • 어셈블리어
  • webhacking.kr
  • web
  • 웹 해킹
  • 리버싱
  • writeup
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 오늘 / 전체
  • 글쓰기
  • 환경설정
  • 로그인
  • 로그아웃
  • 취소

검색

티스토리툴바