내가 리눅스에서 맨날 구글링해서 찾아놓는 것들은 여기에 적자.
혹은 cgdb. (curses based GDB). 나중에 써먹자.
vi툴을 이용해 소스 분석할 때 써먹으면 좋은 도구.
sudo apt-get install ctags
이후 해당 소스의 루트 앞에서
ctags -R *
이 명령을 수행하면 하위 디렉토리의 태그 까지 써먹을 수 있다. 그리고 홈 디렉토리의 .vimrc에서,
set tags=./tags,(다른 태그 경로)
이 표시를 통해 다른 태그위치를 참조할 수 있다.
vi상에서 태그 참조시.
ctrl + ] : 태그 위치로 이동. ctrl + t : 태그 위치로 부터 돌아옴.
이 두가지 명령으로 간단하게 소스분석을 할 수 있다!
내가 보내는 쪽이냐, 받는쪽이냐에 따라,
scp (보내는 파일 ) (계정명)@(호스트 명):(호스트에서의 위치) scp (계정명)@(호스트명):(받는것의 위치) (받는 파일)
예를 들면,
scp something.jpg root@intoarena1.cafe24.com:/home/intoarena/ scp root@intoarena1.cafe24.com:/home/intoarena/something.jpg something.jpg
iptables를 참조하자.
구글링에 나와있는 대부분의 경우에는 LD_PRELOAD를 활용한 링크 후킹 기법에 대해서 설명하고 있음.
원리는 LD_PRELOAD를 이용하여 프로그램 실행시에 다른 라이브러리보다도 LD_PRELOAD에 명시된 라이브러리를 우선적으로 탐색하여 주소가 없는 심볼에 대한 링크를 부여하는 것. 이를 이용하면 rand(), printf()와 같은 함수 이름을 두어서 미리 선언해 두어도 LD_PRELOAD 값을 이용하여 자신이 정의한 함수 심볼에 우선적으로 링크를 거는 것이 가능하다.
export LD_PRELOAD=(공유 라이브러리 이름)
문제는 이것이 bash등의 shell에서 미리 export를 통해 걸어 놓는 것이 아니라, runtime에도 가능하겠느냐는 것. 불가능 하다는 이야기가 있다.
처음 프로그램을 로딩할때, 바로 첫 코드를 시작하는 것이 아니라, ld.so를 이용하여 다이나믹 링킹을 수행한다. 이때 라이브러리는 LD_LIBRARY_PATH를 이용해서 탐색.