自动化打包资源混淆集成python实践----资源混淆

前面自动化打包资源混淆集成python实践----打包一文讲述了四种打包方案,以及美团打包方案、apk注释添加渠道号方案的实现。这里讲集成资源混淆。

1、资源混淆带来的好处

   1)对资源文件起一定的保护作用,使其不能知其名不知意(如login.png ----a.png> )

   2)对压缩apk包大小,起一定的作用(混淆资源ID长度,对apk进行深度压缩)

2.方案种类

   1)美团资源混淆

        原理:干涉appt过程,改写appt 源码,在生成resources.arsc和*.ap_时把资源文件的名称进行替换

   2)微信资源混淆

        原理:对apk 中的resources.arsc进行内容修改,同时对apk进行深度压缩。

3.Python 集成微信资源混淆

    1)思路:gradle 打包 ---->微信资源打包 --->多渠道打包

    2)python实现

         (1)使用微信资源混淆方法

                  法1:定义gradle andResGuard  task, ./gradlew andresguard 

                  法2:直接用命令行执行  java -jar resourceproguard.jar input.apk -7zip /shwenzhang/tool/7za -zipalign /shwenzhang/sdk/tools/zipalign

                  ps:这里使用法2使用混淆

        (2)源码:

           

def func_andResGuard(apkPath,isChannels = False):#根据AndResGuard-cli-1.1.0.jar,config.xml 实际路径替换guardJarFile = workSpace + '/AndResGuard/AndResGuard-cli-1.1.0.jar'guardConfigFile = workSpace + '/AndResGuard/config.xml'outDir = workSpace + '/AndResGuard/build'cmd = 'java -jar ' + guardJarFile  + ' '+apkPath + ' -config ' + guardConfigFile + ' -out '+ outDir +' -zipalign ' + zipalignFileproc = subprocess.Popen(cmd,shell = True)if isChannels:func_listen_process(proc,AndResGuardProcessListener(apkPath,True))else:func_listen_process(proc,AndResGuardProcessListener(apkPath))#andResGuard进程监听器        
class AndResGuardProcessListener(ProcessListener):curTime = 0isChannels = FalseapkPath = ''preApkSize = 0def __init__(self,apkPath,isChannels = False):self.isChannels = isChannelsself.apkPath = apkPathdef start(self):size =os.path.getsize(self.apkPath)self.preApkSize = size /float(1024)/1024self.curTime = time.time()print '\n ------>  AndResGuard start \n'    def doing(self):returndef end(self):time.sleep(30)files = os.listdir(workSpace + '/AndResGuard/build')for f in files :if 'signed_7zip_aligned' in f:size = os.path.getsize(workSpace + '/AndResGuard/build/' + f)print '\n ------>  AndResGuard before apk size : ' + str(float('%0.2f'%(self.preApkSize))) + 'M\n'size = size /float(1024)/1024print '\n ------>  AndResGuard after apk size : ' + str(float('%0.2f'%size)) + 'M\n'os.chmod( self.apkPath, stat.S_IWRITE )os.remove(self.apkPath)shutil.copyfile(workSpace + '/AndResGuard/build/' + f,self.apkPath)breakelse :print ''self.curTime = time.time() - self.curTime - 10print '\n ------>  AndResGuard end , cost time '+ str(int(self.curTime)) +'s\n\n'if self.isChannels:func_channelsReleasePack(workSpace)

 

4、混淆压缩效果:

 

ps:使用友盟分享功能时,需要在config.xml添加资源白名单(友盟根据资源名获取资源ID,而资源名被混淆了,导致资源找不到),填写正确的签名信息(否则微信分享调用 不起来)。

github:github:AndroidPackCi

 

 

 

参考资料:

美团Android资源混淆保护实践

安装包立减1M--微信Android资源混淆打包工具

https://github.com/shwenzhang/AndResGuard

Android应用程序资源的编译和打包过程分析

转载于:https://www.cnblogs.com/sihaixuan/p/5326289.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404085.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[ECMAScript] 说说你对Babel的了解?

[ECMAScript] 说说你对Babel的了解? 1.将es6/7/8/9/10转换为es5 2.将jsx转换为js 个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

[win7] 去除将窗口拖到屏幕边缘时“自动最大化”

在win7中将一个窗口拖到屏幕的边缘,这个窗口将会自动以最大化方式显示,这对于那些需要同时查看两个窗口中内容的用户来说就是个恶梦!因为屏幕大小是有限的,为了同时查看两个窗口中的内容,就要将这两个窗口以合适的方式…

优秀技术人才需具备能力

1、工作经验。工作经验是通过对具体工作和与工作相关的知识与问题进行不断反思,总结其内在规律,并不断的进行创新和积累,形成知识和具体能力的过程。通过工作经验我们可以知道他曾经具体做过什么事情,做成功了什么事情。 一个应聘…

[ECMAScript] 说说你对async/await的理解?

[ECMAScript] 说说你对async/await的理解? async函数返回的是一个promise对象,它可以用then方法添加回调函数。 当函数执行的时候一旦遇到await就会阻塞后面的代码,等待promise的resolve() 作为await的返回结果。 个人简介 我是歌谣&#…

python中实现定时器Timer

实现定时器最简单的办法是就是循环中间嵌time.sleep(seconds), 这里我就不赘述了 # encoding: UTF-8 import threading #Timer(定时器)是Thread的派生类, #用于在指定时间后调用一个方法。 def func():print hello timer! timer …

对当前目录及子目录下的所有源码文件及Makefile打包

自己认为一个比较有用的bash脚本,方便开发人员将修改过的源文件及Makefile文件打包并带到其他地方去使用 #!/bin/shif test $# -lt 1; thendestFilebasename $PWD elsedestFile$1 fifind . -name "*.h" -o -name "*.hh" -o -name "*.hpp&q…

nib和xib的区别

nib 是NeXT Interface Builder的缩写。xib 是 xml nib 文件&#xff0c;于2007年 Leopard (and Xcode 3.0) 版本中更新。 以源码方式打开查看&#xff1a;< ?xml version"1.0" encoding"UTF-8"?>78410F2521…… 相同点&#xff1a;NIB 和 XIB 都是…

[ECMAScript] 你喜欢es6的哪些特性?

[ECMAScript] 你喜欢es6的哪些特性&#xff1f; 展开操作符 解构赋值 字符串插值 方法属性 find findIndex Includes Promise ESM 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一…

iOS 应用程序的国际化

什么事应用程序的国际化? 就是不同国家之间使用的语言不一样,中国人的应用程序显示的汉字,美国人的应用程序是英文. 接下来我们就来实现应用程序的国际化: 1.首先我们新建一个工程,命名为:Internationalization-Demo; 2.添加语言(配置语言):(英文和中文) 3.目前&#xff0c;应…

关于sizeof在不同平台下的值

sizeof在不同平台的值并不一样&#xff0c;大家注意下: /*Ubuntu12_x64环境下:sizeof()返回值类型是long unsigned intsizeof(long) 8sizeof(void) 1sizeof(void*) 8Win7_x64, VC2010环境下&#xff08;目标机器: 32位&#xff09;:sizeof(long) 4sizeof(void) 0sizeof(vo…

Eclipse3.7 Indigo 字体设置为Courier New

Eclipse版本&#xff1a;Indigo Service Release 2 打开c:/windows/fonts()确认该字体存是否存在。 1.C:/windows/fonts/Courier New 右键 ->显示 (window7 C:\Windows\Fonts) window7系统到这一步 问题可能已解决了 重新打开Eclipse Window->preference-->Colors a…

[ECMAScript] 说说你对class的理解

[ECMAScript] 说说你对class的理解 语法糖&#xff0c;本质上还是function 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

数据库包装成类

<?phpclass DBDA {public $host "localhost"; //服务器地址public $uid "root"; //数据库的用户名public $pwd "123"; //数据库的密码//执行SQL语句&#xff0c;返回相应结果的函数//$sql是要执行的SQL语句//$type是SQL语句的类型&#x…

获得H.264视频分辨率的方法

From: http://www.cnblogs.com/likwo/p/3531241.html 在使用ffmpeg解码播放TS流的时候&#xff08;例如之前写过的UDP组播流&#xff09;&#xff0c;在连接时往往需要耗费大量时间。经过debug发现是av_find_stream_info&#xff08;已抛弃&#xff0c;现在使用的是avformat_fi…

[ECMAScript] es6对函数做了哪些优化?

[ECMAScript] es6对函数做了哪些优化&#xff1f; 1.函数参数可以设置默认值function getUserCompanyName(namedefaultUser,companydefaultCompany){ return namecompany } 2.属性简写,属性的key和value相同可以进行简写 3.rest参数(剩余参数) 4.箭头函数 ()>{} 个人简介 …

C#命名空间与类名的冲突

今晚写一个聊天客户端的程序&#xff0c;花了很长时间设计界面&#xff0c;然后在我定义P2PClient类的时候用到了类TcpClient,这是一个有关收发数据的类&#xff0c;但是我定义项目名的时候用了TcpClient,这样在我使用类TcpClient时&#xff0c;vs就总是提示错误&#xff0c;后…

Web服务器性能估算

1 【引题】 但凡写过技术方案的都知道&#xff0c;在技术方案最终落实到工程实施部署时&#xff0c;必须编制出当前解决方案需要部署的IT设备及环境&#xff0c;包括&#xff1a;需要的网络环境、端口、带宽、组网方式、网络安全保障措施&#xff1b;需配置的服务器设备性能…

用实例分析H264 RTP payload

From: http://blog.csdn.net/zblue78/article/details/5948538 H264的RTP中有三种不同的基本负载&#xff08;Single NAL,Non-interleaved,Interleaved) 应用程序可以使用第一个字节来识别。 在SDP中也说明了本次会话的属性 SDP 参数 下面描述了如何在 SDP 中表示一个 H.264 流…

[ECMAScript] module、export、import分别有什么作用?

[ECMAScript] module、export、import分别有什么作用&#xff1f; import导入模块功能。import导入的只是一个只读引用&#xff0c;等到脚本执行时根据引用才到模块里去取值。这也就是import可以按需加载的原因。 export 指定输出的代码 module 要在js中使用ES6的import。<…

实验4 颜色、字符串资源的使用

课程名称 基于Android平台移动互联网开发 实验日期 3月25 实验项目名称 颜色、字符串资源的使用 实验地点 S3010 实验类型 □验证型 √设计型 □综合型 学 时 1学时 一、实验目的及要求&#xff08;本实验所涉及并要求掌握的知识点&#xff09; 掌握Androi…