일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ioctl
- level trigger
- NAPT
- architecture
- wnourefresh
- .net core 7
- cbpf
- 어셈블리어
- edge trigger
- epoll_wait
- vtable
- packet flow
- BOF
- Docker
- Compiler
- .nret core 배포
- iptables
- epoll
- LOB
- DOCKER-USER
- REDIS
- 풀이
- rfc5508
- 취약점
- mvwin
- packet filter
- C언어
- wrefresh
- ncurses
- doupdate
- Today
- Total
목록Assembly (24)
Tuuna Computer Science
드디어 이진탐색을 어셈블리어로 구현하는데 성공함. 이진탐색의 큰 특징인 재귀적인 특성때문에 디버깅 시간이 조금 걸렸지만 노하우가 생겨 순조롭게 끝낼 수 있었음 ^^ 함수의 프로토타입 : 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언어로 구현하기 보단 어셈블리로 구현하다보니 변수생성에 메모리를 아낄 수 있는 장점(?)을 발견 다음은 이진탐색을 (재귀함수)를 어셈블..
이진탐색으로 어셈블리어로 구현해보면 어떨까라는 생각에 구현하던중 read 시스템콜은 입력받은 것을 문자열로 처리하는 것을 깨닫게 됨. 그래서 고민끝에 atoi함수를 구현하기로 결심함. + gets함수도 조금 구현해서 어셈블리어 코드 내부에서 메모리할당 + 정수변환까지 계획을 세우고 모듈화 해봄. 함수 프로토타입 : int atoi_asm(void)반환값 : 입력한 문자열에 해당한 정수 단) 10진수를 기준으로 계산되어짐. 16진수의 경우 나중에 ㅎ 궁금한 점은 main에서 이 함수를 호출하면 스택정리가 잘 안된건지 다음 printf를 호출할 때 segmentation fault가 떴는데 func()이라는 함수를 만들고 거기서 호출하니 별 문제 X ... main함수의 호출규약 문제인가 나중에 따로 알아봐야지
드디어! 시저암호 암호화 복호화를 어셈블리어로 구현하는데 성공했다! 디버깅하면서 동적분석하는데 꽤나 시간을 많이 잡아먹었는데 이유는 단순했다. 내가 못 찾았을 뿐.... ㅎ 좋은 경험 ~.~ 어셈블리어로 코드짜면서 뭔가 C 언어 보다 직관적이면서 단순한게 매력인거 같다 ㅋㅋ ;일단 필요한 함수 strlen, strcpy구현 %include "asm_io.inc" segment .bss segment .data format1 db "%s", 0 format2 db "%d", 0 print1 db "input your key(0~25) : ", 0 print_en db "~~~~~~~~~Encrypto!~~~~~~~~", 0 print_cr db "~~~~~~~~~Crypto~~~~~~~~~", 0 prin..
C로 시저암호(카이사르암호) 암호화와 복호화를 먼저 작성하고 이를 바탕으로 어셈블리어로 작성하려 한다. 먼저 복호화 구간은 조금 복잡해서 먼저 암호화 구간만 진행했는데 아마 내일 부터 다시 복호화 구간을 만들어내지 않을까 생각해본다... ㅎ 코드는 주석을 대충달았는데 알아서 잘 해석하길 바랍니다. 또한 %include "asm_io.inc"는 Pual Carter 교수가 만든 include파일인데 print_nl을 사용하기 위해서다 이 파일이 없다면 지우고 print_nl을 지우길 바람. ;일단 필요한 함수 strlen, strcpy구현 %include "asm_io.inc" segment .bss segment .data format1 db "%s", 0 format2 db "%d", 0 print1 ..
x86 프로세서를 위한 어셈블리어 6판에서 문제인 배열의 역순 풀이 풀면서 여러방법이 있겠지만 2가지 방법이 떠오름 첫 번째로 임시 레지스터를 이용해서 배열의 값을 교체하는거 두 번째로 스택공간의 push와 pop을 이용해 교체하는 것 첫 번째 하다가 segment fault떠서 두 번째 방법으로 갈아탔는데 똑같이 segment fault떴음. 알고 보니깐 두 개다 마지막에 mov esp, ebp를 갈겨서 스택이 증발해벼렸던거... ;( 암튼 풀이는 스택에 1,2,3,4,5 ... 순서대로 push하면 마지막엔 10이 있음. 이 10을 기준으로 다시 pop하면 됨. 아 그리고 C 라이브러리함수인 printf를 호출하면 eax와 ebx, ecx의 값이 바뀌는데 eax의 값이 바뀌는건 알았는데 ecx 레지스..
[ 하루 일 어셈블리 코딩 ] nasm intel 32bit assembly descriptor : factorial을 구현해보자 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 %isdnclude "asm_io.inc" segment .bss number resd 1 segment .data outmsg1 db "input your number : ", 0 format1 db "%s", 0 format2 db "%d", 0 segment .text extern printf extern scanf global main global f..
[ 하루 어셈블리 일코딩 ] 적어도 1주일에 3~4개는 어셈블리로 코딩할 것이다. 나중에 악성코드 분석할 때 도움되리라 믿고 또 코드를 짤 땐 간단한거 말고 심화적인걸루 해봐야 겠다. 일단 오늘은 피보나찌수열을 어셈블리어로 코딩하기~.~ nasm : 32bit intel assembly 아 조금 신기한게 C로 짠거보다 조금 빠른속도를 보였다. ㅎ.ㅎ 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 %include "asm_io.inc" segment .bs..
; %include "asm_io.inc" 부분은 주석처리 하셔야 합니다~ 전에 C 라이브러리 함수인 strlen을 만들어두고 블로크 포스팅을 하지 않고 묵혀뒀기에... 올리려한다. 1234567891011121314151617181920212223242526272829303132333435363738394041%include "asm_io.inc" segment .bss input resd 0 ;input이라는 변수를 길이의 변수로 둔다. segment .data string db "Hello", 0 ;측정하려는 문자열 print db "%d", 0 ;printf format 형식 segment .text global asm_main extern printf asm_main: push ebp mov e..
C library_fuction인 strcpy를 어셈블리로 구현해보았다. 출력부분을 write system-call로 구현하려 했지만 귀차니즘이 발생하여 pritnf을 extern해오는 걸루... 어셈블러 : nasm 32bit 123456789101112131415161718192021222324252627282930313233343536%include "asm_io.inc" segment .bss segment .data src db "hello my friend", 0 dest times 100 db 0 format db "%s", 0 ;printf의 format 형식 segment .text extern printf global asm_main asm_main: push ebp mov esp, e..