Flutter 发布APK时进行代码/资源混淆的坑 @author ixenos 1. 关键点 proguard是Java的代码混淆工具,但是当用第三方库的时候,必须要告诉proguard不要检查,因为第三方库里往往有些不会用到的类,没有正确引用, 此时必须设置-dontwarn,比如(-dontwarn io.flutter.**),对第三方库进行warning忽略,否则编译不通过 2.在发布Flutter APK时,如需代码混淆,那么需要在/app/build.gradle中加入如下语句 .…
Flutter 发布APK时,release版本和debug版本的默认权限不同 @author ixenos 在调试模式下,默认情况下启用服务扩展和多个权限(在flutter中) 当您处于发布模式时,您必须手动在androidmanifest.xml中添加Internet权限.(就像您在本机开发中添加它一样) 导航到android-> app-> src-> main-> AndroidManifest.xml并在应用程序范围之外添加此行. <uses-permission…
转自:http://tech.meituan.com/mt-android-resource-obfuscation.html 前言 Android应用中的APK安全性一直遭人诟病,市面上充斥着各种被破解或者汉化的应用,破解者可以非常简单的通过破解工具就能对一个APK进行反编译.破解.汉化等等,这样就可以修改原有代码的逻辑.添加新代码.添加或修改资源.或者更有甚者植入病毒等等,从而破坏原有APK的安全和用户体验,最终伤害到用户和原有的开发者.而事物都是有两方面的,有矛就有盾,针对Android应…
APK的混淆分为资源混淆与代码混淆.一般大部分都使用两者结合.尤其是目前主流的应用. 其中的优点: 防止被恶意破解逆向分析 减少apk体积,也是瘦身的方法 代码可阅读性降低 其中的缺点: 调试不方便(可以配置mapping变得方便) 测试不充分,可能导致部分功能不能使用(比如注解相关等) 混淆前(这儿偷个懒直接用工具反编译看): 混淆后: 如何使用代码混淆: 1.直接在build.gradle文件中配置即可.如图:  图片有了,文件也找到了,接下来了呢? buildTypes { debug {…
最近在研究如何给Unity游戏进行加密,让别人不能轻易破解你的apk包,不过网上的加密方法都是有对应的破解方法~_~!!结果加密方法没找到好的,逆向工程倒会了不少.今天就来讲解如何提取一个没做任何保护的apk包中的资源和代码. (1)打开apk包 首先,将你的apk包重命名为zip或者rar类型的文件,然后进行解压缩,如下: 重命名为,然后进行解压缩,得到如下的目录内容: 各个部分的说明如下表: assets Unity游戏里面的资源和代码 lib arm和x86需要的so文件 META-INF…
android打包apk的时候一般会选择混淆,而在eclipse中常使用的是proguard来混淆.有很多时候引用了第三方包的时候会导致打包不成功,或者打包成功不能运行的情况. 首先看看正常的proguard.cfg文件里面可以怎么写: 简单的android系统,没有第三方包 [html]  view plain copy print ?   -injars      bin/classes -outjars     bin/classes-processed.jar -libraryjars …
写一个win上 flutter 打包apk的教程 这篇文档介绍一下flutter打包发布正式版apk 整体来看,和命令行打包rn的方法相差不大 打包前先做检查工作&查看构建配置 AndroidManifest.xml 清单 检查pubspec.yaml App签名 创建 keystore keytool命令生成一个私有密钥(Windows上keytool命令放在JDK的bin目录中(比如C:\Program Files\Java\jdkx.x.x_x\bin),你可能需要在命令行中先进入那个目录…
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com Android 资源混淆 AndResGuard 目录 目录资源混淆工具库简介使用配置 build.gradlle配置 whiteList 与 mappingFile启动任务生成的文件 资源混淆工具库简介 AndResGuard AndResGuard 是一个帮助你缩小 APK 大小的工具…
安装包立减1M--微信Android资源混淆打包工具http://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=208135658&idx=1&sn=ac9bd6b4927e9e82f9fa14e396183a8f#rd AndResGuardhttps://github.com/shwenzhang/AndResGuard/blob/master/README.zh-cn.md 美团Android资源混淆保护实践http://tech…
1.自动化打包方案 1)友盟多渠道多渠道打包 2)gradle productFlavors系统的条件编译 3)美团打包 4)APK文件注释写入渠道号 2.各打包方案简介 1)友盟多渠道多渠道打包(window 绿色版,gradle版本 现在过时) 原理:拆包分解apk,修改AndroidManifest.xml二进制文件后,再重新打包 耗时:较短(多渠道打包时,避免了多次dex过程,aapt过程) 渠道号保存方式:保存在AndroidManifest.xml 文 件 meta 数据中 不足:较…
此文已由作者尹彬彬授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 0X0 前言 在Android系统中,当我们安装apk文件的时候,lib目录下的so文件会被解压到app的原生库目录,一般来说是放到/data/data/<package-name>/lib目录下,而根据系统和CPU架构的不同,其拷贝策略也是不一样的,在我们测试过程中发现不正确地配置了so文件,比如某些app使用第三方的so时,只配置了其中某一种CPU架构的so,可能会造成app在某些机型上的适配问题.…
Intellij idea 和android studio 代码给混淆 一.指令说明-optimizationpasses 5 # 指定代码的压缩级别 -dontusemixedcaseclassnames # 是否使用大小写混合 -dontpreverify # 混淆时是否做预校验 -verbose # 混淆时是否记录日志 -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* # 混淆时所采用的算法 -…
在程序代码告一段落后,需要发布程序,以后还有后续版本更新,用户下载后自动提示更新. 但是平时测试都是debug的方式安装了,但是一个程序不可能是一个人在做,所以生成的密钥都是不一样的, 这就造成用户需要手动卸载当前同样签名的程序,然后才能安装新版本的程序. 这就需要做到运用相同的签名了. 两步: 1:通过Java自带的keytool命令,在命令行生成输入 keytool -genkey -alias clientkey -validity 1  -keystore kclient.keystor…
Web API核查表:设计.测试.发布API时需思考的43件事   当设计.测试或发布一个新的Web API时,你是在一个原有的复杂系统上构建新的系统.那么至少,你也要建立在HTTP上,而HTTP则是基于TCP/IP创建的.TCP/IP建立在一系列的管道上.当然,你也需要考虑Web服务器.应用程序框架或者是API框架. API从设计到测试以至最终的发布需要经历一个漫长的过程,本文将主要探讨Web API从设计到最终发布,开发者可能忽略或者应该注意的东西. HTTP篇 HTTP 1.1规范RFC2…
Android载入插件apk中的Resource资源 简单介绍 怎样载入未安装apk中的资源文件呢?我们从android.content.res.AssetManager.java的源代码中发现,它有一个私有方法addAssetPath,仅仅须要将apk的路径作为參数传入,我们就能够获得相应的AssetsManager对象,然后我们就能够使用AssetsManager对象,创建一个Resources对象,然后就能够从Resource对象中訪问apk中的资源了. 总结例如以下: 1.新建一个Ass…
http://cn.cocos2d-x.org/tutorial/show?id=1507 http://cn.cocos2d-x.org/tutorial/show?id=1447 http://blog.sina.com.cn/s/blog_71ad028b0101ms4n.html http://cn.cocos2d-x.org/tutorial/show?id=1447 代码加密, 1.到quick建立的工程目录下右键在此打开cmd命令:输入下面代码 加密src文件夹 D:\quick-…
前面自动化打包资源混淆集成python实践----打包一文讲述了四种打包方案,以及美团打包方案.apk注释添加渠道号方案的实现.这里讲集成资源混淆. 1.资源混淆带来的好处: 1)对资源文件起一定的保护作用,使其不能知其名不知意(如login.png ----a.png> ) 2)对压缩apk包大小,起一定的作用(混淆资源ID长度,对apk进行深度压缩) 2.方案种类 1)美团资源混淆 原理:干涉appt过程,改写appt 源码,在生成resources.arsc和*.ap_时把资源文件的名称进…
海洋cms自带资源发布api插件和第三方资源站接入办法说明 时间:2016-07-15 13:46 来源:CMS模版网 作者:大宇 阅读:7095次 ===海洋cms自带API资源发布插件说明===* 资源发布API是指将自己站内资源发布出来,做出资源站,供其他站长采集数据.* 站长可以在后台控制是否开启资源发布API插件.* 资源库API访问地址是:http://您的域名/zyapi.php 整合办法请接着阅读本帖下面内容.* 支持发布的信息:影片名称,影片图片地址,影片连载状态,影片语言,影…
打包的具体操作,可以参照官网,只是官网没有那么细 1.修改AndroidManifest.xml 2.构建配置  可以跳过 3.构建签名 4.创建 key.properties 5.配置混淆 6.修改builg配置build.gradle 7.打包 --------------------------------------------------分割线-------------------------------------------------------------------- 1.修…
一.打包前需要做一些基本设置的确认 1.应用名 2.权限设置 3.applicationId:应用唯一标识符 4.versionCode:版本号 5.versionName:版本名称 6.APP应用图标 7.APP启动页 以上对应的设置可以参考Flutter官网 二.APP签名(以下操作均针对macOS) 创建keystore 如果你之前已经创建过keystore的话,可以跳过此步骤.如果没有,请打开终端运行以下命令来创建一个: keytool -genkey -v -keystore ~/ke…
发布网站时的选项 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序. Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用. databases use this connection string at runtime   在运行时使用此连接字符串  它的作用是部署到生产的时候这里的连接字符串优先于appsettings.json的  主要是方便程序迭代时的部署工作.一般来说就是,开发环境和生产环境…
转自http://goldlion.blog.51cto.com/4127613/1351616 用过XCode的人都知道,XCode有一个臭名昭著的bug——除非你修改了源代码造成了重新编译,否则游戏包中的资源经常无法刷新.不管怎么运行资源都是旧的. 关于这个问题,业内有几位同行已经详细探讨过了.有几种解决方法,其中一种方法是,在运行时强制把资源删除,这样XCode会重新导入新的资源.要做到这一点就是写一个脚本,让这个脚本在XCode运行时自动执行. _TARGET_BUILD_CONTENT…
dedecms发布文章时经常会添加多个Tag,我们输入汉字时总是喜欢使用全角的逗号,那么有没有办法使用JS脚本把输入的Tag间中文逗号变成英文逗号呢? dedecms发布文章时多个Tag间分割逗号自动变成英文逗号的修改方法:打开templets/article_add.htm文件,然后查找如下代码: <input name="tags" type="text" id="tags" value="<?php echo $tag…
在开发过程中,经常需要使用NSLog来进行调试,但是NSLog是非常影响性能的,所以我们应该在发布应用时屏蔽掉NSLog,但是如果通过手工的去一行一行的改得话,未免太枯燥与费时了,庆幸的是,我们可以通过条件预编译来屏蔽NSLog.示例代码如下: //在项目中需要打印的地方使用WKLog /** * 应用程序的两种状态: * Debug(调试): 在开发阶段都属于调试阶段,系统会自定义一个DEBUG的宏 * Release(发布): 系统会自动删除DEBUG的宏 */ #ifdef DEBUG #…
在关于<关于在打包Jar文件时遇到的资源路径问题(一)>中,以及描述了当资源与可执行JAr分离时的资源路径代码的编写问题,后来想了想,为什么将<Java核心技术卷一>中的程序10-1即ResourceTest的Jar文件放在任何地方都可以执行呢? 图:将原本一起放入目录中的Jar放到桌面上,点击依然能执行 于是我将这个Jar包进行解压,发现在这个包中依然有资源,这就说明了这个包在脱离了原先目录而执行时,依据的资源路径应该是在自己的Jar包中.(至于这个Jar在原先目录时是根据自己包…
当我们将程序写好,并进行打包成Jar文件时,通常都带有各种资源,这些资源可以是图像或者声音文件,也可以是别的如文本文件或二进制文件等,这些资源都和代码密切相关.例如在一个JPanel类上显示一些可能变化的信息,通常都是讲这些信息先写在文本文件上,而不是硬写入JPanel中,因为信息可能会变.而这文本文件就是这个程序的资源. 获得这些资源的位置有两种方式: 针对图像和影音的,使用包含这代码的类调用getResource(......)方法,然后利用getImage或者getAudioClip方法进…
使用Visual Studio打开解决方案,对<网站项目>右键点击<发布>,一切都是正常的,所有宏都可用,宏参数值也是正确的. 而通过批处理脚本命令调用MSBuild.exe对解决方案编译,一切也都是正常的,所有宏都可用,宏参数值也是正确的. 但如果你通过批处理脚本命令调用MSBuild.exe对解决方案下某个Web项目进行发布操作时,你会发现,某些针对解决方案可用的宏变得不正常,不可用,宏参数值都是错误的. 例如$(SolutionDir)在某些版本的MSBuild下它的值是&q…
Dotfuscator 简介 作为一种高级语言,c# 类库很容易被 .NET Reflector 这样的工具反编译.攻击者很容易从代码中找到数据库连接方式,加解密方法等重要信息.使用 dnspy 这样的工具甚至可以随意修改类库,下断点进行调试. 所以我们需要用 Dotfuscator 等工具对代码进行混淆. Dotfuscator 使用方法:https://www.preemptive.com/dotfuscator/pro/userguide/en/index.html Dotfuscator…
1.生成签名文件 在打包之前我们需要一个签名文件,证明文件的唯一性. keytool -genkey -v -keystore F:\APP\sign.jks -keyalg RSA -keysize 2048 -validity 10000 -alias sign F:\APP\sign.jks为签名问价存放目录,sign 为密钥名. 后面都有用,请牢记. 在控制台输入上方指令后,会依次让你输入密钥库口令.姓氏.组织机构等等,下方是我的截图: 查看证书SHA1: keytool -list -…
背景 公司代码提供给第三方使用,为了不完全泄露源码,需要对给出的代码进行加密混淆,前端代码虽然无法做到完全加密混淆,但是通过使用 webpack-obfuscator 通过增加随机废代码段.字符编码转义等方法可以使构建代码完全混淆,达到无法恢复源码甚至无法阅读的目的. 安装 webpack-obfuscator https://www.npmjs.com/package/webpack-obfuscator npm install --save-dev webpack-obfuscator 配置…