前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >修改包名

修改包名

作者头像
贺biubiu
发布2019-06-11 17:30:40
3.6K0
发布2019-06-11 17:30:40
举报
文章被收录于专栏:HLQ_StruggleHLQ_Struggle

预计阅读时间: 4分钟

LZ-Says:一切顺其自然吧,不强求。。。

前言

今天,我们继续开启Android逆向之路第二弹,修改包名以及玩个流氓签名方式。

这里大家需要思考一个问题:

假设现在test.apk以及被签名,那么还能被签名么?

本文目标

阅读完本文,你我一起收获如下技能:

  • Android逆向工程之修改包名;
  • 换个方式签名

开车

习惯了开车,一天不开出去溜达溜达,浑身燥痒~

首先,我们来编辑一个小Demo,本Demo具有如下特征:

  • Activity中提供Button方便界面跳转;
  • Activity中依旧设置默认显示文字以及图片内容。

一、修改包名

依旧按照原来的路子,具体分为如下几个步骤:

  • 使用ApkTool解包;
  • 修改Apk名称、Icon、默认文字以及图片。

完成之后进入我们今天正题:修改包名。

众所周知,修改后包名,也就是意味重新生成一个Apk。

那么,在解包生成的目录下找到AndroidManifest.xml,着手修改package以及对应引用。

这里注意,可使用Notepad++,进行全局替换,简单快捷~

接下来,打开解包生成的smali目录,修改根目录:

紧接着,继续修改smali中对原有路径的引用:

依次替换原有路径~ 见下图~

通过apktool进行回包:

对生成的包进行签名:

签名完成:

运行查看效果:

OK,修改包名到此结束。

这里LZ简单总结下:

  • 解包之后修改主配置文件中AndroidManifest.xml中package以及对应引用;
  • 修改smali目录下所有对之前包的引用。

切记,缺一不可~!否则会出现找不到Class。

二、对已签名的Apk签名

有的小伙伴说了,签名之后不能再签名。

我不服,你别管我用什么方式,我给你把已签名的文件在签名一次~~~

少年就是狂~~~

步骤如下:

  • 将已签名APK修改后缀为ZIP;
  • 打开压缩文件,删除META-INF目录;
  • 将后缀改为apk再使用签名文件签名。

如下图:

之后再使用批处理文件进行签名,完成后运行,是不是很Nice?

简单说一下这里面取巧方式:

首先,我们查看这个META-INF目录下包含什么内容:

  • MANIFEST.MF:列出了apk的所有文件,以及这些文件内容所对应的base64-encoded SHA1 哈希值;
  • ANDROIDD.SF:签名文件
  • ANDROIDD.RSA:证书。

So,其中的过程则是我们通过移除META-INF使其变成一个未签名的Apk,之后通过签名进行重新签名。

这里需要注明一点,已签名的Apk文件不可再签名。

下面简单比较下已签名和未签名的Apk解压目录:

Smali解释

Smali,Baksmali分别是指安卓系统里的Java虚拟机(Dalvik)所使用的一种.dex格式文件的汇编器,反汇编器。

Android采用的是Java语言进行开发,但是Android系统有自己的虚拟机Dalvik,代码编译最终不是采用的Java的class,而是使用的Smali。我们反编译得到的代 码,jar的话可能很多地方无法正确的解释出来,如果我们反编译的是Smali则可以正确的理解程序的意思。

Smali语言是Davlik的寄存器语言,语法上和汇编语言相似。

以上说法可能都有点绕,这里找了一个比较通俗的解释:

Smali文件夹里面其实就是每个Java类所对应的Smali文件。 Android虚拟机Dalvik并不是执行Java虚拟机JVM编译后生成的class文件,而是执行再重新整合打包后生成的dex文件,dex文件反编译之后就是Smali代码,可以说,Smali语言是Dalvik的反汇编语言。

枉我泱泱大安卓,要学的是在是太多了~~~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 贺biubiu 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档