2017-10-19 5 views
-3

나는 안드로이드에 대한 자체 암호화 기능을 갖춘 앱을 개발하려고합니다.뿌리깊은 안드로이드 장치에서 disasembling을 피하기위한 자체 암호화 응용 프로그램

아이디어는 다음입니다 :

  • 응용 프로그램 ("! Hello World」의 예를 표시)이 기능을 수행해야하지만 ...
  • 완전히 저장된 응용 프로그램 코드 (부분적으로) 암호화, 즉"모든 암호화 할 수있는 것은 암호화되어야합니다. "올바른 방법으로 간단한 디스어셈블 (즉, 예를 들어 AES에 의해 암호화 됨)으로 읽을 수 없으므로 시스템에 임의의 명령/기호 또는 smth 부정확 함).
  • 앱의 "부분"은 실행 전에 해독되어야합니다.
  • 사용하지 않은 "부품"은 사용 후 해독해야합니다.
  • 위에서 언급 한 모든 작업은 앱 자체에서 수행해야합니다.

따라서 핵심 아이디어는 자체 암호화입니다.

나는 난독 화가 무엇인지 알고 있으므로 언급하지 마십시오. 사이드 앱과 같은 것. 나는 내 생애를 리버스 엔지니어링으로 보내지 않을 것입니다.)). 그래서 ...

  • Android (JAVA) 코드를 자동 암호화하는 올바른 방법은 무엇입니까?
  • 어떻게 위에서 언급 한 알고리즘을 구현할 수 있습니까? u는 그런 일 또는 어떤 링크/정보/기사/의사/아이디어

나는 것은 아이디어는 위대하고 정말 재미있다, 게다가 많은 사람들이 기꺼이 것을 할 수있는 경우

  • 코드 조각을 제공하십시오 앱을 보호하는 방법을 알아야합니다.

    [편집] 사용자 정의 ClassLoader 아이디어에 대해 @Pace@JimmyB에게 감사합니다. 나는 그것을 시행하려고 노력할 것이다. 또한 변덕스러운 엔진 개념을 제안한 @xalo에 대한 덕분에, 나는 그것이 내 목표를 훨씬 더 만족시킬 것이므로이 주제를 파헤 칠 것이다.

  • +0

    로 볼 수

    이 질문은이 사이트에 대한 너무 광범위하다. 당신은 아마 커스텀 클래스 로더를 만들고 싶을 것이다. – Pace

    +0

    클래스를로드 할 때 해독하는 사용자 정의 ['ClassLoader'] (https://developer.android.com/reference/java/lang/ClassLoader.html)를 사용하여 구현할 수 있습니다. 그러나 * 앱이 코드를 '해독'할 수 있다면 공격자/해커도 마찬가지입니다. – JimmyB

    +0

    사용자 정의 ClassLoader 아이디어를 주셔서 감사합니다. 이제는 내 질문이 너무 광범위하다는 것을 이해합니다. (( –

    답변

    1

    앱을 자체 암호화해서는 안되며 많은 보호를 위해 많은 복잡성이 추가됩니다.

    실제로 해커는 해독 루틴을 취소하거나 앱이 실행되면 메모리를 덤프해야합니다.

    Java/Android 앱의 역전 현상을 방지하는 가장 좋은 방법은 난독 화입니다. 또한 원격 변성 엔진 개념 https://media.defcon.org/DEF%20CON%2024/DEF%20CON%2024%20presentations/DEFCON-24-Amro-Abdelgawad-The-Remote-Metamorphic-Engine.pdf

    +0

    네, 맞습니다. 해커가 앱을 실행할 때마다 메모리를 덤프 할 수 있습니다.나는 그것이 사용자가 루트가없는 장치를 가지고 있으며 허가없이 (예를 들어 서버로부터) 암호화 된 응용 프로그램을 실행할 수있는 방법이 없다고 말한 것을 잊어 버렸습니다. 그래서 암호화는 복사 된 파일을 해체하는 것을 방지하기 위해 상황을 저장해야합니다. 내가 맞습니까? –