애플리케이션에는 Android를 우회하는 코드가 포함되어 있습니다. PC 없이 Framaroot를 통해 Android에서 루트 권한 얻기

/ 브레이크

Android 기기의 비밀번호나 패턴을 잊어버렸다고 해서 당황할 이유는 없습니다. 여러 가지 빠르고 간단한 옵션휴대전화나 태블릿을 잠금 해제하세요. 안드로이드 기반패턴이나 PIN이 기억나지 않는 경우

Google 계정 데이터 입력

스마트폰이나 태블릿이 다음을 통해 영구적으로 연결되어 있는 경우 무선 네트워크, 그러면 간단히 입력하여 보호 우회 문제를 해결할 수 있습니다. 이메일 주소그리고 비밀번호. 화면 잠금 해제 시도가 5회 실패하면 알림이 표시됩니다. 그것을 클릭하고 나타나는 창에 Google 계정 사용자 데이터를 입력하십시오.

비밀번호를 잊어버린 경우 어떻게 해야 하나요? 계정 Google? 지원의 도움을 받아 계정에 대한 액세스를 직접 복원하는 절차를 완료하세요.

하드 리셋을 통한 잠금 해제

이 방법을 사용하면 모든 개인 데이터가 삭제되고 스마트폰 시스템이 공장 설정으로 돌아갑니다(SD 카드 파일은 영향을 받지 않음). 절차를 수행하기 전에 사용자 정보를 복원할 수 있는 백업 파일을 가지고 있는 것이 좋습니다.

재설정하는 가장 쉬운 방법은 장치 설정에 있는 유틸리티를 사용하는 것입니다. 시스템에 대한 접근이 차단되었으므로 다음 조치를 취해야 합니다.


각 사용자 작업(PIN 코드, 그래픽 키 생성)은 특정 파일을 생성하여 시스템에 반영됩니다. 비밀번호 데이터를 삭제하면 사용자 정보를 잃지 않고 기기의 잠금을 해제할 수 있다는 결론을 내릴 수 있습니다.

실제로 많은 사용자가 컴퓨터를 통해 Android의 잠금을 해제하는 방법을 궁금해합니다. 이렇게 하려면 ADB 유틸리티와 USB 디버깅 모드에 연결된 가젯이 필요합니다. 다음 알고리즘을 따르십시오.


adb shellrm /data/system/gesture.key

rm /data/system/locksettings.db;

rm /data/system/locksettings.db-wal;

rm /data/system/locksettings.db-shm;

장치를 다시 깜박이는 중

어떤 이유로든 Android를 해킹하는 다른 방법을 사용할 수 없는 경우 a. 이는 여러 가지 방법으로 수행할 수 있습니다.

  • USB 케이블을 사용하여 컴퓨터를 통해;
  • 모든 Android 기기의 복구 메뉴를 통해. 펌웨어 파일을 휴대폰이나 태블릿의 메모리에 직접 다운로드하려면 컴퓨터를 사용해야 합니다.

안에 이 경우다운로드가 가능할 뿐만 아니라 공식 펌웨어뿐만 아니라 디자인, 보호 기능, 드라이버, 유틸리티 등을 변경할 수 있는 다양한 사용자 정의 옵션도 있습니다.

Gesture.key 제거(그래픽 키를 사용한 잠금에만 작동)

이 방법을 사용하여 Android 휴대폰이나 태블릿을 잠금 해제하는 것은 루트 권한이 없으면 불가능합니다. 이러한 조건을 충족하지 않으면 보호를 우회할 수 있는 다른 방법을 선택하십시오. 그래픽 키다음과 같이 재설정됩니다.


위에서 설명한 많은 방법은 부트로더를 잠금 해제하지 않으면 불가능합니다. 이렇게 하면 루트 권한을 얻고 자신만의 펌웨어 버전이나 사용자 정의 복구를 설치할 수 있으므로 Android 잠금을 해제하기 전에 부트로더 보호를 제거해야 합니다. PIN 코드/패턴을 잊어버린 상황에 대비하여 즉시 이 작업을 수행하는 것이 좋습니다.

잠금 해제 알고리즘:


그런 다음 부트로더 활성화 프로세스가 시작되고 장치 화면에 나타납니다. 프로세스가 완료될 때까지 기다린 다음 장치를 다시 시작하면 됩니다. 부트로더 잠금 해제가 완료되었습니다. 위에 설명된 팁은 모든 사람이 자신만의 문제 상황을 가질 수 있으므로 거의 모든 경우에 적합합니다. 우리의 조언이 문제를 빠르고 정확하게 제거하는 데 도움이 되기를 바랍니다.

nexus7_2013의 예를 사용하여 컴퓨터의 도움 없이 수퍼유저 권한을 얻습니다.

지침

  • 1. Towelroot 애플리케이션을 다운로드합니다.
  • 2. 설정/보안 섹션에서 알 수 없는 소스로부터의 설치를 허용하는 상자가 선택되어 있는지 확인하세요.
  • 3.다음 경고에 주의하지 말고 설치하십시오.
  • {
    이 응용 프로그램을 설치하지 않는 것이 좋습니다.
    수건 뿌리
    Android 보안을 우회하는 코드가 포함되어 있습니다.
    (확인란) 무시하고 설치(선택 취소)
    (버튼) 설치하지 않음
    (버튼) 어쨌든 설치
    }
  • 4. 해당 상자를 선택하고 해당 버튼을 클릭하십시오.
  • 5. 애플리케이션을 열고 다음 버튼을 찾으세요.
    "Ra1n으로 만들어줘"
  • 6. 위치를 주의 깊게 기억합니다. 그 이후에는 Talkback을 일시 중지해야 합니다. 그렇지 않으면 오류가 발생합니다.
  • 7. 전역 컨텍스트 메뉴를 통해 TalkBack을 일시적으로 언로드합니다.
  • 8. 포인트 (5 및 6)에서 기억한 장소를 활성화합니다.
  • 여기에는 이중 탭이 필요하지 않으며 한 번만 탭하면 충분합니다.
  • 보는 사람이 가까이에 있다면 그에게 이 간단한 작업을 수행하도록 요청하는 것이 가장 좋습니다.
  • 9. 약 10~15초 정도 기다렸다가 장치가 재부팅되지 않으면 직접 재부팅합니다.
  • 10. supersu 애플리케이션을 설치합니다.
  • 11. supersu를 실행합니다. 그리고 우리는 바이너리 파일 업데이트 제안에 동의합니다.
  • 12. 모든 단계가 올바르게 완료되면 이제 전화기에서 수퍼유저 권한을 사용할 수 있습니다.

참고:

  • Towelroot를 지원하는 장치 목록입니다. 위치한
  • supersu를 시작한 후. 메시지를 받았습니다 -
    "바이너리 파일을 업데이트하지 못했습니다"
    그런 다음 장치를 다시 시작하고 다시 시도하십시오.
  • 이것이 도움이 되지 않으면 수퍼유저 권한을 얻지 못했을 가능성이 높습니다. 이를 수행하려면 시력이 있는 사람의 도움을 받아 "Make it ra1n" 버튼을 활성화하여 다시 시도하십시오.
  • 수퍼유저 권한을 설치하기 전에 장치의 잘못된 사용 및 보증 무효화와 관련된 모든 문제를 주의 깊게 연구하십시오.

보안 차단으로 인해 Android에 앱과 게임을 설치할 수 없습니다.. 이것은 문제가 되지 않습니다. 이 기사에서는 설치에 대한 액세스를 여는 방법을 배웁니다.

인터넷에서 게임이나 애플리케이션을 다운로드하여 Android에 설치하려는 경우 다음을 볼 수 있습니다. 안드로이드 화면다음과 같은 메시지가 나타납니다. "보안상의 이유로 기기에서 출처를 알 수 없는 애플리케이션 설치가 차단되었습니다." 다른 휴대폰, 컴퓨터, 노트북, 태블릿 또는 기타 장치에서 Bluetooth 또는 Wi-Fi를 통해 애플리케이션을 받은 경우에도 설치가 차단될 수 있습니다. 물론 이 모든 작업은 Android의 안전을 위해 수행됩니다. 이제 휴대폰을 차단하고 잠금 해제를 위해 소유자로부터 돈을 갈취할 수 있는 바이러스가 포함된 수많은 애플리케이션을 다운로드하고 설치할 수 있기 때문입니다. 새 스마트폰이나 태블릿을 사용하는 경우 안드로이드 버전, 그러면 아래에 해당 페이지에 대한 링크가 표시됩니다. 자세한 정보알 수 없는 애플리케이션 설치 또는 차단에 대해 알아보세요.

알 수 없는 소스의 애플리케이션과 게임을 Android에 절대 설치하지 마세요. 특히 인터넷에서 다운로드한 경우에는 더욱 그렇습니다. 그러나 파일이 신뢰할 수 있는 소스에서 왔거나 신뢰할 수 있는 다른 Android에서 Bluetooth를 통해 수신한 애플리케이션이라는 것을 알고 있는 경우 알 수 없는 애플리케이션의 설치를 차단 해제하고 Android에 설치를 계속할 수 있습니다.

이제 보자 안드로이드에 알 수 없는 소스의 애플리케이션 설치를 허용하는 방법. 애플리케이션이나 게임을 설치하기 전에 Android 설정으로 이동하여 보안 항목을 찾은 다음 해당 항목을 찾으십시오. 알 수 없는 출처그리고 옆에 있는 체크박스를 선택하세요. 이제 보안상의 이유로 차단된 알 수 없는 소스의 애플리케이션을 Android에 설치할 수 있습니다. 그런 다음 상자를 다시 선택 취소하면 원치 않는 응용 프로그램의 설치가 다시 차단됩니다.

또한 이미 설치를 시작했는데 보안상의 이유로 장치에 설치가 금지된다는 메시지가 표시되는 경우 즉시 설치를 허용할 수 있습니다. 화면에 메시지가 표시되면 설정 링크도 있습니다. 이를 클릭하면 즉시 보안 항목으로 이동하여 항목 옆의 확인란을 선택할 수 있습니다. 알 수 없는 출처시작한 설치를 계속하세요. 설치 후에는 보안 설정의 확인란을 저장하지 마십시오. 즉, 매번 응용 프로그램 설치를 허용해야 합니다.

바이러스 감염 위험이 없다고 확신하지 않는 한 출처를 알 수 없는 애플리케이션을 설치하지 마세요. 애플리케이션은 귀하의 계정에서 돈을 공제하거나 장치를 차단하거나 장치를 손상시킬 수 있습니다.

이 기사가 도움이 되었는지 여부에 대한 리뷰를 남기는 것을 잊지 마세요. 동일한 내용을 얻을 수 있도록 장치 모델을 표시하십시오. 유용한 정보안드로이드 사용자를 위한 것입니다.

  • 이 글이 도움이 되셨기를 바라며 정보를 찾으셨기를 바랍니다. 안드로이드에 알 수 없는 소스의 차단된 애플리케이션을 설치하는 방법.
  • 상호 지원을 제공하고 유용한 팁을 공유해 주시기 바랍니다.
  • 귀하의 응답, 상호 지원 및 유용한 조언에 감사드립니다 !!!


06-08-2019
00시 48분
메시지:
안녕하세요, "Android에서 애플리케이션과 게임을 설치할 때 알 수 없는 출처의 설치가 기기에서 차단된다는 메시지가 나타납니다."라는 주제에 대해 설명하신 모든 내용입니다. 권장사항을 읽어보세요 d

13-06-2019
9시 19분
메시지:
관리자를 제거하는 방법은 무엇입니까?

06-01-2018
오후 6시 24분
메시지:
감사합니다! 음, 문제가 있습니다. 그들이 다음과 같이 쓰면 어떻게 해야 하는지 알려주실 수 있나요? 패키지 구문 분석 중 오류가 발생했습니다. 무엇을 해야 할까요?

02-01-2018
15시 46분
메시지:
도움말, 휴대전화에서 Play Market이 아닌 애플리케이션 설치를 차단했습니다. Chrome에서 다운로드했는데 열기를 클릭했지만 설치되지 않습니다.

18-12-2017
11시 11분
메시지:
안녕하세요, "Android에서 애플리케이션과 게임을 설치할 때 알 수 없는 출처의 설치가 기기에서 차단된다는 메시지가 나타납니다."라는 주제에 대해 설명하신 모든 내용입니다. 추천글도 읽어보고 똑같이 해봤는데

31-10-2017
오후 11시 05분
메시지:
문제는 내 LG L70이 금지 사항을 제거하기 위한 확인란을 선택하는 것조차 허용하지 않는다는 것입니다...

26-09-2017
00시 27분
메시지:
체크 표시를 클릭할 수 없습니다. 체크 표시를 클릭했는데 켜지지 않았습니다.

11-09-2017
03시 37분
메시지:
또는 다음과 같이 기사를 작성할 수도 있습니다. 응용 프로그램이나 게임을 설치하기 전에 다음으로 이동하십시오. 안드로이드 설정보안 항목을 찾은 다음 출처를 알 수 없는 항목을 찾아 옆에 있는 확인란을 선택하세요.

28-03-2017
.. 그리고 수명이 길어집니다 .. 6 문단에 콧물이 없습니다.
메시지:
20시 6분 '알 수 없는 출처의 소프트웨어 설치' 옆에 확인란이 있지만 전화기에서 여전히 설치를 차단합니다.메이주폰

17-12-2016
참고3. 괜찮나요? 나는 전에 Meizu를 상대한 적이 없습니다.
메시지:
20시 52분 그런데 또 다른 문제가 있는데, 15~30분쯤 지나도 이 항목은 항상 출처를 알 수 없는 항목이 체크되어 있습니다. 내가 하지 않은 일 - 재설정부터 공장 설정까지,바이러스 백신 프로그램

05-12-2016
설치했는데 계속 틱틱거리고 틱틱거리네요. 돕다!
메시지:
오후 10시 52분

05-12-2016
소피아, 설정을 통해 애플리케이션을 제거해 보세요. 애플리케이션이 비활성화되거나 완전히 제거될 수 있습니다.
메시지:
오후 10시 05분

31-10-2016
돕다! 출처를 알 수 없는 게임을 다운로드했는데 삭제할 수 없습니다((
메시지:
21시 47분

(펌웨어 버그로 인해) 설정에서 "보안" 탭에 접근할 수 없다는 문제가 있습니다. 이 탭에 들어가면 슬레이브에게 던집니다. "설정 애플리케이션이 응답하지 않습니다. 설정을 통해 "왼쪽" 애플리케이션 설치를 활성화하지 않으려면 어떻게 해야 합니까? PC를 사용하지 않고 Android의 루트 권한을 얻고 배우기 어려운 소프트웨어 도구를 사용해야 하는 필요성은 상당히 높습니다.이용 가능한 기회

. 이 기사에서는 Framaroot Android 앱을 사용하여 간단한 두 단계만으로 수퍼유저 권한을 얻는 방법을 설명합니다.

설명된 루트 권한 획득 방법의 가장 큰 장점은 우선 단순성과 이 프로세스를 완료하는 데 소요되는 짧은 시간입니다. 우리는 지침을 따르지만 먼저 중요한 경고가 있습니다.

중요한! 아래에 설명된 조작에는 특정 위험이 따릅니다! 아래 지침을 따르는 것을 포함하여 각 조치는 사용자 자신의 위험과 책임 하에 수행됩니다. 자원 관리는 가능한 부정적인 결과에 대해 책임을 지지 않습니다.

Framarut 애플리케이션은 기기의 메모리나 메모리 카드에 다운로드하거나 복사한 후 완전히 일반적인 apk 파일입니다. 설치에는 특별한 조치가 필요하지 않으며 모든 것이 표준입니다.

2단계: 루트 권한 얻기

우리는 Android 앱이 실제로 얼마나 쉬운지 명확하게 보여주는 여러 기사를 소개했습니다. 이를 위해서는 디스어셈블러도 필요하지 않으며 Java 및 Smali 언어에 대한 피상적인 지식만 있으면 됩니다. 그러므로 만일 귀하의 신청서꽤 인기가 많을 것입니다. 도난당할 것이며 간단한 조작을 통해 유료 기능이 활성화될 것입니다. 그리고 광고를 사용하여 수익을 창출하기로 결정하면 꺼집니다.

애플리케이션을 보호하는 것은 어렵지만 가능합니다. 우선, 바로 그만한 가치가 있습니다 Pro/Lite 배포 모델 포기. 이 애플리케이션은 스마트폰에서 제거하기가 매우 쉽기 때문에 도둑이 해당 애플리케이션을 한 번만 구매하면 그대로 배포될 수 있습니다. 둘째, 조심해야 할 것 코드 역방향 보호. Java 코드를 디컴파일하는 것은 쉽고 바이너리 코드를 변경하는 데 특별한 기술이나 도구가 필요하지 않습니다. 셋째, 해킹에 성공하더라도 애플리케이션이 작동하지 않는지 확인해야 합니다. 그런 다음 해커는 두 가지 문제를 동시에 해결해야 합니다. 즉, 애플리케이션을 해킹하고 해킹된 버전이 작동하도록 해야 합니다.

그래서 우리는 Pro 버전을 포기하고 싸움을 시작합니다.

코드 숨기기 및 난독화

애플리케이션 코드를 역방향으로부터 보호하는 가장 좋은 방법은 난처즉, 바이트코드를 난독화하여 상대방이 이해하기가 참기 어렵게 만드는 것입니다. 이를 수행할 수 있는 몇 가지 도구가 있습니다. 가장 간단하지만 여전히 효과적인 것이 Android Studio에 포함되어 있습니다. 이것 프로가드.

활성화하려면 build.gradle 파일의 android → buildTypes → release 섹션에 minifyEnabled true 줄을 추가하세요.

android(...buildTypes(release(minifyEnabled true)...))

기계적 인조 인간(

. . .

빌드 유형(

풀어 주다 (

minifyEnabled 참

. . .

그 후 Android Studio는 ProGuard를 통해 모든 "릴리스" 빌드를 전달하기 시작합니다. 결과적으로 애플리케이션은 (사용되지 않는 코드 제거로 인해) 더욱 컴팩트해지고 역방향에 대한 어느 정도의 보호도 받게 됩니다. ProGuard가 모든 내부 클래스, 메소드 및 필드의 이름을 한두 글자 조합으로 대체한다는 의미에서 "일부"입니다. 이는 실제로 디컴파일/디스어셈블된 코드를 이해하기 훨씬 더 어렵게 만듭니다.


다음 단계 - 문자열 암호화. 이는 식별자, 키, REST API 엔드포인트 등 민감한 데이터를 애플리케이션 내에 저장하는 경우 특히 유용합니다. 이 모든 것은 해커가 코드를 탐색하거나 코드에서 중요한 정보를 추출하는 데 도움이 됩니다.

문자열을 암호화할 수 있습니다 다른 방법으로, 예를 들어 Stringer 또는 DexGuard 도구를 사용합니다. 장점: 문자열 암호화를 구현하기 위해 기존 코드를 완전히 자동으로 수정합니다. 단점: 기업에게는 합리적인 가격이지만 독립 개발자에게는 너무 높은 가격입니다.

그러므로 우리는 그것을 스스로 하려고 노력할 것입니다. 가장 간단한 경우 Java를 사용한 문자열 암호화는 다음과 같이 수행됩니다.

공개 정적 바이트 encryptString(문자열 메시지, SecretKey 비밀)은 예외를 발생시킵니다( Cipher cipher = null; cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, secret); return cipher.doFinal( message.getBytes("UTF-8"));

공개 정적 바이트 encryptString(문자열 메시지, SecretKey 비밀)에서 예외가 발생합니다(

암호 암호 = null ;

암호 .init (암호 .ENCRYPT_MODE, 비밀) ;

암호 반환 .doFinal ( message . getBytes ( "UTF-8" ) ) ;

그리고 디코딩은 다음과 같습니다.

public static String decryptString(byte cipherText, SecretKey secret)은 예외를 발생시킵니다( Cipher cipher = null; cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, secret); return new String(cipher) .doFinal(cipherText), "UTF-8" )

공개 정적 문자열 decryptString(바이트 cipherText, SecretKey 비밀)에서 예외가 발생합니다(

암호 암호 = null ;

cipher = 암호 .getInstance ( "AES/ECB/PKCS5Padding" ) ;

cipher .init ( Cipher . DECRYPT_MODE , 비밀 ) ;

새로운 문자열을 반환합니다 (cipher . doFinal ( cipherText ) , "UTF-8" ) ;

키를 생성하려면 한 줄이면 충분합니다.

공개 정적 SecretKey generateKey(문자열 비밀번호)가 예외를 발생시킵니다( return secret = new SecretKeySpec(password.getBytes(), "AES"); )

공개 정적 SecretKey generateKey(문자열 비밀번호)에서 예외가 발생합니다(

return secret = new SecretKeySpec(password.getBytes(), "AES");

요점은 모든 문자열을 입력으로 사용하고 암호화된 버전을 출력으로 생성하는 간단한 데스크탑/모바일 애플리케이션을 Java로 작성하는 것입니다. 다음으로, 이러한 문자열을 원래 문자열 대신 기본 애플리케이션에 삽입하고 해당 문자열이 액세스되는 위치에 decryptString() 함수를 호출합니다.

결과적으로 공격자는 응용 프로그램을 디컴파일해도 암호화된 문자열을 볼 수 없습니다. 그러나 물론 그는 암호기의 디컴파일된 코드를 기반으로 간단한 암호해독기를 작성할 수 있습니다. 즉, 이것이 만병통치약은 아니지만 문자열 암호화로 인해 또 다른 복잡성이 추가됩니다.

더 나아가 AppSolid와 같은 포괄적인 Android 애플리케이션 보호 도구 중 하나를 사용할 수도 있습니다. 역시 비용이 많이 들지만 전체 애플리케이션을 암호화할 수 있습니다. 이로 인해 많은 리버서가 겁을 먹을 수 있지만 유료 Java 디컴파일러 JEB를 포함하여 이러한 보호 기능을 자동으로 제거할 수 있는 도구가 많이 있습니다.

Android용 모듈형 애플리케이션 작성 기사에서 이미 쓴 것처럼 애플리케이션을 여러 개의 작은 모듈로 나눌 수도 있습니다. 이는 그 자체로는 보호 방법이 아니며 리버서의 작업을 거의 방해하지 않습니다. 그러나 그것은 다양하게 깨질 것입니다 자동화 시스템응용 프로그램 크래킹. 그들은 모듈에 있는 코드를 어디에서 찾을 수 있는지 이해하지 못할 것입니다.

마지막으로, 로거에 대한 모든 호출, 즉 Log.d(), Log.v() 등에 대한 모든 호출을 코드에서 제거(주석 처리)해야 합니다. 그렇지 않으면 공격자는 이 정보를 사용하여 애플리케이션의 논리를 이해할 수 있습니다.

해킹된 애플리케이션 충돌

좋아요, 우리는 리버서의 삶을 조금 망쳤습니다. 이제 다시 할 시간입니다! 하지만 앱이 해킹되었는지 어떻게 알 수 있나요? 더 정확하게는 어떻게 스스로 알아낼 수 있습니까? 결국, "해킹됨"과 "해킹되지 않음"이라는 개념은 우리 머릿속에만 존재합니다. 즉, 이는 알고리즘으로 설명할 수 없는 상당히 높은 수준의 개념입니다.

그렇습니다. 그러나 그렇지 않습니다. 사실 APK 파일 내부에는 다음을 저장하는 메타데이터 세트가 있습니다. 체크섬패키지의 모든 파일과 메타데이터 자체는 개발자 키로 서명됩니다. 애플리케이션을 변경하고 다시 패키지하면 패키지 메타데이터가 변경되고 패키지에 다시 서명해야 합니다. 그리고 리버서에는 개발자 키가 없고 가질 수도 없기 때문에 무작위로 생성된 개발자 키나 소위 테스트 키를 사용합니다.

Android 자체는 이러한 애플리케이션을 쉽게 삼킬 수 있지만(가능한 모든 Android 개발자의 모든 디지털 서명 데이터베이스를 유지하지는 않습니다), 우리는 자체 애플리케이션을 보유하고 있습니다. 디지털 서명, 우리는 그것을 확인할 수 있습니다!

디지털 서명 확인

사실 방법은 아주 간단합니다. 패키지의 현재 디지털 서명 키 해시를 수신하고 이를 이전에 저장한 것과 비교할 코드를 애플리케이션에 삽입해야 합니다. 일치합니다. 애플리케이션이 다시 패키징(및 해킹)되지 않았습니다. 아니요. 경보가 울립니다.

시작하려면 다음 코드를 애플리케이션에 삽입하세요(깊이 숨길수록 좋습니다).

public static String getSignature(Context context) ( String apkSignature = null; try ( PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES); for (서명 서명: packageInfo.signatures) ( MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); apkSignature = Base64.encodeToString(md.digest(), Base64.DEFAULT) Log.e("DEBUG", " + apkSignature); ) ) catch (예외 e) () return apkSignature )

공개 정적 문자열 getSignature(컨텍스트 컨텍스트)(

문자열 apkSignature = null ;

노력하다 (

PackageInfo packageInfo = context.getPackageManager().getPackageInfo(

context.getPackageName(),

PackageManager.GET_SIGNATURES

for (서명 서명 : packageInfo .signatures ) (

MessageDigest md = MessageDigest .getInstance ( "SHA" ) ;

md.update(signature.toByteArray());

apkSignature = Base64 .encodeToString (md .digest () , Base64 .DEFAULT ) ;

Log .e ("DEBUG" , "SIGNATURE: " + apkSignature ) ;

) 잡기 (예외 e) ( )

apkSignature 반환 ;

애플리케이션을 빌드하고 실행한 후 실행 로그를 살펴보세요. 거기에서 SIGNATURE: 478uEnKQV+fMQT8Dy4AKvHkYibo= 줄을 볼 수 있습니다. 이것이 해시입니다. 이는 기억할 뿐만 아니라 애플리케이션 코드에 상수로 배치되어야 합니다(예: SIGNATURE라는 이름 아래). 이제 코드에서 Log.e... 줄을 제거하고 다음 메서드를 추가하세요.

public static boolean checkSignature(Context context) ( return SIGNATURE.equals(getSignature(context)); )

공개 정적 부울 checkSignature(컨텍스트 컨텍스트)(

SIGNATURE .equals( getSignature(컨텍스트))를 반환합니다.

그는 저장된 해시를 키의 해시로 확인합니다. 지금은신청서에 서명했습니다. 이 함수는 디지털 서명이 귀하의 것인 경우(애플리케이션이 재구축되지 않은 경우) true를 반환하고, 수정된 경우 false를 반환합니다. 두 번째 경우에 수행할 작업은 귀하에게 달려 있습니다. os.exit(0)을 사용하여 간단히 응용 프로그램을 종료하거나 초기화되지 않은 객체에 대해 메서드를 호출하거나 존재하지 않는 배열 값에 액세스하여 충돌을 일으킬 수 있습니다.

하지만 기억하세요. 공격자는 단순히 디지털 서명 확인 코드를 잘라낼 수 있으며 결코 작동하지 않습니다(아래 제공된 코드에도 해당). 따라서 눈에 띄지 않는 곳에 숨겨두고, 위와 같이 원래 키의 해시를 암호화하세요.


설치 소스 확인

또 다른 보호 방법은 애플리케이션이 설치된 위치를 찾는 것입니다. 여기서의 논리는 간단합니다. 설치 소스가 Play 스토어인 경우 모든 것이 정상이며 이는 패키지되지 않은 원본 애플리케이션입니다. 그렇지 않은 경우 Varez는 포럼에서 다운로드하여 메모리 카드나 암시장에서 설치했습니다.

한 줄로 애플리케이션이 설치된 위치를 확인할 수 있으며 이를 수행하는 함수 자체는 다음과 같습니다.

public static boolean checkInstaller(Context context) ( final String installer = context.getPackageManager().getInstallerPackageName(context.getPackageName()); return installer != null && installer.startsWith("com.android.vending"); )

공개 정적 부울 checkInstaller(컨텍스트 컨텍스트)(

최종 문자열 설치 프로그램 = context .getPackageManager() .getInstallerPackageName(context .getPackageName()) ;

설치 프로그램 반환 != null & 앰프; & 앰프; installer.startsWith("com.android.vending");

평소와 같이: 사실 – 모든 것이 괜찮습니다. 거짓 – 휴스턴, 문제가 있습니다.

에뮬레이터 결정

일부 애플리케이션 역방향 방법에는 에뮬레이터 사용이 포함됩니다. 따라서 애플리케이션이 가상 환경에서 실행 중인지 확인하는 코드를 추가하면 유용할 것입니다. 이는 일부 시스템 변수의 값을 읽어서 수행할 수 있습니다. 예를 들어, 표준 안드로이드 에뮬레이터 Studio는 다음 변수와 값을 설정합니다.

ro.hardware=금붕어 ro.kernel.qemu=1 ro.product.model=sdk

ro .hardware = 금붕어

ro .kernel .qemu = 1

ro .product .model = SDK

따라서 이러한 변수의 값을 읽은 후 코드가 에뮬레이터에서 실행된다고 가정할 수 있습니다.

public static boolean checkEmulator() ( try ( boolean goldfish = getSystemProperty("ro.hardware").contains("goldfish"); boolean emu = getSystemProperty("ro.kernel.qemu").length() > 0; 부울 SDK = getSystemProperty("ro.product.model").contains("sdk"); if (emu || goldfish || sdk) ( return true; ) ) catch (Exception e) () return false ) private static String getSystemProperty ( 문자열 이름) 예외 발생( Class sysProp = Class.forName("android.os.SystemProperties"); return(String) sysProp.getMethod("get", new Class(String.class)).invoke(sysProp, new Object( 이름));

공개 정적 부울 checkEmulator()(

노력하다 (

© 2024 ermake.ru - PC 수리 정보 - 정보 포털