Kilkat

(Linux) .so hooking 본문

Security/reverse engineering

(Linux) .so hooking

KimKwangWoon 2024. 11. 14. 23:01
#define _GNU_SOURCE

#include<dlfcn.h>
#include<stdio.h>

typedef int(*orig_getchar_ftype)(void);

int getchar(){
        orig_getchar_ftype orig_getchar;
        orig_getchar = (orig_getchar_ftype)dlsym(RTLD_NEXT, "getchar");
        puts("hooked success!!");
        return orig_getchar();
}

 

sudo gcc -o hook.so -fPIC --shared hook.c

 

#include<stdio.h>

int main(){
    getchar();
    return 0;
}

 

export LD_PRELOAD=/path *절대 경로

 


 

https://umbum.tistory.com/128

 

LD_PRELOAD를 이용한 so injection과 hooking. + wrapping function

`` LD_PRELOAD``는 prefix로 `` LD_``가 붙은, ld.so에 속하는 환경변수로,windows의 `` AppInit_Dlls`` 레지스트리와 비슷한 역할을 한다.`` LD_PRELOAD``에 설정된 shared object는 libc를 비롯한 다른 모든 shared object보다

umbum.tistory.com

https://asung123456.tistory.com/18

 

Linux C/C++ shared library 컴파일하기 fPIC 옵션 GOT, PLT

c++ g++ -shared -fPIC -o g++ -shared fPIC -o lib.so code.cpp c gcc -shared [-fPIC] -o gcc -shared [-fPIC] -o lib.so code.c -fPIC 생략가능 하지만 공유라이브러리를 만들 때는 -fPIC 옵션 사용을 권장합니다. (컴파일 종류에 따

asung123456.tistory.com

https://www.tcpschool.com/c/c_pointer_intro

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

Comments