HLQ逆向坎坷路 之 第二弹 修改包名以及玩个淫思奇巧(关于apk签名后再次签名) | 您所在的位置:网站首页 › apktool改包名原理 › HLQ逆向坎坷路 之 第二弹 修改包名以及玩个淫思奇巧(关于apk签名后再次签名) |
LZ-Says:一切顺其自然吧,不强求。。。 昨天我们简单玩转了关于Android逆向工程之如何破解APK修改资源文件,原文地址如下: HLQ逆向坎坷路 之 首战 看我破解APK修改资源文件 而今天,我们继续开启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,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的反汇编语言。 枉我泱泱大安卓,要学的是在是太多了~~~ 参考资料 Android签名机制之—签名过程详解;安卓逆向分析,为什么需要学习smali,直接反编译成java语言不就行了嘛?;smali 语言语法;Android逆向基础知识Smali; 个人公众号欢迎关注个人公众号,不定期发布博文~ |
CopyRight 2018-2019 实验室设备网 版权所有 |