【讨论】APP的免填邀请码解决方案
00x0 具体需求
app中已注册的用户分享一个含有邀请码的二维码,分享到朋友圈
新用户在朋友圈打开这个这个链接下载app.
新用户安装后打开app后就自动绑定邀请码
要求用户不填写任何东西
朋友老板出差给出的需求,感觉挺有意思……搞搞!
00x1 初步分析
1.APP
2.无填写
3.打开APP自动绑定邀请码
新用户没有填写任何信息,也就是说没有任何有效标识能够识别该用户,我们最好的办法就是从其他地方寻找有效标识,必要时可添加一个标识……
00x2 解决方案
想了很多,从其他地方寻找有效标识虽然可行但不稳定,所以我们只能添加一个标识了,那我们在哪添加标识呢?APK!对,只有APK是我们能够掌握的。
先了解一下APK的结构:

APK其实就是一个压缩文件,但是与平常的压缩文件有所不同,将后缀名改为zip打开后我们就可以看到如上结构。
Assets目录,这是存放静态文件的目录,嗯哼?静态文件意味着我们可以任意修改的,可以说是对APK进行了一次简单的反编译。
我们在Assets目录放一个txt文件,暂且命名为key.txt,里面放上邀请码,然后用APP启动后读取该静态文件就可以知道是谁邀请的了。
00x3 实现
我们先写好一个app然后编译打包签名,得到一个APK文件,我们将该APK文件后缀改为ZIP留之待用,新用户通过邀请链接到达下载页面,后台取得请求中的邀请码将其写出为一个新的key.txt,然后将key.txt加入到ZIP文件覆盖原key.txt(待用的ZIP里可以不放key.txt),将ZIP的后缀改为APK后提供给用户下载。
<?php
/*
php 添加一个文件到zip压缩文件中
参考代码
来源:https://www.jb51.net/article/62099.htm?tdsourcetag=s_pcqq_aiomsg
*/
$zip = new ZipArchive;
if ($zip->open('app.zip') === TRUE) {//app.zip 是已经存在的zip文件,注意中文文件名要注意编码问题
$zip->addFile('key.txt');//添加新的文件 具体路径自己来呗
$zip->close();
echo 'ok';
} else {
echo 'failed';
}
?>
00x4 问题

由于之前使用的安卓模拟器进行的测试所以在后续进行实机测试时才发现修改后的APK无法正常安装。
原因
谷歌的签名验证机制

Android 7.0之前的apk签名为v1方案(Jar Signature),Android 7.0之后推出了V2方案,且7.0之前是不支持V2的。

所以,我们之前那样直接修改后是不能直接用的(我使用的安卓模拟器没有签名验证),因此我们需要对我们修改后的APK再进行一次签名。
00x5 问题解决方案
使用Android studio自带的sdk中的apksigner.jar再次签名
apksigner具体使用文档: https://developer.android.com/studio/command-line/apksigner
apksigner sign --ks 签名文件 --ks-key-alias 证书名(别名) --ks-pass pass:签名密码 --key-pass pass:密匙密码 --out ouput.apk(输出路径) input.apk(输入路径)
或者使用jarsigner进行签名
jarsigner -verbose -keystore [您的私钥存放路径] -signedjar [签名后文件存放路径] [未签名的文件路径] [您的证书名称]
#jarsigner的参数说明
-keystore 参数指定您的私钥的绝对路径,例如: C:\Users\wz\Desktop\sign_verification\abcAndroidKey.jks
-signedjar 参数指定签名后apk文件存放绝对的路径,例如 C:\Users\wz\Desktop\sign_verification\oppoemptyapk- release-signed.apk
[未签名的文件路径] 指定要签名apk文件的绝对路径,也就是从要认领应用的平台下载到的,例如 C:\Users\wz\Desktop\sign_verification\oppoemptyapk-release-unsigned.apk
[您的证书名称] 是指您创建密钥时,您设置的证书名称,其实就是签名中的别名(即:keyAlias)
【讨论】APP的免填邀请码解决方案的更多相关文章
- 发现了一个App拉新工具:免填邀请码
去年公司开始着手开发一个App项目,从调研到开发完成,前前后后历时快半年(没少加班),目前产品已经上架了各个应用市场,名字就不提了,省得说我打广告.今年开年说要开始做冷启动了,大家都知道,这才是最苦逼 ...
- 手机app传统邀请码安装与免邀请码安装区别,如何选择呢?
App 邀请机制是每个产品几乎必做的功能点,它一般以两种形式存在:一是作为常置功能用于推荐,二是作为裂变活动用于邀请. 无论以哪种形式出现,都可以归为社交分享的一种表现方式.相较于营销推广,邀请好友机 ...
- 今日头条极速版邀请码以及其它APP邀请码大全
现在大多手机新闻APP都需要输入码,在网上找了很久,最终找到一个比较全的文章,本人试过,都是可以使用的! 第1个比较好,可边看新闻,边收益!嘻嘻!平时写代码累了,休息刷一下!或者在睡觉前刷新一下,每天 ...
- 花生日记_花生日记APP下载_花生日记邀请码
花生日记 国内领先的社交电商导购分享平台. 独创社交电商3+模式,社交+电商+社群,上线1个月注册用户超百万.合作商家涵括各个类目以及平台.为数万宝妈提供月收入3000以上兼职收入. 微信扫描下方二维 ...
- 斐讯 天天牛绑定教程 邀请码:8vozbf
天天牛邀请码 8vozbf 可以领取4代牛 最近斐讯推出了天天牛养成计划. 不过官方没有任何的指示教程,所以个人分享一个教程给大家. 1. 先把把旧的钱包备份一下 ,切记!! 而且一定要记得自己设的密 ...
- 【原创】“借贷宝”砸钱,邀请码 GZZKZK2 (注册成功每人可得20现金,可直接提现)。。。而这只是开始
作为IT/互联网资深码农的我,从专业技术角度剖析其流程,确认其各个环节控制严格,无欺诈嫌疑, 最佳运气邀请码 : GZZKZK2, 你在注册时值得拥有, 无邀请码无奖励, 亲一定要记住.对 APP操作 ...
- Python 练习册--生成唯一激活码(邀请码)
题目是这样子的: 做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)? 分析 其实要生成 ...
- 借贷宝推广得现金是真的_注册就送人民币20元_邀请码CRJYQTK
动动手指,20元立即到手.即优步uber打车和滴滴专车豪投数亿元争夺专车市场之后,一款名为借贷宝的APP推广在网上流传开来,目前主要看重的就是它的推广力度,豪投20亿让大众来推广.简单流程:下载借贷宝 ...
- C# Windows Phone 8 WP8 , 文字超连结到网页 免打程式码,Xaml就搞定 ! !
原文:C# Windows Phone 8 WP8 , 文字超连结到网页 免打程式码,Xaml就搞定 ! ! 一般我们在开发Windows Phone 8 APP ,有时会需要超连结连到其他的网页,但 ...
随机推荐
- vim vi 高亮第80列 Python PEP8规范 行最大长度设置
命令模式下 :set cc=80 或者 打开 vim的配置 文件 .vimrc vim ~/.vimrc 接着你会看到你的配置文件 在配置文件中加上这样行配置代码 set cc=80 ok 现在退出v ...
- PWN学习之整数溢出
目录 PWN学习之整数溢出 整数溢出 溢出和回绕 漏洞多发函数 整数溢出例子 PWN学习之整数溢出 整数溢出 如果一个整数用来计算一些敏感数值,如缓冲区大小或数值索引,就会产生潜在的危险.通常情况下, ...
- 【Azure 应用服务】App Service for Linux 中实现 WebSocket 功能 (Python SocketIO)
问题描述 使用 python websockets 模块作为Socket的服务端,发布到App Service for Linux环境后,发现Docker Container无法启动.错误消息为: 2 ...
- 关于axios 的responseType类型的设置
responseType值的类型可为如下 axios请求下载导出一个文件,请求成功时返回的是一个流形式的文件,需要设置responseType: 'arraybuffer',但是请求失败的需要返回的是 ...
- Windows 2008 R2 NTP 时钟同步配置
一.配置 本地组策略 a.windows+R 或 "开始菜单" | "运行" ,打开运行窗口. 输入gpedit.msc打开本地组策略 b.在 本地组策略 ...
- DeWeb : 制作图片轮换效果
演示:http://www.web0000.com/slide.dw源代码:http://www.web0000.com/media/source/slide.zip一.新建一个DLL二.除第一行外, ...
- Canvas 放烟花合集 -- 用粉丝头像做成烟花绽放🧨
"我对着烟花许愿,希望你永远在我身边" "凑不够满天星辰那就去看看烟花吧,人间烟火气,最抚凡人心" 小tips:喜欢的可以关注博主私信代码噢~ 也可以看看前面两 ...
- uni-app路径规划(打开第三方地图实现)
百度网盘链接:https://pan.baidu.com/s/1-Ys13GFcnKXB1wkJotcwMw 提取码:16gp 把js文件放在common目录下 引入: import pathP ...
- flower 指定app
flower 指定app # tasks.py from celery import Celery celery = Celery(broker="amqp://", backen ...
- cgdb | 一起边看源码边调试gdb吧
简介 cgdb是一款轻量级的基于gdb的命令行可视化工具,关系大致如下: 尽管gdb本身可以通过layout src的命令显示源码布局,但是其功能还是过于简陋. 使用cgdb并不需要你重新去学习过多额 ...