小程序安全防护-微信网关&小程序加固突破(下)

小程序安全防护-微信网关&小程序加固突破(下)

image

写在前面

以下都是情节模拟,并非具体情况,请细加甄别

在上次对某克的小程序测试后,我得出了目前微信对小程序的防护措施(加固+网关)的方式,无法拦截掉本地动态调试的判断,但不知道是业务催得紧还是老板不死心还是微信又推产品了,总之,老板让我去上海跑个小差,参加一下微信的线下公开课,和他们好好讨论一下这个问题……

image

事前准备

纵使在公开课上对来会嘉宾介绍的非常有利,下会后当我当面提出 DevTools 本地动态调试的方法时,商务解释不了推给产品,产品解释不了提问经理,经理找来研发同学,肯定了我的说法,即:

  1. 目前微信网关更倾向于流量监测和风控行为的评估,请求在客户端封装后发往微信网关,再由网关转发至原服务端,这点与认知相同;

  2. 小程序加固目前针对的个体是.wxpkg的包,方法和我们认知的混淆、加壳一致(三级防护增大30-40%体积,五级防护增加三倍体积),无法动态调试指的是获得这个包后无法在本地微信开发工具中调试;

  3. 关于前端通过DevTools进行调试得到js中参数值和代码逻辑的防护,与他们的技术沟通过表示只能在js中加入禁止调试的代码(但也讨论了可以绕过)

即使这样还无法让老板信服,很简单,如果这几点是真的,那就把某特这个被微信誉为2025年上半年最佳小程序安全防护实践的项目弄下来试试

image

使用工具

  • 微信 PC 客户端最新版本

  • WMPFDebugger

  • Cheat Engine(CE)

  • 等等(市面上真的不少)

“受害者”入场

  • 小程序:某特

开始动手

某特

书接上回,某特的小程序要求微信版本不低于4.1.1(后来知道是不低于最新版本微信),但实际上这个限制可以绕过,甚至可以不绕过

你可以通过 Cheat Engine(CE),去搜寻低版本的地址,如 3.8.0.33 的十六进制为 63080021,找到对应地址后改成 64010224(4.1.2.36的十六进制),即可绕过版本限制,版本转换

image

然后你会发现提示你需要在移动端打开……但这个绕过也很容易,其实这个就是类似 wx.getSystemInfo() 这种接口获取设备信息,获取到字段为 windows,就跳转到限制页面了,你都可以打开 Debugger 了,在跳转前查到调用接口,修改参数值就可以了

image

image

可以看到确实是做了混淆的,但是可以被动态调试,即使混淆也能看到传参过程和内容的,只要肯有耐心,但这里我就不继续了,我的目的已经达到了,我又不是灰产= =

image

写在后面

纵使这番,老板也就消停了一会,两三周后又来问我,能不能和微信信用分关联啥的了,我只能说,安全没有否决业务阻拦生产的权利(至少在这家公司没有),只能识别到风险给足建议了,只是看(老板你)能不能说服业务了

image