흔히 해커들이,

GDB를 이용한 메모리 덤프를 통해 해킹을 시도.


이를 차단하기 위한 기본적인 방법, 

GDB 접근 차단.


될 수 있는 한 main() 시작 전 가까운 곳에서 호출해야 한다는 것 같으나

(이를 우회하고 inspecting 하는 방법도 있지 않을까? 

아직 관련하여 깊이 있게 알지 못하니 일단 기본적인 지침이라도 따르고 본다...)


방법은 아래와 같다.



#include <sys/ptrace.h>

#include <sys/types.h>


ptrace(PT_DENY_ATTACH, 0, 0, 0);



iOS 의 경우 OSX 과 사용방법이 다르다.


#import <dlfcn.h>

#import <sys/types.h>


typedef int (*ptrace_ptr_t)(int _request, pid_t _pid, caddr_t _addr, int _data);

#if !defined(PT_DENY_ATTACH)

#define PT_DENY_ATTACH 31

#endif  // !defined(PT_DENY_ATTACH)


void disable_gdb() {

  void* handle = dlopen(0, RTLD_GLOBAL | RTLD_NOW);

  ptrace_ptr_t ptrace_ptr = dlsym(handle, "ptrace");

  ptrace_ptr(PT_DENY_ATTACH, 0, 0, 0);

  dlclose(handle);

}


출처 : https://www.theiphonewiki.com/wiki/Bugging_Debuggers



+ Recent posts