개발관련/other

APK 파일의 리버스 엔지니어링을 피하는 방법

Rateye 2021. 11. 3. 10:31
728x90
반응형
질문 : APK 파일의 리버스 엔지니어링을 피하는 방법은 무엇입니까?

Android 용 결제 처리 앱 을 개발 중이며 해커가 APK 파일의 리소스, 자산 또는 소스 코드에 액세스하지 못하도록하고 싶습니다.

누군가 .apk 확장자를 .zip으로 변경하면 압축을 풀고 모든 앱의 리소스와 자산에 쉽게 액세스 할 수 있으며 dex2jar 및 Java 디 컴파일러를 사용하여 소스 코드에도 액세스 할 수 있습니다. Android APK 파일을 리버스 엔지니어링하는 것은 매우 쉽습니다. 자세한 내용은 스택 오버플로 질문 APK 파일에서 프로젝트로 리버스 엔지니어링을 참조하십시오.

Android SDK와 함께 제공되는 Proguard 도구를 사용했습니다. 서명 된 키 저장소 및 Proguard를 사용하여 생성 된 APK 파일을 리버스 엔지니어링하면 난독 화 된 코드가 표시됩니다.

그러나 Android 구성 요소의 이름은 변경되지 않고 앱에서 사용되는 키-값과 같은 일부 코드는 변경되지 않습니다. Proguard 문서에 따라이 도구는 Manifest 파일에 언급 된 구성 요소를 난독화할 수 없습니다.

이제 내 질문은 다음과 같습니다.

  1. 어떻게 하면 안드로이드 APK의 리버스 엔지니어링을 완전히 방지할 수 있습니까? 이것이 가능한가요?
  2. 어떻게 하면 앱의 모든 리소스, 자산 및 소스 코드를 보호하여 해커들이 APK 파일을 어떠한 방식으로도 해킹할 수 없도록 할 수 있을까요?
  3. 해킹을 더 어렵게 하거나 아예 불가능하게 만드는 방법은 없을까? 내 APK 파일의 소스 코드를 보호하기 위해 무엇을 더 할 수 있습니까?
답변

1. Android APK의 리버스 엔지니어링을 완전히 피하려면 어떻게해야합니까? 이것이 가능한가?

AFAIK, 리버스 엔지니어링을 완전히 피하는 트릭은 없습니다.

또한 @inazaruk는 다음과 같이 매우 잘 말했습니다. 코드에 무엇을하든 잠재적 인 공격자는 자신이 가능하다고 판단하는 방식으로 코드를 변경할 수 있습니다. 기본적으로 애플리케이션이 수정되지 않도록 보호 할 수 없습니다. 그리고 거기에 넣은 모든 보호 기능을 비활성화 / 제거 할 수 있습니다.

 

2. 해커가 어떤 식 으로든 APK 파일을 해킹 할 수 없도록 모든 앱의 리소스, 자산 및 소스 코드를 보호하려면 어떻게해야합니까?

하지만 해킹을 더 어렵게 만들기 위해 다른 트릭을 할 수 있습니다. 예를 들어 난독 화를 사용합니다 (Java 코드 인 경우). 이것은 일반적으로 리버스 엔지니어링을 상당히 느리게합니다.

 

3. 해킹을 더욱 어렵게하거나 불가능하게 만들 수있는 방법이 있습니까? APK 파일의 소스 코드를 보호하려면 어떻게해야하나요?

모두가 말했듯이, 아시다시피 100 % 보안은 없습니다. 하지만 구글이 내장 한 안드로이드의 시작점은 프로 가드 다. 공유 라이브러리 를 포함 할 수있는 옵션이있는 경우 파일 크기, 통합 등을 확인하기 위해 필요한 코드를 C ++에 포함 할 수 있습니다. 모든 빌드에서 APK의 라이브러리 폴더에 외부 네이티브 라이브러리를 추가해야하는 경우 사용할 수 있습니다. 아래 제안으로.

프로젝트 폴더의 "libs"로 기본 설정되는 기본 라이브러리 경로에 라이브러리를 넣으십시오. 'armeabi' 타겟에 대한 네이티브 코드를 빌드했다면 libs / armeabi 아래에 두십시오. armeabi-v7a 로 빌드 된 경우 libs / armeabi-v7a 아래에 두십시오.

<project>/libs/armeabi/libstuff.so
출처 : https://stackoverflow.com/questions/13854425/how-to-avoid-reverse-engineering-of-an-apk-file
728x90
반응형