ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

微信小程序反编译的应对方法

2021-04-08 16:29:11  阅读:172  来源: 互联网

标签:反编译 微信 程序 com https 交互


    记得2018年,公司在做小程序的三方平台时,接触到小程序的反编译。根据网上博客,一步一步操作,bingo,搞定,so easy!

    虽然很开心获取到了小程序反编译的源码,但是担心也逐渐浮上了心头。我们自己的小程序被别人反编译了怎么办?而且后来也反编译了自己的小程序,反编译获取的代码竟然与源码基本相同。本人大学修的信息安全专业,对于安全方面比一般开发者更敏感。然后,就开始了搜集查找有什么防护手段。

    当时找了几天,得出的结论就是:微信小程序安全性做的很差,除了基本的代码混淆,来增加反编译后代码阅读难度,别无它法,只能期待微信自己对这个bug打补丁修复了。我们自己的小程序,即使别人反编译,也就是把UI给扒了,有价值的逻辑都没有写在小程序里,暂时可以不用太在意这个事情。后来又忙于其他业务,就没再关注这个事情了。

    最近,又负责微信小程序相关的业务了。有一个业务逻辑是这样的:小程序端需要上报用户是否观看了广告,以及根据用户观看广告的次数,对用户给予一定的奖励。如果保证不了上报信息的真实性,就尴尬了。先去查查,小程序还能不能被抓包反编译。艹,快三年了,竟然还没堵住这个漏洞。只是使用了法律武器,破解工具网上不那么好找了。

    小程序安全现状:仍可被抓包反编译(分包加载照样可以被反编译)。对于想抓包后,重新编译盗版上线的,无能为力,仍然停留在仅仅代码混淆层面(代码混淆,可以使用微信开发者工具的混淆勾选项,也可以使用其他的小程序开发框架来做,比如uniapp)。小程序开发者工具的本地配置里,现在加了一个代码保护的选项,网上说然并卵,我自己还没有尝试到底有没有用。下面说说目前的解决办法吧。

    一、单机版小程序。无法防止别人反编译后,重新编译上线。只能通过微信投诉和法律途径解决,但很难达到想要的效果。

    二、有网络交互的小程序。防不了别人偷你小程序端的代码,但可以放逐那些无耻的人再去偷你的数据。有几种方式:第一种,使用微信的登录获取到的token(用户无感知),到自己的服务器换取令牌(服务器拿着小程序给的数据需要到微信服务器验证,验证不通过则说明不是自己的小程序),给令牌一定的有效期,有效期内可以使用令牌与服务器进行数据交互;第二种,根据header的refer信息来判断请求是否来自自己的小程序(https://servicewechat.com/{appid}/{version}/page-frame.html,判断appid);第三种,使用云函数,把云函数当做一个网络请求的中间跳板来用,自己的小程序只能与自己创建的云函数进行交互,云服务再与自己的服务器进行数据交互,但是此方案的缺点也很明显,50万次/天的上限访问,有点坑,不够用呀。

    我们的小程序肯定是需要网络交互的小程序。那么问题来了,怎么满足我们的业务需求呢,选哪种比较好呢?一目了然,只有第三种能满足我们的要求,但访问次数的限制又导致我们不能用它。为什么呢?下面我来分析分析。我们不怕他们盗用我们的UI,数据也根据上面的思路可以防止不让他们用。但我们怕他们上报一些非正常数据,如果不使用云函数方案这个很难防住,因为小程序相当于裸奔,你怎么与服务器进行交互的,他们扒下来后裤衩都不剩了,他们只需要按照你请求的方式,请求你的API,给自己的账户增加虚拟币(假设为虚拟币),然后拿虚拟币兑换奖励我们就亏大了。云函数就不一样了,他们虽然扒下来,但是无法正常触发我们的云函数,从而保证我们数据交互的准确性。

    结论,小程序端仍然不能舒服地保证其安全性。云函数虽然是个办法,但次数受限。特别是保证通讯安全这块,APP开发那套保证安全的方法,在小程序反编译面前,完全失去了意义。当然,如果APP被反编译,被扒了个干净也是不能保证绝对安全的。但,显而易见的是,APP被反编译的难度是远高于小程序的。所以,各位看官,小程序想代码层实现安全目前就别想了,还是在业务层着手吧,尽量不要在小程序里做重利益的业务吧,比如像我们业务那样的(小程序端上报就增加用户虚拟资产,而且虚拟资产可以兑换实际奖励的),当然商城等类似的还是可以的(这种是sever为准的交互业务)。

    参考:

        https://developers.weixin.qq.com/community/develop/article/doc/0006eae23d09a00693a81ec0f5b813

        https://developers.weixin.qq.com/community/develop/doc/0004a6fe6bcdd8b4e117368d05bc00?highLine=%25E5%258F%258D%25E7%25BC%2596%25E8%25AF%2591&page=2#comment-list

        https://developers.weixin.qq.com/community/develop/doc/0004a6fe6bcdd8b4e117368d05bc00?highLine=%25E5%258F%258D%25E7%25BC%2596%25E8%25AF%2591

        https://developers.weixin.qq.com/community/minigame/doc/000cee70fe0c08f8f46778a2656c01

        https://developers.weixin.qq.com/community/develop/doc/000aee5cc24b90190cf67ecb751000?highLine=%25E5%258F%258D%25E7%25BC%2596%25E8%25AF%2591

    

标签:反编译,微信,程序,com,https,交互
来源: https://blog.csdn.net/fenglinxiu2008/article/details/115523538

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有