Hooking
[Windows] injection & hooking
[Windows] injection & hooking
2017.08.07Dll injection#1``c OpenProcess()``로 HANDLE을 얻는다.``c VirtualAllocEx()``로 타겟 프로세스에 injection할 dll의 path를 쓸 공간을 할당한다.``c WriteProcessMemory()``로 step 2의 주소에 path를 쓴다.``c GetProcAddress()``로 LoadLibraryA의 주소를 얻는다. ``c CreateRemoteThread()``의 네번째 인자로 실행할 함수( LoadLibraryA )의 주소를, 다섯번째 인자로 그 함수가 실행할 인자(path)를 전달한다.결과적으로 remote process가 ``c LoadLibraryA(path)``를 실행하게 되어 dll을 load하게 되고, ``c Dllmain()``이 ..
LD_PRELOAD를 이용한 so injection과 hooking. + wrapping function
LD_PRELOAD를 이용한 so injection과 hooking. + wrapping function
2016.12.19`` LD_PRELOAD``는 prefix로 `` LD_``가 붙은, ld.so에 속하는 환경변수로,windows의 `` AppInit_Dlls`` 레지스트리와 비슷한 역할을 한다.`` LD_PRELOAD``에 설정된 shared object는 libc를 비롯한 다른 모든 shared object보다 먼저 로딩된다.`` LD_PRELOAD``에 설정된 shared library의 함수 중에 이후 로딩된 libc의 함수 이름과 동일한 함수가 있다면 먼저 로딩된( = `` LD_PRELOAD``에 설정된) shared library의 함수를 호출하게 된다. 그래서 결과적으로 보면 자동으로 후킹을 수행하는 것과 같다. 타인 소유 파일에도 동작한다.secure-execution mode로 실행되면 제약이 걸린다..