일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- BOF
- ncurses
- NAPT
- Compiler
- .net core 7
- packet filter
- 취약점
- REDIS
- rfc5508
- cbpf
- wrefresh
- .nret core 배포
- C언어
- 어셈블리어
- epoll_wait
- iptables
- doupdate
- LOB
- 풀이
- level trigger
- packet flow
- epoll
- architecture
- edge trigger
- DOCKER-USER
- mvwin
- wnourefresh
- ioctl
- Docker
- vtable
- Today
- Total
목록어셈블리어 (4)
Tuuna Computer Science
추가 : 코드 짜면서 인라인 어셈블리에 새로운 것을 많이 알았음 예를 들어 output, input이라던가 등등 첨엔 변수의 값을 어떻게 이동시킬 지 몰랐는데 input쪽에 따로 설정하는 구간을 보고 개놀램. 학교 과제를 훔쳐보는 도중에 bof 취약점을 어떻게 방어할 것인가를 생각하는 거였는데 이때 bof를 못하게 Canary값을 넣어 방지한느 것은 이미 알고 있었지만 실제로 구현은 못해봤다. 그래서 오늘 한번 해보기로 함. 일단 아래는 문제의 소스이다. 32바이트 선언하고 뭐도 없고 BOF그냥 일어난다. 근데 저 코드에 몇 몇의 인라인 어셈블리 코드를 삽입하여(Canary) BOF를 방지해보려 한다. #include #include #include #include //check함수는 카나리값을 확인하여..
드디어 이진탐색을 어셈블리어로 구현하는데 성공함. 이진탐색의 큰 특징인 재귀적인 특성때문에 디버깅 시간이 조금 걸렸지만 노하우가 생겨 순조롭게 끝낼 수 있었음 ^^ 함수의 프로토타입 : int bin_search(int* integer_number_array, int array_first, int array_last, int find_target); 삽입정렬, 이진탐색, 문자열 정수변환등 구현했으니 어셈블리는 조금 내려놓고 메모리공부 덜한 부분과 C++, 디버거 진행을 마저해야 겠음 C++ 왤케 어렵..;; [소스코드] 심각성] : 모듈을 시작하기 전에 eax, ebx, ecx레지스터를 백업시켜주고 마지막에 복원시켜줘야 한다.
이번에 이진탐색을 어셈블리로 구현하기 위해서는 정렬된 배열이 인자로 준비되어있어야 하기에 어셈블리어로 insert sort(삽입 정렬을 구현해봄) 계속 코드를 작성하다보니 두뇌 최적화가 잘 되어가는듯 ㅎㅎ 실행중에 segmentation fault가 떴는데 알고보니 ebx레지스터를 decrease해야 하는데 increase해서 문제가 발생했던거... 함수의 프로토타입은 insert_sort(int integer_array_size, int* integer_array); 처음 어셈블리어로 구구단 출력했을 때 보다 확실히 코드의 길이가 줄어든것을 체감할 수 있었음. 그리고 C언어로 구현하기 보단 어셈블리로 구현하다보니 변수생성에 메모리를 아낄 수 있는 장점(?)을 발견 다음은 이진탐색을 (재귀함수)를 어셈블..
개꿀팁인데 Opcode에서 오퍼랜드와 오퍼랜드 사이의 목적지를 구별 짓는 것이 상당히 어려웠다. 어떤 블로그에선 Mod 비트부분에서 11이면 목적지가 레지스터라는데 테스트 결과 조금 개소리였다. (아닐수도) 구글링 결과 Mod부분이 11이면 R/M이 Register임을 알린다. 추가 적으로 Mod부분이 00이라면 뒤엔 Displacement가 따른다. 그래서 고민하다가 구글링 해보았는데 Opcode안에 d라는 비트와 s라는 비트가 숨겨져 있었다! d비트는 전체 1번째 비트에 s비트는 전체 0번째 비트에... ┌──────────────────────────┐ │ │ │ │ │ │ │ d │ s │ ├──────────────────────────┤ d비트는 이 Opcode에 의한 오퍼랜드가 어떤 방향으로..