Debugging

 

  디버깅(Debugging)은 컴퓨터 프로그램의 정확성이나 논리적인 오류(버그)를 찾아내는 테스트 과정을 뜻한다. 일반적으로 디버깅을 하는 방법으로 테스트 상의 체크, 기계를 사용하는 테스트, 실제 데이터를 사용해 테스트하는 법이 있다. 디버거는 디버그를 돕는 도구로 디버거는 주로 원하는 코드에 중단점을 지정하여 프로그램 실행을 정지하고, 메모리에 저장된 값을 살펴보며, 실행을 재개하거나, 코드를 단계적으로 실행하는 등의 동작을 한다. 고급 디버거들은 메모리 충돌 감지, 메모리 누수 감지, 다중 스레드 관리 들의 기능도 지원한다.

 

Anti-Debugging

 

  안티 디버깅(Anti-Debugging)이란 디버깅을 방해하고 분석을 방해하는 기술이다. 디버깅을 당한다면 해당 디버거 프로그램을 종료 시키거나 에러를 발생시키는 방법등 다양한 방법으로 분석을 방해한다. 안티 디버깅 기법을 이용하면 내부 코드를 분석하여 프로그램의 흐름을 파악 하는 걸 막을 수 있다. 주로 상용 프로그램에서 자주 이용되고 있다. 안티 디버깅 기술에는 수 많은 방법이 존재하며 현재도 발전하고 있으며, 그에 따라 이를 우회하는 기술도 지속적으로 발전하고 있다.

 

출처 - 위키백과 

 

'0x012 Etc' 카테고리의 다른 글

[Term] Social Engineering  (0) 2017.12.29
[Term] Code Obfuscation  (0) 2017.12.29
[Term] Packing  (0) 2017.12.29
[Term] Hooking  (0) 2017.12.29
[Term] Malware  (0) 2017.12.29

 안드로이드 앱을 동적으로 디버깅 하기 위한 절차는 다음과 같다.

  1) APK Tools 를 이용해 디버깅 모드로 덤프한다.
  2) APK Tools 를 이용해 디버깅 모드로 덤프한 것을 디버깅 모드로 다시 패키징한다.
  3) 디버깅 모드로 패키징한 apk 파일을 서명해 AVD에서 실행한다.
  4) Netbeans 를 이용해 1) 에서 진행한 코드를 프로젝트에 추가 하고 android.jar 파일을 라이브러리에 추가한다.
  5) DDMS를 이용해 대생 앱에 대한 포트를 확인 및 연결한다.
  6) Netbeans IDE 탭 메뉴에서 Debug > Attach Debugger > Select JPDA를 선택해 Host 와 Port 를 설정함으로써 원격 디버깅을 연결한다.
  7) 분석할 부분에 브레이크 포인트를 설정한다.
  8) 에뮬레이터에서 특정 이벤트를 발생해 브레이크 포인트 설정 부분의 라인을 실행하게 유도한 뒤 동적 디버깅을 시작한다.

출처 : 안드로이드 모바일 악성코드와 모의 해킹 진단

'0x002 OperatingSystem > 04. Android' 카테고리의 다른 글

[Command] nm  (0) 2017.12.29
[Tip] Dex 추출 방법  (0) 2017.12.29
[Tip] 분석 방지 솔루션 우회  (0) 2017.12.29
[Command] ADB  (0) 2017.12.29
[Theory] 안드로이드 필수 구성 요소  (0) 2017.12.29

+ Recent posts