首页 > 编程语言 >VX小程序逆向分析

VX小程序逆向分析

时间:2023-06-29 09:01:09浏览次数:32  
标签:逆向 微信 程序 hook api VX com wx

VX小程序逆向分析 https://mp.weixin.qq.com/s/7yZzf4V-2fcn-jRwm4uO-w

VX小程序逆向分析

Sharp_Wang 看雪学苑 2023-06-28 18:03 发表于上海

Frida虽然确实调试起来相当方便,但是Xposed由于能够安装在用户手机上实现持久化的hook,至今受到很多人的青睐,对于微信小程序的wx.request API。

 

本文将以该API作为用例,介绍如何使用Xposed来对微信小程序的js API进行hook,首先我们要知道微信小程序跟服务器交互最终都会调用wx.request这个api跟服务器交互,我们的最终目的是要通过分析这个api得到request数据和response数据,测试的微信版本是8.0.30。


背景知识

 

众所周知,Xposed主要用于安卓Java层的Hook,而微信小程序则是由JS编写的,显然无法直接进行hook。安卓有一个WebView的组件能够用于网页的解析和js的执行,并且提供了JSBridge可以支持js代码调用安卓的java代码,微信小程序正是以此为基础开发了它的微信小程序框架,微信小程序特有的API则是由这个框架中的WxJsApiBridge提供的,因此以wx.开头的API都能在这个框架中找到对应的Java代码,所以我们虽然不能直接hook js代码,但是我们可以通过hook这些js api对应的Java代码来实现微信小程序api的hook。


Frida调试

在编写Xposed插件前,首先先使用Frida进行逆向分析以及hook调试,确保功能能够实现后在用Xposed编写插件,毕竟Xposed插件调试起来还是不如Frida方便。


首先我们要知道,js代码中的wx.xxx字符串一定会在java层中出现吗?答案是否定的,wx.getLocation和其他一些api的名字确实会在java层出现,java层的字段表现形式就是 String NAME = “getLocation”,但是我们今天要分析的api wx.request在java层中不叫这个名字,因此在jadx反编译完微信以后,直接搜索该字符串是搜索不到的。既然搜索不到那就换一个思路,微信小程序wx.xxx最终都会通过WxJsApiBridge调用到java层对应的api实现,所以我们可以通过frida hook这个类相应的方法来确定wx.request在java层对应的api叫什么名字,通过jadx搜索发现有一个类叫做com.tencent.mm.appbrand.commonjni.AppBrandJsBridgeBinding。


定位到具体的类以后,我们可以用Objection来hook整个类来观察这个类中函数的调用情况,以此发现主要的函数。不过在hook之前,需要注意的是,微信小程序一般会以新进程的方式启动,其进程名为com.tencent.mm:appbrand0、com.tencent.mm:appbrand1、com.tencent.mm:appbrand2、com.tencent.mm:appbrand3、com.tencent.mm:appbrand4。微信最多同时运行5个小程序进程,所以最多只能同时运行5个小程序,如果打开第6个小程序,微信会把最近不怎么用的小程序关掉给新打开的小程序运行,因此,如果直接用frida -U com.tencent.mm -l xxx或者objection -g com.tencent.mm explore来hook的话,是无法看到函数调用的,因为你hook的进程不是微信小程序的进程而是微信的进程。所以我们要指定pid来进行hook,可以使用dumpsys activity top | grep ACTIVITY来得到;也可以使用frida -UF -l xxx来hook当前最顶层的Activity。对于Xposed则没有这个问题,只需指定微信的包名就会自动hook上所有的子进程。

 

 

 

 

翻译

搜索

复制

标签:逆向,微信,程序,hook,api,VX,com,wx
From: https://www.cnblogs.com/papering/p/17513102.html

相关文章

  • 恒压供水一拖二(程序图纸) 1.采用西门子224xp plc ,昆仑通态触摸屏
    恒压供水一拖二(程序图纸)1.采用西门子224xpplc,昆仑通态触摸屏;2.适用于大小功率,工变频互锁控制,安全,可靠;3.西门子224xpplc模拟量输出调速,适用市场所有变频器;4.采用双PID段数,恒压更快速,系统更稳定;7.此程序也可以用做一拖二一对一使用,懂得改下电路就可以,实现多重选择;原创文章,......
  • Golang 简单的数据对齐可提高程序速度和内存使用率
    序Golang中的结构或struct是用户定义的类型,允许将可能不同类型的项分组/组合为单一类型。可以说是一个不支持继承但支持组合的轻量级类。我们使用Golang编写代码的时候,你肯定使用过struct。但是,你可能不知道的是,通过简单地重新排序结构中的字段,可以极大地提高Go程序的......
  • 2023-06-28 小程序、h5、App各端的条件编译
    //表示代码仅在H5平台上面执行,其他平台不执行<!--#ifdefH5-->需条件编译的代码<!--#endif-->//表示代码在H5平台上面不执行,其他平台上面执行<!--#ifndefH5-->需条件编译的代码<!--#endif-->//表示代码在H5平台和App......
  • 解锁高质量文档转换:通过Java应用程序免费将PDF转换为XPS
    在当今数字时代,文档转换已经成为我们日常生活中不可或缺的一部分。然而,不是所有的文件格式都是平等无差的,在与他人共享文档时可能会遇到兼容性问题。这就是我们需要进行文件格式转换的原因,而将PDF转换为XPS是一种受欢迎的转换选择。如果你正在寻找一种使用Java将PDF文件转换为XPS......
  • C# 获取当前程序集的名称和版号
    在C#程序中可以通过如下方式来获取当前正在运行的程序集的名称和版本号Versionversion=System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;stringver=version.ToString();stringassemblyName=System.Reflection.Assembly.GetExecutingAssembly().......
  • 面向对象程序编程6-8次PTA题目集(成绩计算系列)的总结性Blog
    1.对之前发布的6-8次PTA题目集(成绩计算系列),内容要求如下:(1)前言:总结之前所涉及到的知识点、题量、难度等情况第六次PTA题目集:知识点:此次PTA题目仅只有这一个题目,主要考的内容就是对类的使用(类似现实,对有关联的各个数据合并在一起,便于一起使用),运用正则表达式(比较苦难使用,要记住那......
  • 鸡头还是凤尾?在逐渐饱和的互联网大环境下程序员跳槽该如何选择,大厂 or 创业公司?
    写在前面职场里只有两种人,正在跳槽的人和准备跳槽的人,尤其对我们互联网这个行业来说,跳槽的频率应该是所有行业中最高的了。那么究竟是去大公司还是去创业公司呢?工作好几年,几经波折经历过几个大大小小的公司,其实他们各有优缺点。创业公司人少,制度不健全,待遇不公平,但是小公司相比大公......
  • STEAM逆向分析案例
    ​ 案例url:https://store.steampowered.com/login/?redir=&redir_ssl=1​逆向分析思路:​ 1)输入用户名和密码后,点击登录按钮,通过抓包工具捕获点击登录按钮后发起请求对应的相关数据包。​ 2)打开全局搜索框:点击右上角的三个点,打开search表示的全局搜索框即可,在其内部搜索pa......
  • 完美世界逆向分析案例
    ​ 案例url:https://passport.wanmei.com/login?location=L3NhZmUv逆向分析思路:1)寻找加密参数​ 输入用户名和密码后,点击登录按钮,通过抓包工具捕获点击登录按钮后发起请求对应的相关数据包。2)全局搜索加密参数​ 打开全局搜索框:点击右上角的三个点,打开search表示的全局搜......
  • 微信公众平台逆向分析案例
    ​ 请忽视具体网站,重点专注逆向的分析思路!重点是分析思路!案例url:https://mp.weixin.qq.com分析思路:1)随便输入账号密码进行登录(admin,123456),打开F12进行抓包2)通过抓包工具发现,密码是经过加密,并且发现密码的加密后的数据是32位,(猜测)大概率是md5加密的!3)发现加密后的数据是被pwd这......