Linux
[script] portscan
https://github.com/linuxias/MyBox/blob/master/script/portscan.sh 12345678910111213141516171819#!/bin/bashIP=127.0.0.1first_port=$1last_port=$2function usage() { echo "Script for scanning port" echo "Usage : ./portscan start_port end_port" echo "Example : ./portscan 1 100" exit}if [ $# -ne 2 ]then usagefifor port in `seq $first_port $last_port`do (echo >/dev/tcp/$IP/$port)> /dev/null 2>&1 && echo..
[apt] /etc/apt/source.list 내용 살펴보기
/etc/apt/source.list를 수정하다보면 여러가지 내용들이 존재합니다.예시를 통해 확인해보시죠. deb http://archive.ubuntu.com/ubuntu/ trusty main restricted 위 예시에서 repository 주소 이후에 ubuntu 14.04 기준에서는 trusty란 텍스트를, 16.04에서는 xenial이란걸 많이 보게 되는데, trusty, xenial은 ubuntu의 codename입니다. 아래 표를 보시면, 각 ubuntu 버전에 따른 Code name을 확인할 수 있습니다. CurrentVersionCode nameDocsRelease dateEnd of Life dateUbuntu 17.10Artful AardvarkRelOctober 19, 2017J..
ptrace - process tracer (writing....)
ptrace (process trace) ptrace에 대해서 간단히 알아보겠습니다.ptrace() system call은 어느 프로세스(tracer)가 다른 프로세스(tracee)의 실행을 추적 및 제어할 수 있는 기능을 제공합니다. tracer는 tracee의 메모리, 레지스터, 코드, 데이터, 스택, 힙 등의 정보를 확인할 수 있으며 변경도 할 수 있는 기능을 제공하며, 여러분들이 gdb 와 같은 디버거에서 많이 사용하는 중단점을 이용한 디버깅이 가능합니다. 또한 system call 추적 등의 기능을 구현할 때 자주 사용되죠. 리눅스나 유닉스 같은 운영체제에서 ptrace를 이용하여 ELF를 분석, 디버깅 등을 가능케 해주는 좋은 녀석입니다. ptrace를 사용해 프로세스의 실행 흐름을 제어할 수..
[Cross compiler] arm-linux-gnueabi- / aarch64-linux-gnu- 설치
Arm 32bit$ sudo apt-get install gcc-arm-linux-gnueabi$ sudo apt-get install g++-arm-linux-gnueabi Arm 64bit$ sudo apt-get install gcc-aarch64-linux-gnu$ sudo apt-get install g++-aarch64-linux-gnu
Elf Header, Program Header, Section Header 얻어오기
#include #include #include #include #include #include #include #include #include #include int main(int argc, char *argv[]){int ret;int fd;int i;uint8_t *mem;struct stat st; Elf32_Ehdr *ehdr = NULL;Elf32_Phdr *phdr = NULL;Elf32_Shdr *shdr = NULL; if (argc < 2) {printf("Usage: %s \n", argv[0]);exit(0);} errno = 0;fd = open(argv[1], O_RDONLY);if (errno < 0 || fd == -1) {perror("open");exit(-1);} er..
[gcc] option & example
32 또는 64bit로 compile (-m32 / -m64)[문법]gcc -m32 -o 64bit_example example.cgcc -m64 -o 32bit_example example.c [설명]gcc option에 -m32 또는 -m64 option 설정하여 compile 가능 표준 libc linking 하지 않고 코드 자체만 complie (-nostdlib)[문법]gcc -nostdlib -o example example.c [설명]Linker가 표준 system startup 파일들이나 lib들을 linking할 때 사용하지 않도록 하는 옵션이다.아래와 같은 code compile이 가능해 진다. int func(void){return 0;} _start(){func();__asm__("..