Android 역방향 - apk 패키지 이름 변경, 멀티플렉스
최근 어떤 자리에서 어떤 사람이 나에게 잘 만든 가방을 어떻게 가방 이름을 바꾸느냐고 물었다.제 친구들을 아시다시피 저는 실험을 하고 자신의 방식을 여러분께 공유하는 것을 좋아합니다. 이번에 저는 읽기 유형 앱을 선택하여 무작위로 선택했습니다.먼저 효과를 보다
어떻게 했느냐면 제 생각을 여러분께 나눠드리겠습니다.ps:삭제!개인 학습용으로만 제공되는 것은 상업용으로 적합하지 않다.
준비 작업
옹알옹알 읽다1.1 app apktool 편집기
사고의 방향
포장을 풀다
apktool d com.ophone.reader.ui_7.1.1_129.apk
패키지 이름 변경
안드로이드 Maifest에서.xml에서 우리는 그의 가방 이름이com이라는 것을 발견했다.ophone.reader.ui, 내 가방 이름을com으로 바꿀게.ophone.reader.ui01이죠.
모든 com.ophone.reader.ui를com으로 바꿉니다.ophone.reader.ui01
smali 패키지 이름 변경
모든 Lcom/ophone/reader/ui를 Lcom/ophone/reader/ui01로 바꿉니다.
폴더 이름 변경
모든com/ophone/reader/ui의 ui 폴더 이름을 ui01ps로 변경합니다: 사실 위 세 단계는 프로그램으로 쓸 수 있죠. 대체적으로 파일의 읽기와 쓰기, 이름 바꾸기 등입니다.
포장을 시작하다
앱의 가방 이름을 변경하여 포장을 준비,
apktool b com.ophone.reader.ui_7.1.1_129
싸놓은 가방은 제 경로가com에 있습니다.ophone.reader.ui_7.1.1_129/dist에서 우리가 손발을 거꾸로 움직인 apk를 봤어요.
그리고 서명해서 다음 명령을 실행합니다
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore "MartinHanKey.jks" -signedjar _signed.apk ".\com.ophone.reader.ui01_7.1.1_129.apk" "MartinHan"
이상의 명령은 설명하지 않겠습니다. 구체적으로 스스로 조회할 수 있습니다.
실행
운행을 시작하였는데 다음과 같은 문제가 발견되었다. 그림과 같다.
개발자가 서명 검사나 패키지 이름 검사를 추가한 것이 분명합니다.
사고의 방향
나중에 나는 다음과 같은 문자열을 검색했다. "네가 설치한 버전 xxx"는 다음과 같은 문자열을 찾았다
<string name="check_sign_notice"> , wap.cmread.com ( : )string>
이걸 따라서name=checksign_noticexml에서 이걸 봤어요.
<public type="string" name="check_sign_notice" id="0x7f0701bf" />
이를 통해 알 수 있듯이 사실 그의 id는 7f0701bf이다.계속해서 전역적으로 이 id를 검색합니다. 저는 WelcomePageActivity에서 다음과 같은 코드를 발견했습니다. 이 코드는 비교적 중요하기 때문에 우리가 자세히 연구해야 합니다.
# setContentView
invoke-virtual {p0, v0}, Lcom/cmread/bplusc/bookshelf/WelcomePageActivity;->setContentView(Landroid/view/View;)V
# com.cmread.bplusc.layout.as a , v0,
#v0
.line 171
invoke-static {p0}, Lcom/cmread/bplusc/layout/as;->a(Landroid/content/Context;)Z
move-result v0
#
if-nez v0, :cond_3
# WelcomePageActivity E
.line 172
iput-boolean v4, p0, Lcom/cmread/bplusc/bookshelf/WelcomePageActivity;->E:Z
# ,
.line 173
iget-object v0, p0, Lcom/cmread/bplusc/bookshelf/WelcomePageActivity;->g:Landroid/content/Context;
.line 175
invoke-virtual {p0}, Lcom/cmread/bplusc/bookshelf/WelcomePageActivity;->getResources()Landroid/content/res/Resources;
move-result-object v2
#
const v3, 0x7f0701bf
invoke-virtual {v2, v3}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;
move-result-object v2
.line 176
invoke-virtual {p0}, Lcom/cmread/bplusc/bookshelf/WelcomePageActivity;->getResources()Landroid/content/res/Resources;
move-result-object v3
const v4, 0x7f070278
invoke-virtual {v3, v4}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;
move-result-object v3
.line 177
invoke-virtual {p0}, Lcom/cmread/bplusc/bookshelf/WelcomePageActivity;->getResources()Landroid/content/res/Resources;
move-result-object v4
const v5, 0x7f070156
invoke-virtual {v4, v5}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;
move-result-object v4
new-instance v5, Lcom/cmread/bplusc/bookshelf/hu;
invoke-direct {v5, p0}, Lcom/cmread/bplusc/bookshelf/hu;->(Lcom/cmread/bplusc/bookshelf/WelcomePageActivity;)V
new-instance v6, Lcom/cmread/bplusc/bookshelf/hw;
invoke-direct {v6, p0}, Lcom/cmread/bplusc/bookshelf/hw;->(Lcom/cmread/bplusc/bookshelf/WelcomePageActivity;)V
new-instance v7, Lcom/cmread/bplusc/bookshelf/hx;
invoke-direct {v7, p0}, Lcom/cmread/bplusc/bookshelf/hx;->(Lcom/cmread/bplusc/bookshelf/WelcomePageActivity;)V
.line 173
invoke-static/range {v0 .. v8}, Lcom/cmread/uilib/dialog/h;->a(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/cmread/uilib/dialog/CommonReaderDialog$a;Lcom/cmread/uilib/dialog/CommonReaderDialog$a;Lcom/cmread/uilib/dialog/CommonReaderDialog$b;Z)Lcom/cmread/uilib/dialog/CommonReaderDialog;
goto/16 :goto_0
......
......
......
......
......
# goto_0 , onKeyDown, return 。
.line 1071
:cond_0
:goto_0
invoke-super {p0, p1, p2}, Lcom/cmread/uilib/activity/CMActivity;->onKeyDown(ILandroid/view/KeyEvent;)Z
move-result v0
:goto_1
return v0
여기까지, 우리는 이상의 방법을 이해했고, 관건은if-nezv0,:cond 에 있음을 알았다.3, 지금 if-nez를 if-eqz로 바꾸고 다시 포장하여 실행합니다. 그림:
끝에 쓰다
모든 것이 철저히 해결되었고 이 글이 시작되는 효과를 보았고 미쿠는 두 가지를 읽고 그의 가방 이름을 바꾸었고 검사도 통과했다.
나에 관하여
개인 블로그:MartinHan의 작은 역
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
AWS 역방향 신청 절차(rDNS)EC2에서 이메일을 보내고 싶다면 AWS에 신청해야 합니다. 메일 발송 제한 해제 신청 역방향 설정 신청 또한 역방향 설정 신청을 하면 동시에 메일 송신 제한 해제도 되므로 신청은 실질적으로 하나로 문제 없습니다. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.