Android逆向之路---改apk包名六荒、達(dá)到多開效果

前言

最近在某乎上有人在問我如何將打好的包更改包名护姆。了解我的同學(xué)大概都知道,我喜歡自己動手做實(shí)驗(yàn)掏击,再將自己的方式分享給大家卵皂,這次我選擇了一個閱讀類型app,隨機(jī)選的砚亭。先看效果

<img src="http://martinhan.site/images/migudouble.png" width="200" height="350">

如何做到的呢灯变,那就把我的思路分享給大家豺旬。
ps:侵刪!僅供個人學(xué)習(xí)使用柒凉,不適宜商用。

準(zhǔn)備工作

咪咕閱讀v7.1.1app
apktool
一個編輯器篓跛,(我用vscode裝了smali高亮插件)

思路

  • 利用apktool拆包咪咕閱讀
  • 首先更改AndroidManifest.xml里面的包名
  • 全局更改com.xxx.xxxx類似的包名
  • 全局更改smali類型代碼的包名字符串Lcom/xxx/xxxx
  • 全局更改所有com/xxx/xxxx文件夾的名稱膝捞,因?yàn)閖ava文件里面要求包名和文件夾路徑要對應(yīng)
  • 更改刪除app原本的包名或簽名校驗(yàn)相關(guān)smali代碼
  • apktool b打包apk
  • jarsigner 簽名 ,安裝apk

開始逆向

拆包

apktool d com.ophone.reader.ui_7.1.1_129.apk

更改包名

在AndroidMaifest.xml里面我們發(fā)現(xiàn)他的包名是 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文件夾名為ui01
ps:其實(shí)以上三步可以寫成程序吧愧沟,大體思路都是關(guān)于文件的讀寫蔬咬,還有重命名等

開始打包

更改完了app的包名準(zhǔn)備打包,

apktool b com.ophone.reader.ui_7.1.1_129

打好的包我的路徑在
com.ophone.reader.ui_7.1.1_129/dist里面沐寺,
看到了我們逆向動了手腳的apk了

<img src="http://martinhan.site/images/miguyuedu_01.png" width="358" height="53">

然后簽名執(zhí)行以下命令

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore "MartinHanKey.jks" -signedjar _signed.apk ".\com.ophone.reader.ui01_7.1.1_129.apk" "MartinHan"

以上命令我就不解釋了林艘,可以具體自己查詢。

運(yùn)行

開始運(yùn)行了混坞,發(fā)現(xiàn)有如下問題狐援,如圖

<img src="http://martinhan.site/images/miguwarndialog.png" width="250" height="300">

很明顯啊,開發(fā)者加了簽名校驗(yàn)究孕,或者包名校驗(yàn)啥酱。

思路

后來我搜索了如下字符串“你安裝版本xxxx”搜到了如下字符串

<string name="check_sign_notice">您安裝的版本不是官方版,建議您訪問wap.cmread.com官網(wǎng)下載安裝(注意:安裝新版本需卸載當(dāng)前版本)</string>

跟著這個name=check_sign_notice在public.xml里面看到了這個

<public type="string" name="check_sign_notice" id="0x7f0701bf" />

由此可見厨诸,其實(shí)他的id就是7f0701bf镶殷。
繼續(xù)全局搜索這個id我在WelcomePageActivity里面發(fā)現(xiàn)了如下代碼,這段代碼比較關(guān)鍵微酬,需要我們細(xì)細(xì)研讀绘趋。

    #這里調(diào)用了setContentView方法
    invoke-virtual {p0, v0}, Lcom/cmread/bplusc/bookshelf/WelcomePageActivity;->setContentView(Landroid/view/View;)V

    #這里調(diào)用了com.cmread.bplusc.layout.as類的a方法,將結(jié)果傳入v0颗管,也就是根據(jù)這個
    #v0來判斷下面的條件
    .line 171
    invoke-static {p0}, Lcom/cmread/bplusc/layout/as;->a(Landroid/content/Context;)Z

    move-result v0
    #根據(jù)剛才的結(jié)果進(jìn)行跳轉(zhuǎn)
    if-nez v0, :cond_3
    #設(shè)置了WelcomePageActivity的E變量
    .line 172
    iput-boolean v4, p0, Lcom/cmread/bplusc/bookshelf/WelcomePageActivity;->E:Z
    #下面的就不具體解釋了陷遮,其實(shí)就是創(chuàng)建了那個對話框
    .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;-><init>(Lcom/cmread/bplusc/bookshelf/WelcomePageActivity;)V

    new-instance v6, Lcom/cmread/bplusc/bookshelf/hw;

    invoke-direct {v6, p0}, Lcom/cmread/bplusc/bookshelf/hw;-><init>(Lcom/cmread/bplusc/bookshelf/WelcomePageActivity;)V

    new-instance v7, Lcom/cmread/bplusc/bookshelf/hx;

    invoke-direct {v7, p0}, Lcom/cmread/bplusc/bookshelf/hx;-><init>(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具體位置代碼如下,其實(shí)就是調(diào)用了父類的方法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

到此為止,我們了解了以上的方法疫粥,就知道了茬斧,關(guān)鍵點(diǎn)就在于if-nez v0, :cond_3,
現(xiàn)在吧if-nez改成if-eqz梗逮,然后再次打包運(yùn)行
如圖:
<img src="http://martinhan.site/images/miguhome.png" width="273" height="468">

寫在結(jié)尾

一切都徹底搞定啦项秉,打到了本文章開始的效果,咪咕閱讀雙開慷彤,更改了他的包名娄蔼,而且還過了校驗(yàn)怖喻。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市岁诉,隨后出現(xiàn)的幾起案子锚沸,更是在濱河造成了極大的恐慌,老刑警劉巖涕癣,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哗蜈,死亡現(xiàn)場離奇詭異,居然都是意外死亡坠韩,警方通過查閱死者的電腦和手機(jī)距潘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來只搁,“玉大人音比,你說我怎么就攤上這事∏馔铮” “怎么了洞翩?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長焰望。 經(jīng)常有香客問我菱农,道長,這世上最難降的妖魔是什么柿估? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任循未,我火速辦了婚禮,結(jié)果婚禮上秫舌,老公的妹妹穿的比我還像新娘的妖。我一直安慰自己,他們只是感情好足陨,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布嫂粟。 她就那樣靜靜地躺著,像睡著了一般墨缘。 火紅的嫁衣襯著肌膚如雪星虹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天镊讼,我揣著相機(jī)與錄音宽涌,去河邊找鬼。 笑死蝶棋,一個胖子當(dāng)著我的面吹牛卸亮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播玩裙,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼兼贸,長吁一口氣:“原來是場噩夢啊……” “哼段直!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起溶诞,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤鸯檬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后螺垢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喧务,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年甩苛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俏站。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡讯蒲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肄扎,到底是詐尸還是另有隱情墨林,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布犯祠,位于F島的核電站旭等,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏衡载。R本人自食惡果不足惜搔耕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望痰娱。 院中可真熱鬧弃榨,春花似錦、人聲如沸梨睁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坡贺。三九已至官辈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間遍坟,已是汗流浹背拳亿。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留愿伴,地道東北人风瘦。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像公般,于是被迫代替她去往敵國和親万搔。 傳聞我的和親對象是個殘疾皇子胡桨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容