当前位置:编程学习 > wap >>

如何防止开发的软件被山寨?

在google  play上发布自己的应用,不想被第三方插入广告或者山寨,应该怎么处理?豌豆荚有个洗白白的功能,想问一下它这个功能是依据什么来判断软件是山寨或者带广告的? --------------------编程问答-------------------- 关注!!!有经验的人来介绍一下,大家受益 --------------------编程问答-------------------- apk包里有签名和签名验证信息,通过对比验证信息,可以判断是不是开发者发布的正式版本. --------------------编程问答--------------------
引用 2 楼 areful 的回复:
apk包里有签名和签名验证信息,通过对比验证信息,可以判断是不是开发者发布的正式版本.
但是签名只是在第二次安装一个应用的时候,如果签名不一样,会告诉用户卸载后重新安装。豌豆荚的洗白白是扫描手机安装应用,如果有广告或者是山寨的,提示用户进行洗白 --------------------编程问答-------------------- 用混淆器把。。 --------------------编程问答-------------------- 关键代码用NDK写 --------------------编程问答--------------------
引用 5 楼 wlcw16 的回复:
关键代码用NDK写
这样只是保护我的代码不被反编,我想知道豌豆洗白白怎么区分山寨软件的,请问对这块了解吗?分享一下 --------------------编程问答--------------------
引用 6 楼 lcfanli 的回复:
Quote: 引用 5 楼 wlcw16 的回复:

关键代码用NDK写
这样只是保护我的代码不被反编,我想知道豌豆洗白白怎么区分山寨软件的,请问对这块了解吗?分享一下


不了解。是不是搜索apk引用的jar包?看有没有广告公司的jar包存在? --------------------编程问答-------------------- 没人知道吗?自己顶一下! --------------------编程问答-------------------- 正在研究,不过很难,毕竟odex的格式和class的格式都放在那里的
这两java编出来的东西本来就算是半公开的
有个思路给你说一下吧 
在你so或者class里面对你的程序嵌入一个在线验证(最好是对用户手机进行加密之后的数据或者正版系统在google play中的时间戳或者和你的签名包有关的东西),如果是不匹配就提示用户是盗版。 --------------------编程问答--------------------
引用 9 楼 dxjwolf 的回复:
正在研究,不过很难,毕竟odex的格式和class的格式都放在那里的
这两java编出来的东西本来就算是半公开的
有个思路给你说一下吧 
在你so或者class里面对你的程序嵌入一个在线验证(最好是对用户手机进行加密之后的数据或者正版系统在google play中的时间戳或者和你的签名包有关的东西),如果是不匹配就提示用户是盗版。
google有个Application Licensing签名http://developer.android.com/google/play/licensing/index.html,请问您知道这个和反盗版有什么关系吗? --------------------编程问答--------------------
引用 10 楼 lcfanli 的回复:
Quote: 引用 9 楼 dxjwolf 的回复:

正在研究,不过很难,毕竟odex的格式和class的格式都放在那里的
这两java编出来的东西本来就算是半公开的
有个思路给你说一下吧 
在你so或者class里面对你的程序嵌入一个在线验证(最好是对用户手机进行加密之后的数据或者正版系统在google play中的时间戳或者和你的签名包有关的东西),如果是不匹配就提示用户是盗版。
google有个Application Licensing签名http://developer.android.com/google/play/licensing/index.html,请问您知道这个和反盗版有什么关系吗?


Google Play offers a licensing service that lets you enforce licensing policies for applications that you publish on Google Play

这个就是我说的思路的一种实现,但是比我说的要实现的精妙多了,
问题是在天朝,google play被墙了,我们只有山寨货的安卓应用市场用,里面自然也是山寨货了。 --------------------编程问答--------------------
引用 3 楼 lcfanli 的回复:
Quote: 引用 2 楼 areful 的回复:

apk包里有签名和签名验证信息,通过对比验证信息,可以判断是不是开发者发布的正式版本.
但是签名只是在第二次安装一个应用的时候,如果签名不一样,会告诉用户卸载后重新安装。豌豆荚的洗白白是扫描手机安装应用,如果有广告或者是山寨的,提示用户进行洗白


以我的理解,豌豆夹有个正式版本的数据库,里面包含了所有收录到的正式版本软件的签名验证信息.每次验证时,读出要验证的程序的签名信息,和数据库里的进行比较,相同就说明是正式版本,不同的就是山寨版本. --------------------编程问答-------------------- 我也正在关注 --------------------编程问答--------------------
引用 12 楼 areful 的回复:
Quote: 引用 3 楼 lcfanli 的回复:

Quote: 引用 2 楼 areful 的回复:

apk包里有签名和签名验证信息,通过对比验证信息,可以判断是不是开发者发布的正式版本.
但是签名只是在第二次安装一个应用的时候,如果签名不一样,会告诉用户卸载后重新安装。豌豆荚的洗白白是扫描手机安装应用,如果有广告或者是山寨的,提示用户进行洗白


以我的理解,豌豆夹有个正式版本的数据库,里面包含了所有收录到的正式版本软件的签名验证信息.每次验证时,读出要验证的程序的签名信息,和数据库里的进行比较,相同就说明是正式版本,不同的就是山寨版本.


引用 12 楼 areful 的回复:
Quote: 引用 3 楼 lcfanli 的回复:

Quote: 引用 2 楼 areful 的回复:

apk包里有签名和签名验证信息,通过对比验证信息,可以判断是不是开发者发布的正式版本.
但是签名只是在第二次安装一个应用的时候,如果签名不一样,会告诉用户卸载后重新安装。豌豆荚的洗白白是扫描手机安装应用,如果有广告或者是山寨的,提示用户进行洗白


以我的理解,豌豆夹有个正式版本的数据库,里面包含了所有收录到的正式版本软件的签名验证信息.每次验证时,读出要验证的程序的签名信息,和数据库里的进行比较,相同就说明是正式版本,不同的就是山寨版本.

估计这项收录正式版本的工作要专人专职了。。。 --------------------编程问答-------------------- http://asysbang.com/forum.php?mod=viewthread&tid=53&extra=page%3D1

其中有关于“防止别人修改自己的apk” --------------------编程问答-------------------- 签名是不可伪造的,文件MD5也很少会有重合,在当前的计算水平下很难破解文件MD5。所以利用对比这两个信息可以很准确的实现对应用的检测。 --------------------编程问答--------------------
引用 16 楼 rushonin 的回复:
签名是不可伪造的,文件MD5也很少会有重合,在当前的计算水平下很难破解文件MD5。所以利用对比这两个信息可以很准确的实现对应用的检测。

可以再对MD5值进行自己算法的加密运算验证(native实现),这样就更难破解了 --------------------编程问答-------------------- 对比签名,但是破解你的话,仍然没问题,直接搞掉你对比函数,甚至给你包名换了,这个时候,在对比签名就无效了,哈哈哈 --------------------编程问答--------------------
引用 18 楼 DrSmart 的回复:
对比签名,但是破解你的话,仍然没问题,直接搞掉你对比函数,甚至给你包名换了,这个时候,在对比签名就无效了,哈哈哈

希望你能把新版qq的“appid is invalid”给破解了。。。
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,