精华内容
下载资源
问答
  • 马甲包

    千次阅读 2018-08-24 16:12:04
    切断当前马甲包与以往马甲包的所有相似性关联; 相似性关联包括: 1. ipa包特征; 2. 开发者帐号; 3. 打包电脑; 4. 上传IP; 5. 材料相似; 分项细述: 1. ipa包特征:  包括有代码相似性,资源相似性;...

    规避4.3的重心:

    切断当前马甲包与以往马甲包的所有相似性关联;

    相似性关联包括:

    1. ipa包特征;

    2. 开发者帐号;

    3. 打包电脑;

    4. 上传IP;

    5. 材料相似;

    分项细述:

    1. ipa包特征:

      包括有代码相似性,资源相似性;

      代码相似性解决办法:

        a. 已有代码的混淆(改类名、改函数名)

        b. 添加一些无用的代码;

      资源相似性解决办法:

        a. 资源改名;

        b. 适当添加一些无用的资源;

    2. 开发者帐号:

      两个马甲包不要关联到同一个开发者帐号的信息;比如打包时关联。

    3. 打包电脑:

      有条件的最好用不同的MAC来打包(每台MAC上最好打包马甲包不要超过5个)

    4. 上传IP:

      上传马甲包时,IP不要跟其他马甲包的IP相同;

    5. 材料相似:

      itu后台材料如宣传图,ICON,版权人不要出现相同;

    【注:即使是前边没审核过的包,也不要跟他们有关联。尤其是前边被4.3拒绝的包,更不能跟他们有相似性】

    ----------

    以上的能做到,基本大部分马甲可以顺利通过4.3这道坎了。更高级的技巧,待后续整理。

    ----------

     

    展开全文
  • ASO马甲包马甲包上架注意事项

    千次阅读 2018-12-28 10:20:47
    马甲包已普及开来,若现在一个ASOer不懂马甲包甚至可以判定为是一个不合格的ASOer,那马甲包上架到底有哪些需要注意的事项,本文为你一一列举出来:   ----马甲包是什么意思? 顾名思义,马甲包的字面意思是给...

    马甲包已普及开来,若现在一个ASOer不懂马甲包甚至可以判定为是一个不合格的ASOer,那马甲包上架到底有哪些需要注意的事项,本文为你一一列举出来:

     

    ----马甲包是什么意思?

    顾名思义,马甲包的字面意思是给APP主包穿一层马甲,主要做导流,可以比喻为是APP主包的一种分身。通过技术手段,多次上架同一款产品的方法,马甲包越多,说明流量入口越多,只有抢占更多的应用市场入口,流量才会客观,马甲包和主产品包拥有同样的内容和功能,除了icon和应用名称不能完全一致,其他基本一致。

    ----马甲包有什么作用?

    最核心的作用是获取有效客户。另外一方面是增加关键词的覆盖量,众所周知,单个APP只能有100个字符的关键词,多个APP就意味着可以覆盖N×100个字符的关键词,关键词覆盖越多,就意味着能够被更多的客户搜索到,有展现量,才有下载量,有下载量才有可能发展成为有效客户。

     

    1、提前办理软著

    现在安卓应用主流市场上架除开华为、小米外,其他市场均需要软著,在应用上架之前就需要办理好软著,建议提前30个工作日办理

     

    2、上架开发者账号

    本人建议一个开发者挂2个包就可以,随着马甲包的普及开来,个人预估:应用市场官方人员迟早会查处同一开发者账号下的马甲包,被查到的马甲可能会被下架,并对主包产生影响。新增量下降了姑且不谈,之前投入的打词、做前端下载量的所有工作都奖前功尽弃,总之不要把鸡蛋放在一个篮子里。(ps:说多了都是泪,小编已经被下架几十款马甲)

     

    3、包名设置

    建议应用包名和主包名命名不一样,原因:竞争对手可能根据其主包名特点,通过酷传找到你家的其他马甲包,好一点的结果是:竞争对手随即模仿,增加竞争激烈程度;差一点的结果是:竞争对手向应用市场举报。

     

    3、界面有所改动

    界面上要所有改动,笔者曾经上架过界面与一竞品一致的马甲包,被应用宝打回。原因:模仿抄袭XX应用,属于盗版应用,个人猜测应该是应用宝人工智能检测到的界面重复度太高的原因导致。

     

    4、有一定的精致度

    小米对此方面监控最为严格,若应用功能以及界面太过简单,会被小米市场判定为:粗制滥造,简单套用模板,进而不审核通过,笔者遇到过不下10次。

     

    展开全文
  • iOS马甲包

    2020-06-03 10:42:17
    1. 马甲包 1.1 什么是SDK马甲包? 贷款超市,期货原油,现金贷,理财,棋牌麻将闲游,cp,BC马甲包是利用 App store 的规则漏洞,通过技术手段,多次上架同一款产品的方法。马甲包和主产品包拥有基本一致的内容和功能,...

    1. 马甲包

    1.1 什么是SDK马甲包?

    贷款超市,期货原油,现金贷,理财,棋牌麻将闲游,cp,BC马甲包是利用 App store 的规则漏洞,通过技术手段,多次上架同一款产品的方法。马甲包和主产品包拥有基本一致的内容和功能,项目代码基本都是完全复用的,除了图标,应用名称,包名等不一致,其他基本一致。

    1.2 贷款超市金融类App为什么做马甲包,以及马甲包的好处

    • AB 测试 可以测试跨度大的新功能,好的功能就在主包上迭代,不好的也无所谓,不影响主包的使用体验,避免用户流失。
    • 导流 主包和马甲包同属一个平台,用户信息可以共享;通过弹窗,广告,Push等引导用户到App Store下载主App;有一部份App接了网盟相互导流。
    • 增加关键词覆盖 App Store关键词长度上限是100个字符,据了解人为正常优化的极限是关键词覆盖数在4000左右,那些覆盖数在8000+的都是利用了苹果漏洞。所以,多做一个马甲,也就意味着覆盖的关键词可以更多。
    • 刷榜 积分墙、真机、机刷等。用马甲包来刷排名,抵抗主包风险。

    1.3 马甲包制作注意事项

    • 二进制不同 应用名称,图标,包名,工程名,打包电脑,代码,静态资源等的修改。
    • 差异化 整体UI,产品功能,页面布局等的修改

     

    二,需要做的操作

    1.5 优化图片大小,修改图片 hash 值

    • ImageOptim mac 下无损压缩图片工具,将包含图片的文件夹拖入工具,会自动扫描文件夹下的所有文件,自动选择最优算法进行优化。一般第一次优化项目时,会有几M到10几M的优化效果。
    • ImageMagick ImageMagick: 是一款创建、编辑、合成,转换图像的命令行工具。 通过 brew 安装 imagemagick

    brew install imagemagick

    压缩文件夹下所有 png 文件,会修改 hash 值

     find . -iname "*.png" -exec echo {} \; -exec convert {} {} \; 

    2. 逆向基础,以及为什么要做混淆

    当我们用 Xcode 构建一个程序的过程时,编译器会把源文件 (.m 和 .h) 文件转换为一个可执行文件。这个可执行文件中包含的字节码会将被 CPU 执行,虽然不能直接从这些字节码中查看我们的核心代码,但是黑客可以通过一些反汇编的逆向工具来分析我们的程序,找到漏洞进行破解。

    可执行文件格式

    EXE Windows 下可直接执行的文件扩展名 ELF Linux 下的可执行文件 Mach-O MacOS/iOS下主要的可执行文件

    2.1 Mach 与 Mach-O

    Mac 是苹果电脑 Macintosh 的简称,而 Mach 则是一种操作系统内核。Mach 内核被 NeXT 公司的NeXTSTEP 操作系统使用。在Mach上,一种可执行的文件格是就是 Mach-O(Mach Object file format)。1996年,乔布斯将 NeXTSTEP 带回苹果,成为了OS X的内核基础。所以虽然 MacOS X 是 Unix 的“后代”,但所主要支持的可执行文件格式是 Mach-O。

    2.2 iOS 可执行文件

    通常我们通过 Xcode 打包或者从应用商店下载的 APP 都是 ipa 包(iPhone Application)。这是一个变相的 zip 压缩包,可以通过 unzip 命令进行解压。

    解压之后,会有一个 Payload 目录,而 Payload 里则是一个 .app 文件,而这个实际上又是一个目录,或者说是一个完整的 App Bundle。

    在这个目录中,里面体积最大的文件通常就是和 ipa 包同名的一个二进制文件。通过 file 命令可以查看该文件的类型

    xx: Mach-O universal binary with 2 architectures: [arm_v7:Mach-O executable arm_v7] [arm64]
    xx (for architecture armv7):	Mach-O executable arm_v7
    xx (for architecture arm64):	Mach-O 64-bit executable arm64

    这里可以看出,这是一个支持 armv7 和 armv7s 两种处理器架构的通用程序包,里面包含的两部分都是 Mach-O 格式。

    i386 模拟器32位处理器 x86_64 模拟器64位处理器 armv7,armv7s 真机32位处理器 arm64真机64位处理器

    Mach-O 的文件结构:

     

     

    从这张图上来看,Mach-O文件的数据主体可分为三大部分,分别是头部(Header)、加载命令(Load commands)、和最终的数据(Data)。

    2.3 class-dump

    class-dump 是一个利用 Objective-C 语言的 runtime 特性,将存储在 Mach-O 文件结构里 data 部分的类属性和方法等信息提取出来,并生成对应的 .h 文件的工具。注意: 必须是脱壳后的可执行文件。(比如通过越狱手机或者第三方应用下载渠道)

    2.4 安装使用

    在 class-dump 官网下载 dmg,将 dmg 里面的 class-dump 拷贝到 /usr/local/bin 文件夹下,然后就可以在终端中使用 class-dump 命令了。

    简单使用:

    class-dump -H [需要被导出的 Mach-O 文件路径] -o [头文件输出目录地址]

    也可以可以查看导出后的头文件目录:

     

     

    2.5 hopper

    Hopper 是一种适用于 OS X 和 Linux 的逆向工程工具,可以用于反汇编、反编译和调试 32位/64位英特尔处理器的 Mac、Linux、Windows 和 iOS 可执行程序。

    将 Mach-O 文件拖入 hopper 可以查看。

     

     

    通过以上的方式,别人可以对照应用的功能来分析代码逻辑,从而进行针对性的破解。所以对项目的核心的代码进行混淆就是非常有必要的了。

    3. 马甲包代码混淆

    常规的混淆思路:

    • 花代码花指令,即随意往程序中加入迷惑人的代码指令
    • 易读字符替换

    防止被 class-dump 后,被人分析核心代码逻辑。可以对关键,已读的字符串进行替换,比如 advip 等关键词。

    3.1 替换字符串混淆

    但是我们又不想替换成不想关的字符串后给自己调试带来麻烦,这里我们可以使用 HSKConfuse的 shell 脚本,通过在Build Phrase 中设定在编译之前进行方法名的字符串替换,从而在不影响自己编写代码的基础上,对编译后的二进制包进行混淆。

    首先在项目中新建文件:

    confuse.sh: 存放混淆的脚本
    func.list: 需要混淆的方法、变量名
    
    
    
    
     

    confuse.sh

     

    #!/usr/bin/env bash
    
    TABLENAME=symbols
    SYMBOL_DB_FILE="symbols"
    STRING_SYMBOL_FILE="$PROJECT_DIR/VHLObfuscationDemo/VHLObfuscation/func.list"
    
    CONFUSE_FILE="$PROJECT_DIR/VHLObfuscationDemo"
    HEAD_FILE="$PROJECT_DIR/VHLObfuscationDemo/VHLObfuscation/codeObfuscation.h"
    
    export LC_CTYPE=C
    
    # ** 可以不执行下面的方法,替换成自己的规则手动写入到 func.list 中**
    # 取以.m或.h结尾的文件以+号或-号开头的行,并以 vhl_ 开头的方法 |去掉所有+号或-号|用空格代替符号|n个空格跟着<号 替换成 <号|开头不能是IBAction|用空格split字串取第二部分|排序|去重复|删除空行|删掉以init开头的行>写进func.list
    grep -h -r -I  "^[-+]" $CONFUSE_FILE  --include '*.[mh]' |sed "s/[+-]//g"|sed "s/[();,: *\^\/\{]/ /g"|sed "s/[ ]*</</"| sed "/^[ ]*IBAction/d"|awk '{split($0,b," "); print b[2]; }'| sort|uniq |sed "/^$/d"|sed -n "/^vhl_/p" >$STRING_SYMBOL_FILE
    
    #维护数据库方便日后作排重,以下代码来自念茜的微博
    createTable()
    {
    echo "create table $TABLENAME(src text, des text);" | sqlite3 $SYMBOL_DB_FILE
    }
    
    insertValue()
    {
    echo "insert into $TABLENAME values('$1' ,'$2');" | sqlite3 $SYMBOL_DB_FILE
    }
    
    query()
    {
    echo "select * from $TABLENAME where src='$1';" | sqlite3 $SYMBOL_DB_FILE
    }
    
    ramdomString()
    {
    openssl rand -base64 64 | tr -cd 'a-zA-Z' |head -c 16
    
    }
    
    rm -f $SYMBOL_DB_FILE
    rm -f $HEAD_FILE
    createTable
    
    touch $HEAD_FILE
    echo '#ifndef Demo_codeObfuscation_h
    #define Demo_codeObfuscation_h' >> $HEAD_FILE
    echo "//confuse string at `date`" >> $HEAD_FILE
    cat "$STRING_SYMBOL_FILE" | while read -ra line; do
    if [[ ! -z "$line" ]]; then
    ramdom=`ramdomString`
    echo $line $ramdom
    insertValue $line $ramdom
    echo "#define $line $ramdom" >> $HEAD_FILE
    fi
    done
    echo "#endif" >> $HEAD_FILE
    
    sqlite3 $SYMBOL_DB_FILE .dump
    
    

    以上的 shell 脚本运行后会自动获取 .hm 文件中以 vhl_ 开头的方法写到到该文件。如果需要自定义的话,可以不执行以上那句命令,然后换成自己的规则写入 func.list 中。例如:

    vhl_isVIP
    xx_showAD
    yy_isAllow

    然后在 Build Phases 中,左上角加号添加 run script 填入地址

    3.2 查看编译结果

     

    成功编译后,会在指定目录下生成一个 codeObfuscation.h 文件。这里可以看到,在编译过程中会执行 shell 脚本,对相关字符串进行替换

    添加 .pch 文件,并在 Build Setttings > Prefix Header 中链接该 .pch 文件,在 .pch文件中导入 codeObfuscation.h,此时项目中指定的方法都被替换成了codeObfuscation.h中的宏定义。

     

     

    运行成功后将 Products 中的二进制文件拖入到 hopper 中查看

     

     

    此时,方法已经被混淆了。

    注意:这个不要大面积的使用,会有被审核拒绝的风险,拒绝原因是说你程序里面可能包含有隐藏功能,因为 apple 无法从这些混淆后的方法获取到有用的信息。

    4. 编译混淆

    以上我们虽然对关键字符串进行了混淆,但是实际代码的执行逻辑等并没有改变。黑客仍然可以通过分析代码逻辑或者伪代码来寻找程序的漏洞。那有没有可能改变编译后的代码逻辑,从而让别人无法分析我们的程序呢。

    4.1 iOS 是如何编译的

    Objective C采用 Clang 作为前端,而 Swift 则采用 swift() 作为前端,二者都是用 LLVM(Low level vritual machine) 作为编译器后端。

    编译命令地址

    # Objective-C
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
    # Swift
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift
    
    

    Xcode 编译过程:

     

     

    4.2 编译器

    4.2.1 相关名词

    GCC

    (GNU Compiler Collection)缩写,一个编程语言编译器,是GNU(自由软件理事会)的关键部分。也是GNU工具链的一部分。GCC常被认为是跨平台编译器的事实标准,特别是它的C语言编译器。GCC原本只能处理C语言。但是面对Clang的竞争,很快作出了扩展,现在已经可以处理C++,Fortran、Pascal、Object-C、Java、Ada,以及Go语言。许多操作系统,包括许多Unix系统,如Linux及BSD家族都采用GCC作为标准编译器。MacOSX也是采用这个编译器。

    LLVM

    是Low Level Virtual Machine的简称。这个库提供了与编译器相关的支持,能够进行程序语言的编译期优化、链接优化、在线编译优化、代码生成。可以作为多种语言编译器的后台来使用。

    Clang

    Clang 是 LLVM 的子项目,是 C,C++ 和 Objective-C 编译器,目的是提供惊人的快速编译,比 GCC 快3倍,其中的 clang static analyzer 主要是进行语法分析,语义分析和生成中间代码,当然这个过程会对代码进行检查,出错的和需要警告的会标注出来。

    前端编译器

    编译器前端的任务是进行:语法分析,语义分析,生成中间代码(intermediate representation )。在这个过程中,会进行类型检查,如果发现错误或者警告会标注出来在哪一行。

     

    后端编译器

    编译器后端会进行机器无关的代码优化,生成机器语言,并且进行机器相关的代码优化。iOS的编译过程,后端的处理如下

    LVVM 优化器会进行 BitCode 的生成,链接期优化等等。

     

     

    LLVM机器码生成器会针对不同的架构,比如arm64等生成不同的机器码。

     

     

    2000年,伊利诺伊大学厄巴纳-香槟分校(University of Illinois at Urbana-Champaign 简称UIUC)这所享有世界声望的一流公立研究型大学的 Chris Lattner(他的 twitter @clattner_llvm) 开发了一个叫作 Low Level Virtual Machine 的编译器开发工具套件,后来涉及范围越来越大,可以用于常规编译器,JIT编译器,汇编器,调试器,静态分析工具等一系列跟编程语言相关的工作,于是就把简称 LLVM 这个简称作为了正式的名字。Chris Lattner 后来又开发了 Clang,使得 LLVM 直接挑战 GCC 的地位。2012年,LLVM 获得美国计算机学会 ACM 的软件系统大奖,和 UNIX,WWW,TCP/IP,Tex,JAVA 等齐名。

    Chris Lattner 生于 1978 年,2005年加入苹果,将苹果使用的 GCC 全面转为 LLVM。2010年开始主导开发 Swift 语言。

    iOS 开发中 Objective-C 是 Clang / LLVM 来编译的。

    4.3 Hikari

    Hikari 是一个基于 Obfuscator-LLVM 对 Xcode9的适配。

    OLLVM 是瑞士西北应用科技大学安全实验室于2010年6月份发起的一个项目,该项目旨在提供一套开源的针对 LLVM 的代码混淆工具,以增加对逆向工程的难度。目前,OLLVM已经支持LLVM-4.0版本。

    4.3.1 安装

    下载 github 提供的 pkg 安装文件并双击安装

    https://github.com/HikariObfuscator/Hikari/releases
    

    然后重启 Xcode 就能看到已经有 Kikari 编译工具

     

     

    4.3.2 使用

    1. Xcode -> Toolchains -> Hikari 将混淆工具和项目关联
    2. 将所有与要运行的 target 相关的 target(包括pod进来的库)Enable Index-While-Building的值改为 NO
    3. Optimization Level 的值设置为 None[-O0]
    4. 在 Build Settings -> Other C Flags 中加入混淆标记
    -mllvm -enable-bcfobf 		启用伪控制流  
    -mllvm -enable-cffobf 		启用控制流平坦化
    -mllvm -enable-splitobf 	启用基本块分割  
    -mllvm -enable-subobf 		启用指令替换  
    -mllvm -enable-acdobf 		启用反class-dump  
    -mllvm -enable-indibran 	启用基于寄存器的相对跳转,配合其他加固可以彻底破坏IDA/Hopper的伪代码(俗称F5)  
    -mllvm -enable-strcry 		启用字符串加密  
    -mllvm -enable-funcwra 		启用函数封装
    -mllvm -enable-allob        依次性启用上述所有标记

    重新编译就会使用 Hikari 在编译器后端对项目进行编译了。

    将编译后的二进制文件拖入 hopper 中进行对比

     

     

    发现代码已经被混淆过了。 最新的 Xcode10 通过非官方默认的 Toolchains 编译后的的 ipa 是拒绝提交审核的。

    总结

    以上是对 iOS 下马甲包,代码混淆,编译混淆的一些学习实践,实际使用中需要根据自己的实际需求进行调整尝试。

    展开全文
  • Android马甲包

    万次阅读 2018-03-06 18:58:13
    在开发马甲包之前,一定要和产品或者运营的同事讨论清楚马甲包的具体需求,比如需要制作多少个马甲包马甲包和主包有哪些差别,之后开发的功能是否需要在马甲包上体现等等,只有了解清楚了需求,才能达到事半...

    一、马甲包介绍

            在App的开发过程中,经常会遇到产品或者运营的同事提出要制作马甲包的需求;马甲包是指与原APP包除了包名,包id,包名称图标等给用户加以区分的东西,其他功能基本不变的APP包。在开发马甲包之前,一定要和产品或者运营的同事讨论清楚马甲包的具体需求,比如需要制作多少个马甲包,马甲包和主包有哪些差别,之后开发的功能是否需要在马甲包上体现等等,只有了解清楚了需求,才能达到事半功倍的效果。


    二、马甲包的制作流程

    1、新建一个Android项目,名称为MajiabaoTest,如图:

    2、配置马甲包applicationId以及应用名称

    在app的build.gradle文件中添加马甲包的配置

        defaultConfig {
            applicationId "com.liunian.majiabaotest"
            minSdkVersion 15
            targetSdkVersion 26
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
            manifestPlaceholders = [APP_NAME: '主包名称'] // 配置主包的应用名称
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                signingConfig signingConfigs.releaseConfig
            }
            // 第一个马甲包
            majiabaoOne.initWith(buildTypes.release) // 以release的配置来初始化马甲包配置
            majiabaoOne {
                applicationIdSuffix ".majiabaoOne" // 修改马甲包的applicationId,马甲包的application将为com.liunian.majiabaotest.majiabaoOne,即在原来的applicationId后加上配置内容
                manifestPlaceholders = [APP_NAME: '第一个马甲包'] // 配置马甲包的应用名称
            }
        }

    在AndroidManifest.xml文件中引用APP_NAME
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="${APP_NAME}"
            tools:replace="android:label"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
    同步一下项目(sync project),这个时候在Build Variant中就有马甲包对应的版本了,如图:


    在Build Variant中分别选择release和majiabaoOne,编译运行项目,可以得到两个不同的应用

    可以看到,两个应用的名称是不一样的,用adb shell dumpsys window | findstr mCurrentFocus分别查看两个应用的applicationId,如下:

    两个应用的applicationId是不一样的。

    3、修改应用图标icon

    Android应用在编译时,会以applicationId后缀编译资源,所有根据不同的马甲包,可以编译不同的资源,如果后缀资源文件中有对应的资源,则将会用后缀资源文件中的资源覆盖主包资源,在src目录下新建一个以马甲包后缀命名的目录,并添加应用icon的资源文件,马甲包即可使用对应的应用图标,如图:


    将Build Variant选中为majiabaoOne,运行app,发现马甲包的应用icon已经修改


    4、修改应用资源文件

    根据上面我们知道,我们可以通过配置马甲包资源文件来修改马甲包的外观,比如主题色,应用图标,文字描述,动画效果等等,下面依次举例说明:

    修改应用主题色

    我们知道,首先,我们在应用的colors.xml中定义应用的主题色,然后所有和主题色相关的颜色都需要引用该主题色,在main/res/values/colors.xml中定义应用的主题色,如下:

        <color name="colorPrimary">#3F51B5</color>
        <color name="colorPrimaryDark">#303F9F</color>

    然后在马甲包的资源文件中覆盖掉主包对主题色的定义,在majiabaoOne/res/values/colors.xml中定义主题色,如下:

        <color name="colorPrimary">#D43C33</color>
        <color name="colorPrimaryDark">#C2352C</color>

    在Build Variant中分别选择release和majiabaoOne,运行如下:

    修改应用图标的方式前面已经有说过了,参考马甲包应用icon的配置

    5、修改文字描述

    文字描述我们一般定义在res/values/strings.xml中,我们只需要在马甲包中对对应的文字描述进行重定义,即可修改,下面我们将马甲包主页面中的“Hello World!”修改为“我是一个马甲包!”。

    在majiabaoOne/res/values/中新建strings.xml,并对描述文字进行重定义,如下:

        <string name="string_desc">我是一个马甲包!</string>
    运行效果如下:

    其他如布局(不建议对布局进行重定义,因为后期维护需要维护两套布局文件,容易出错)、动画样式、文字样式、按钮样式等都可以通过这种方式来对重新定义马甲包的UI。

    6、在AndroidManifest引用applicationId

    在AndroidManifest中我们经常需要通过applicationId定义一些声明等,比如接入极光推送,我们就需要在Manifest文件中声明一下权限:

        <permission
            android:name="com.liunian.majiabaotest.permission.JPUSH_MESSAGE"
            android:protectionLevel="signature" />

    前面com.liunian.majiabaotest是applicationId,但是马甲包的applicationId和主包是不一样的,所有不能再Manifest文件中写死,这个时候我们就可以通过引用applicationId来动态定义:

        <permission
            android:name="${applicationId}.permission.JPUSH_MESSAGE"
            android:protectionLevel="signature" />


    三、总结

    1、我们可以通过修改applicationId来将马甲包和主包区分开

    2、我们可以通过重新定义资源文件来修改马甲包的UI显示


    附上源码:https://github.com/2449983723/MajiabaoTest.git






    展开全文
  • ios马甲包

    2019-12-30 17:19:32
    一、什么是马甲包 马甲包是利用App store 规则漏洞,通过技术手段,多次上架同一款产品的方法。马甲包和主产品包拥有同样的内容和功能,除了icon和应用名称不能完全一致,其他基本一致。 二、为什么做马甲包,做马甲...
  • 初识马甲包

    千次阅读 2018-07-25 10:54:23
    看博客了解到马甲包,现在做下总结 马甲包是指与原APP包除了包名,包id,包名称图标等给用户加以区分的东西,其他功能基本不变的APP包。 作用:马甲包是利用各大市场规则漏洞,通过技术手段,多次上架同一款产品的...
  • 马甲包变种版本

    2018-05-09 12:22:07
    通过配置文件,来达到一个项目创建多个马甲包,只是名字,logo,资源文件的不同,有详细的注释,对于初学的人,非常适合。
  • iOS 马甲包

    千次阅读 2019-04-28 15:52:41
    原文地址::... 相关文章 1、IOS马甲包混淆----https://blog.csdn.net/lyzz0612/article/details/80390362 2、iOS马甲包混淆方案 ----https://www.sohu.com/a/226191652_100108770 3、iOS...
  • iOS 马甲包代码混淆工具 .
  • 杂谈-iOS马甲包

    2020-10-14 14:12:19
    什么是马甲包 马甲包一般是主APP的分身或者克隆,也或者说是穿着马甲的一个APP,脱掉马甲,APP将呈现另一种样式,也就是常说的AB面APP。 1、主APP的分身或者克隆类型的马甲包 先说第一种就是主APP的分身或者克隆,...
  • iOS马甲包上架招式

    2020-12-11 16:06:42
    一、什么是马甲包 马甲包是利用App store 规则漏洞,通过技术手段,多次上架同一款产品的方法。马甲包和主产品包拥有同样的内容和功能,除了icon和应用名称不能完全一致,其他基本一致。 二、为什么做马甲包,做...
  • 马甲包的存在

    2018-11-22 14:28:26
    小编作为一名新的app市场数据统计员,小编发现以前非常火热的马甲包已经慢慢失热度。 很多iOS开发者联系小编,但是很多人是做正规的app开发,没有上架过马甲包。 今天小编就跟大家讲一下 什么是 马甲包? 顾名思义,...
  • iOS代码混淆加密工具 制作iOS马甲包,包括代码加密、代码混淆、修改方法名、修改类名、生成垃圾代码、修改工程名等 https://zfj1128.blog.csdn.net/article/details/95482006
  • App马甲包分包策略

    2021-03-18 10:14:54
    马甲包这个词相信很多App开发者应该经常听到了,但这个词是什么意思,跟马甲包的意义何在,接下来方智ASO就为你一一解开。 普遍认为马甲包就是与主App的内容相同,但icon、标题接近,一般是开发者用来实验/规避风险...
  • iOS代码混淆工具 马甲包混淆工具 https://zfj1128.blog.csdn.net/article/details/95482006
  • 简单配置马甲包

    2020-12-02 15:47:08
    1.在gradle.properties 同目录下创建一个 马甲包的配置文件 2.在app的gradle根部 写下 def getInteger(String name) { def versionFile = file(rootDir.getAbsolutePath() + "/flavors.properties") if ...
  • Android如何创建马甲包

    2020-04-29 10:22:16
    Android如何创建马甲包:跳转地址
  • 熟悉下apple 马甲包

    2018-03-12 09:47:00
    熟悉下apple 马甲包 一、什么是马甲包 马甲包是利用App store 规则漏洞,通过技术手段,多次上架同一款产品的方法。马甲包和主产品包拥有同样的内容和功能,除了icon和应用名称不能完全一致,其他...
  • iOS 马甲包过包注意事项

    千次阅读 2019-01-04 10:24:12
    iOS 马甲包过包注意事项 核心代码(非马甲代码)的注意事项 版本控制 由于开发过程中核心代码会随着需业务需求的改变,需要考虑做好版本控制,个人认为可以将核心代码通过git进行版本控制。 避免”代码重复“的问题...
  • iOS马甲包上架总结

    2019-05-27 18:49:00
    iOS马甲包上架首先明白一点,这个上架的app马甲包一定是不合规的.不然也不会使用马甲包上架. 上架过程中遇到的坑. 因为已经上架了自己的App,但是还需要上架一个这个App的马甲包.所以在原来的工程里面需要怎么做才...
  • iOS 马甲包制作

    千次阅读 2018-07-25 15:24:56
    一、马甲包简介 在ASO中马甲的意思就是内容与主APP一样,但icon图标、应用名不同,一般来说开发者的帐号是不同的,但也有的同鞋做的马甲开发者帐号都是同一样,不过这样的话,隐蔽性要差一些。 做马甲有哪些好处 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 488
精华内容 195
关键字:

马甲包