출처 ;
http://verysimple.org/wiki/moin.cgi/HideDebugSymbol#fndef-789cb63c063e4d9502bddcaf0d2e4ecef8e9de1b-0
JNI native 프로젝트인 경우
-
Java로만 구성된 프로젝트와는 달리 <<JNI>> native 가 추가되면 <<ProGuard>>에서 Java와 동시에 Native쪽까지 처리해주지 못한다.
-
JNI 쪽에 등록된 함수명을 ProGuard가 임의로 바꾸면 안된다. --> ProGuard 측에서 특정 함수명을 바꾸는 것을 금지하도록 설정할 수 있다.
Native 측의 디버깅 심볼 숨기기
- so 파일에 심볼이 존재하는 지 확인하는 방법
- so 파일의 심볼을 지우기
iPhone
어뷰징 이슈
- 탈옥된 폰에서 아래와 같은 방법으로 어뷰징을 할 수 있음
공격방법 : 탈옥된 디바이스에서 gdb를 이용한 디버깅, jump 명령어로 내부함수를 직접호출하면 인터럽트가 발생할 때까지 해당 함수가 반복되어 곧바로 최고 레벨을 달성할 수 있습니다. (gdb) info functions ... (생략) ... 0x00023ebc LevelUp 0x000d3a08 GetItem ...(생략) ... (gdb) call LevelUp $1 = {<text variable, no debug info>} 0x23ebc <LevelUp> (gdb) jump LevelUp --> LevelUp() 함수 반복 수행으로 레벨200 달성 Continuing at 0x23ecc. (gdb) p (int) GetItem(20) --> 아이템 생성 $1 = 1 (gdb) p (int) GetItem(21) $2 = 1 (gdb) p (int) GetItem(22) $3 = 1
원인
- 실행 바이너리 파일에 심볼 정보가 남아있어서 발생하는 문제.
'보안 > 리버싱' 카테고리의 다른 글
.NET PublicKeyToken (0) | 2020.04.24 |
---|---|
[리버싱] Immunity Debugger Intro. (0) | 2013.07.23 |
[교육] 리버스 엔지니어링 교육 - Day 5 (0) | 2013.06.14 |
[교육] 리버스 엔지니어링 교육 - Day 4 (0) | 2013.06.13 |
[교육] 리버스 엔지니어링 교육 - Day 3 (0) | 2013.06.12 |