锅圈食汇这个小程序,是我经历过的所有逆向小程序中,最难逆向的之一。一个是因为加密方式多种多样,二是因为市场上反解小程序的都消失了,导致程序无法运行起来。
在我无法运行起来的程序后,我就只能尽可能去翻看里面内嵌的h5页面,再结合解码出来的小程序代码尝试寻找逆向的路子。这需要能看的懂代码,内力稍微的要深厚一点。
终于找到一个链接,里面还有接口的调用。
从图中不难发现,请求参数加密的,请求头中有Gqgw-Aes-Key-And-Iv,sign token 等加密头,返回结果也是加密的。这就是说,单纯的从小程序去逆向他,无从下手。就aes的key和iv 每次都是随机生成的,配合公钥进行rsa加密后,生成的base64作为请求头Gqgw-Aes-Key-And-Iv的内容,传递到服务端用密钥解密,然后拿着key和iv去解密请求参数
请求参数的加密,网页中是json转字符串,进行的aes默认方式的加密,当然解密也是一样的,这个不难,难点在于你在小程序的抓包,怎么知道原始的参数是什么?
如果不知道原始的参数,那逆向它又有何用?
知道了它的加密方式,公钥,接口名字,签名方式,下一步就是获取数据。
前面说参数是未知的,加密方式是不知道的,因为key 和iv 是存储在小程序本地的,但是小程序本地存储的数据我是没有办法拿到。如果拿到了,那别说上面的跑车,就算是要车里面的也都能拿到了。
如果小程序都是这种方式的加密,那逆向的门槛可就是太高了,建议推广至各个厂家。
加密方式:本地随机生成key和iv,用key和iv 作为内容,用公钥rsa加密之后转base64放在请求头中,本地生成的key和iv存放至本地,并设置过期时间。拿着key和iv 给请求参数加密,给返回结果解密!