• 1나루토매니아
  • 2뱅이
  • 3푸타코타
  • 4완벽그자체
  • 5해삼
  • 1뱅이
  • 2나루토매니아
  • 3알짜배기
  • 4뱅이
  • 5빙그레우유
[어플질문] 어플 크랙은 어떻게 하나요?
연속출석 :
1일 랭킹 : 0위 소령4
26%
26% (357 /1395)
  • 댓글 2 |
  • 추천 0 |
  • 조회 7344 |
  • 2012-05-29 (화) 22:50
    일단 어플 크랙하는 방법이나 프로그래밍 관련한 지식이 전무합니다..

    Game Killer 2.31을 크랙하고자 하는데 어떻게 해야될까요?

    직접 가르쳐주는게 번거로우면 본인이 배운 사이트 주소를 가르쳐주셔도 고맙겠습니다.

    그리고 혹시라도 연습삼아 직접 해 주실 수 있다면 정말 고맙겠습니다.

    게임 가디언, 게임 CIH, 게임 킬러 다 써봤지만 최신 버전 기준으로 가장 성능이 뛰어난건 역시 게임 킬러인 것 같네요.

    꼭 크랙하고 싶습니다. 핵심 기능이 정품 인증한 사용자만 쓸 수 있게 되어있어요 ㅠㅠ
    채택된답변 Fana 2012-05-29 (화) 23:48:13
    복잡합니다.....
    Android DRM Apps Crack 방법 
     
    짧은 지식이지만 많은 분들과 공유하고자 크랙 방법을 보여주고자 하는 것이니 대부분 이런 식으로 크랙을 하면 됩니다.
     
    이 글을 보신다면 기본적으로 디버깅 툴인 apktool 이나 apk-manager 를 통해 APK 디컴파일 및 컴파일을 하실 수 있는 분들이라고 생각됩니다.
     
    먼저 단말기에서 런처에서 실행하면 작동되는 라이센스 체크 부분을 디컴파일되어 License 체크하는 루틴을 찾아야합니다.

     
    com/cp/app/MainActivity$2.smali 에서 checkLicense() 를 호출하는 루틴을 찾았습니다.
     
    .method public run()V
        .locals 2
      
        .prologue
        .line 100
        invoke-static {}, Landroid/os/Looper;->prepare()V
      
        .line 102
        :try_start_0
        iget-object v0, p0, Lcom/cp/app/MainActivity$2;->this$0:Lcom/cp/app/MainActivity;
      
        iget-object v0, v0, Lcom/cp/app/MainActivity;
        ->licenseAuthenticator:Lcom/verizon/vcast/apps/LicenseAuthenticator;
      
        sget-object v1, Lcom/cp/app/MainActivity;->verizonAppKeyword:Ljava/lang/String;
      
        # checkLicense 호출해서 v0으로 결과값을 반환하고 있네요.
        invoke-virtual {v0, v1}, Lcom/verizon/vcast/apps/LicenseAuthenticator;
                                                        ->checkLicense(Ljava/lang/String;)I
        move-result v0
      
        .line 103
        iget-object v1, p0, Lcom/cp/app/MainActivity$2;->this$0:Lcom/cp/app/MainActivity;
      
        # checkLicense에서 v0으로 얻은 결과값을 isDRMDone() 보내서 v0으로 결과값을 반환 
        invoke-virtual {v1, v0}, Lcom/cp/app/MainActivity;->isDRMDone(I)Z
        move-result v0
      
        # isDRMDone() 에 얻은 v0의 결과값 에러 그리고 정상
        if-eqz v0, :cond_0
      
        # 이후 코드들...
     
    결국 마지막 if-eqz 문을 보면 v0에 0과 1의 결과 값이고 isDRMDone() 부분을 보면 v0에 입력되는 것은 0 또는 1 인것을 확인할 수 있습니다. 그럼 checkLicense() 호출에서 무조건 1 값을 반환하도록 하면 간단히 해결됩니다.
     
    위에 보면
    invoke-virtual {v0, v1}, Lcom/verizon/vcast/apps/LicenseAuthenticator;
                                                    ->checkLicense(Ljava/lang/String;)I
     
    문장에서 Lcom/verizon/vcast/apps/LicenseAuthenticator;->checkLicense()
    를 보고 com/verizon/vcast/apps/LicenseAuthenticator.smali 파일의 내용을 살펴보면

    checkLicense() 메소드 루틴 부분을 쉽게 찾을 수 있습니다.
     
    .method public declared-synchronized checkLicense(Ljava/lang/String;)I
        .locals 10
        .parameter "keyword"
      
        .prologue
          
        # 무조건 v0에 1값을 넣고 v0을 반환하고 호출을 종료하도록 시작 부분에 코드를 삽입합니다.
        # 그후 코드는 무시되니 신경 쓰지 맙시다.
     
        const/4 v0, 0x1
        return v0
      
        const/16 v9, 0x64
      
        const-string v7, "checkLicense() finished.  Trying to shutDownLicenseService()"
      
        const-string v7, "LicenseAuthenticator"
      
        .line 256
        monitor-enter p0
      
        :try_start_0
        const-string v7, "LicenseAuthenticator"
      
        const-string v8, "begin checkLicense()"
      
        # 이후 코드들.....
     
    -----------------------------------------------------------------
     
    이렇게 수정하고 컴파일하면 무조건 라인센스가 1이 되는 어플이 될겁니다.
     
    시간적 여유가 되면 보따리 조금씩 풀어 드릴께요.
    조소필 2012-05-30 (수) 17:46:24
    크랙파일은근찾기힘들어요 시간엄청많이투자하셔야합니다 그래도하고싶으시다면 잘찾아서 한번해보세요
    Fana 2012-05-29 (화) 23:48:13
    질문 채택된 게시물 입니다.
    복잡합니다.....
    Android DRM Apps Crack 방법 
     
    짧은 지식이지만 많은 분들과 공유하고자 크랙 방법을 보여주고자 하는 것이니 대부분 이런 식으로 크랙을 하면 됩니다.
     
    이 글을 보신다면 기본적으로 디버깅 툴인 apktool 이나 apk-manager 를 통해 APK 디컴파일 및 컴파일을 하실 수 있는 분들이라고 생각됩니다.
     
    먼저 단말기에서 런처에서 실행하면 작동되는 라이센스 체크 부분을 디컴파일되어 License 체크하는 루틴을 찾아야합니다.

     
    com/cp/app/MainActivity$2.smali 에서 checkLicense() 를 호출하는 루틴을 찾았습니다.
     
    .method public run()V
        .locals 2
      
        .prologue
        .line 100
        invoke-static {}, Landroid/os/Looper;->prepare()V
      
        .line 102
        :try_start_0
        iget-object v0, p0, Lcom/cp/app/MainActivity$2;->this$0:Lcom/cp/app/MainActivity;
      
        iget-object v0, v0, Lcom/cp/app/MainActivity;
        ->licenseAuthenticator:Lcom/verizon/vcast/apps/LicenseAuthenticator;
      
        sget-object v1, Lcom/cp/app/MainActivity;->verizonAppKeyword:Ljava/lang/String;
      
        # checkLicense 호출해서 v0으로 결과값을 반환하고 있네요.
        invoke-virtual {v0, v1}, Lcom/verizon/vcast/apps/LicenseAuthenticator;
                                                        ->checkLicense(Ljava/lang/String;)I
        move-result v0
      
        .line 103
        iget-object v1, p0, Lcom/cp/app/MainActivity$2;->this$0:Lcom/cp/app/MainActivity;
      
        # checkLicense에서 v0으로 얻은 결과값을 isDRMDone() 보내서 v0으로 결과값을 반환 
        invoke-virtual {v1, v0}, Lcom/cp/app/MainActivity;->isDRMDone(I)Z
        move-result v0
      
        # isDRMDone() 에 얻은 v0의 결과값 에러 그리고 정상
        if-eqz v0, :cond_0
      
        # 이후 코드들...
     
    결국 마지막 if-eqz 문을 보면 v0에 0과 1의 결과 값이고 isDRMDone() 부분을 보면 v0에 입력되는 것은 0 또는 1 인것을 확인할 수 있습니다. 그럼 checkLicense() 호출에서 무조건 1 값을 반환하도록 하면 간단히 해결됩니다.
     
    위에 보면
    invoke-virtual {v0, v1}, Lcom/verizon/vcast/apps/LicenseAuthenticator;
                                                    ->checkLicense(Ljava/lang/String;)I
     
    문장에서 Lcom/verizon/vcast/apps/LicenseAuthenticator;->checkLicense()
    를 보고 com/verizon/vcast/apps/LicenseAuthenticator.smali 파일의 내용을 살펴보면

    checkLicense() 메소드 루틴 부분을 쉽게 찾을 수 있습니다.
     
    .method public declared-synchronized checkLicense(Ljava/lang/String;)I
        .locals 10
        .parameter "keyword"
      
        .prologue
          
        # 무조건 v0에 1값을 넣고 v0을 반환하고 호출을 종료하도록 시작 부분에 코드를 삽입합니다.
        # 그후 코드는 무시되니 신경 쓰지 맙시다.
     
        const/4 v0, 0x1
        return v0
      
        const/16 v9, 0x64
      
        const-string v7, "checkLicense() finished.  Trying to shutDownLicenseService()"
      
        const-string v7, "LicenseAuthenticator"
      
        .line 256
        monitor-enter p0
      
        :try_start_0
        const-string v7, "LicenseAuthenticator"
      
        const-string v8, "begin checkLicense()"
      
        # 이후 코드들.....
     
    -----------------------------------------------------------------
     
    이렇게 수정하고 컴파일하면 무조건 라인센스가 1이 되는 어플이 될겁니다.
     
    시간적 여유가 되면 보따리 조금씩 풀어 드릴께요.
    질문자가 자신의 포인트 100 점을 걸었습니다.
    답변하시면 포인트 5을, 답변이 채택되면 포인트 150점 (채택 50 + 추가 100) 을 드립니다.
    댓글을 작성하시려면 로그인을 하셔야지만 작성가능합니다. [로그인하기] [회원가입하기]
    번호 제목 글쓴이 상태 포인트 조회 작성일
    5 [어플질문]어플 크랙은 어떻게 하나요? +2 Stardust 해결됨 100P 7345 12/05/29
    4 [어플질문]음악 플레이어 어플 음질에 대해서 +5 Stardust 미해결 100P 4828 12/02/20
    3 [기기질문]베가 상단바 배터리 이미지 바꾸고싶어요 +2 Stardust 미해결 100P 3041 11/11/29
    2 [어플질문]통신사별 마켓 사용 / 기기명 변경에 관해서 +1 Stardust 해결됨 100P 4368 11/10/28
    1 [질문]Game Dev Story 질문이요 +5 Stardust 미해결 P 4524 11/03/27