Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >小程序逆向分析 (一)

小程序逆向分析 (一)

原创
作者头像
奋飞安全
修改于 2021-09-08 02:54:45
修改于 2021-09-08 02:54:45
2.3K0
举报
文章被收录于专栏:奋飞安全奋飞安全

一、目标

李老板:奋飞呀,最近耍小程序的比较多,而且貌似js好耍一点?要不咱们也试试?

奋飞: 你是老板,你说了算喽。

第一次搞小程序,得找个软柿子捏,就找个以前分析过的某段子App的小程序吧。

  • 反编译
  • 静态分析
  • 动态调试

二、步骤

春天在哪里?

app下载回来就是apk包,那么小程序在哪里?

小程序是一个以 wxapkg 为后缀的文件,在android手机的 /data/data/com.tencent.mm/MicroMsg/用户id/appbrand/pkg/ 里面找, 例如在我的测试手机里面就在

代码语言:txt
AI代码解释
复制
/data/data/com.tencent.mm/MicroMsg/9099d679ace11f72569bd530813a28ff/appbrand/pkg 

这个目录下面。可是下面一堆数字命令的文件,哪个才是我们要找的某段子App的小程序呢?

两个办法:

. 把所有的小程序都删除,就留一个,那这个文件就是了。

. 把某段子App的小程序删除,然后再重装一下。 看文件日期,最新的就是了。

反编译

wxapkg文件肯定没法直接分析的了,我敢打赌它一定可以反编译出js文件。

https://github.com/ezshine/wxapkg-convertor

从releases里面下载他编译好的wxapkg-convertor可执行程序。

把wxapkg文件拖到 wxapkg-convertor 的界面里面可以反编译出js源码出来。

main.png
main.png

我们先试试 分析一下这个 websign 的来历

首先搜索一下 websign 字符串

代码语言:txt
AI代码解释
复制
./3AAE21D3932643BF5CC849D4DA8F8236.js:3:    if (!e) return console.error("websign arguments error"), "";
./3AAE21D3932643BF5CC849D4DA8F8236.js:6:    return n.length < 20 ? (console.error("websign length error"), "") : "v2-".concat(o("".concat(e).concat(o(n))));
./3AAE21D3932643BF5CC849D4DA8F8236.js:98:                        url: "".concat(n, "/account/nonce?websign=").concat(i(c)),
./3AAE21D3932643BF5CC849D4DA8F8236.js:124:                    url: "".concat(n, "/account/auth?websign=").concat(i(u)),
./3AAE21D3932643BF5CC849D4DA8F8236.js:178:                var ff = "".concat(n).concat(s).concat(e, "?websign=").concat(i(d));
./3AAE21D3932643BF5CC849D4DA8F8236.js:180:                    url: "".concat(n).concat(s).concat(e, "?websign=").concat(i(d)),

很幸运,看上去就在这个js里面的 i(d) 函数里。

动态调试

既然反编译出来了js源码,能否动态调试下,这样分析起来更方便了?

答案是可以的,下载 微信开发者工具,把刚才反编译的工程导入进来。

ide.png
ide.png

记得在 设置->项目设置 中把 “不校检合法域名...” 这一项勾上。

这样代码貌似可以跑起来, 我们在 i 函数下个断点,发下它可以进来了。

分析一下

我们调试的时候发现它并没有生成websign,t.h_m为空,导致后面没有生成,这个难不倒我们,从抓包结果里面找一个 h_m的值,写死一下,就顺利跑出结果了。

代码语言:txt
AI代码解释
复制
 var e = t.h_m;
// 修改成
 var e = 257167182;  // t.h_m; 

从js代码里看,i函数里面最后调用了o(n), 而

代码语言:txt
AI代码解释
复制
o = require("E5CA98B6932643BF83ACF0B13A9F8236.js").md5

这么明显的md5,我们来试试,在i函数里面加一个代码

代码语言:txt
AI代码解释
复制
var t1Use = o("123456");

首先在Mac下我们算下结果

代码语言:txt
AI代码解释
复制
ffNewMac:Downloads fenfei$ md5 -s 123456
MD5 ("123456") = e10adc3949ba59abbe56e057f20f883e

然后再调试下这个工程,看看t1Use的值

rc.png
rc.png

确认过眼神,就是MD5。

三、总结

搞个新玩意的时候,先找个软柿子捏,不要一下就想放个大卫星。

能反编译,然后再动态调试,那么曙光就在眼前。

这个样本运气好,肉眼就可以看出是md5,复杂的js算法,可以考虑 PyExecJS、js2py or Node.js 来跑。

ffshow.png
ffshow.png

所有的故事都会有结局,只有生活跟你没完。

TIP: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去 奋飞的朋友们 知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx: fenfei331 讨论下。

关注微信公众号: 奋飞安全,最新技术干货实时推送

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
编辑精选文章
换一批
小程序逆向分析 (二) 跑起来
李老板: 奋飞呀,光Debug一下没啥意思,有没有可能把这个反编译出来的小程序跑起来?还是说反编译的代码有缺漏,不好使?
奋飞安全
2021/09/10
1.5K0
【小程序逆向专栏】某润选房小程序逆向分析
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
K哥爬虫
2024/04/30
3860
【小程序逆向专栏】某润选房小程序逆向分析
获取任何小程序源码
这种方法,并不能反编译出所有的小程序源码,请自知! 具体的局限请看:qwerty472123大神的md文件  https://github.com/qwerty472123/wxappUnpacker 
似水的流年
2019/12/06
4.6K0
微信小程序反编译
备份地址:  https://github.com/Ryan-Miao/wxappUnpacker
Ryan-Miao
2019/11/05
9630
微信小程序 Spdier - OfferShow 反编译逆向(一)
本文需要使用到的工具有: Charles抓包工具、夜神模拟器、微信开发者工具、wxapkg反编译工具CrackMinApp; 提示:需要安装好Charles和夜神模拟器并配置好App抓包环境,以及安装好微信开发者工具 / 反编译工具CrackMinApp Charles&夜神模拟器安装教程:https://blog.csdn.net/EXIxiaozhou/article/details/127767808 微信开发者工具 / 反编译工具CrackMinApp 下载安装:https://blog.csdn.net/EXIxiaozhou/article/details/128110468 该文章涉及到App抓包以及微信小程序反编译逆向等相关的Spider技术
EXI-小洲
2022/12/28
1.6K0
微信小程序 Spdier - OfferShow 反编译逆向(一)
反编译小程序,这一篇就够了!!!
看到人家上线的小程序的效果,纯靠推测,部分效果在绞尽脑汁后能做出大致的实现,但是有些细节,费劲全力都没能做出来。很想一窥源码?查看究竟?看看大厂的前端大神们是如何规避了小程序的各种奇葩的坑?那么赶紧来试试吧。
林老师带你学编程
2020/02/13
13.8K1
微信小程序反编译解包教程
(1)安装手机模拟器,比如说夜神、MuMu(https://mumu.163.com/360/)
超级小可爱
2023/02/20
2.1K0
谈下微信小程序的抓取技巧
今天聊下微信小程序的抓取,其实小程序的抓取不难,主要解决抓包和如何调试小程序这两个问题。如果你运用chrome调试已经比较熟练了的话,就手到擒来。
sergiojune
2019/09/17
9K0
谈下微信小程序的抓取技巧
关于Burp无法抓取微信小程序数据包解决办法
鉴于WEB端的站点防护能力已经越来越强,或许已经不再是那么好突破了,所有考虑了很久我是否应该将自己有限的火力集中到微信小程序端。毕竟现在早已是移动互联网的时代。这里也是记录一下在挖微信小程序时遇到抓不到数据包的情况。 由于微信的版本更新(version 7.0以上),其不再信任系统预装的的CA证书,只相信自己内置的证书。这里我也是尝试一些互联网上的方法,在不降低微信版本的前提给出如下解决方案:
Tommonkey
2023/03/20
3.3K0
关于Burp无法抓取微信小程序数据包解决办法
再搞个大点的 某小视频App X-Gorgon 分析
TIP: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去 奋飞的朋友们 知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx: fenfei331 讨论下。
奋飞安全
2021/05/25
1.3K0
再搞个大点的 某小视频App X-Gorgon 分析
记一次微信小程序逆向
加密嘛,之前抓了看到是加密就放弃了,现在重新弄一弄 https://github.com/wux1an/wxapkg 用这个工具反编译本地微信小程序
亿人安全
2024/05/14
1.5K1
记一次微信小程序逆向
使用Xposed进行微信小程序API的hook
  上一篇文章讲了安卓的虚拟定位相关的内容,最后编写了一个frida脚本来对Framework层的API进行hook实现虚拟定位。但是有几点局限性:
大A
2023/02/14
7.5K0
如何使用NinjaDroid对Android APK进行逆向工程分析
NinjaDroid是一款针对Android APK包的逆向工程分析工具。NinjaDroid使用了AXMLParser以及一系列基于aapt、keytool和string等Python包实现其功能,并能够从给定的APK包中提取出一系列信息,其中包括:
FB客服
2021/10/11
2.2K0
【JS逆向百例】云汉芯商城逆向分析
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
K哥爬虫
2024/03/25
4480
【JS逆向百例】云汉芯商城逆向分析
反编译小程序记录
1.使用自己手机上的微信打开"人堆"小程序,可以添加到"我的小程序" 2.打开模拟器的微信并登录 3.在模拟器微信的下拉小程序最近使用历史中打开"人堆",如果历史记录中没有就在我的小程序中找一找 4.打开小程序等待加载之后就可以去找源码包了 5.打开RE文件管理器,进入到以下路径查找源码包(可以根据下载时间区分出你想要的源码包)
用户1437675
2020/07/29
1.7K0
反编译小程序记录
【Web实战】零基础微信小程序逆向
由于传播、利用本公众号亿人安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号亿人安全及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
亿人安全
2023/11/24
1.5K0
【Web实战】零基础微信小程序逆向
以中银E路通小程序为例10分钟带你学会微信小程序的反编译
1.使用自己手机上的微信打开"中银E路通"小程序,可以添加到"我的小程序" 2.打开模拟器的微信并登录 3.在模拟器微信的下拉小程序最近使用历史中打开"中银E路通",如果历史记录中没有就在我的小程序中找一找 4.打开小程序等待加载之后就可以去找源码包了 5.打开RE文件管理器,进入到以下路径查找源码包(可以根据下载时间区分出你想要的源码包)
薛定喵君
2019/11/29
2.6K1
以中银E路通小程序为例10分钟带你学会微信小程序的反编译
如何反编译小程序的源码(微信小程序反编译工具)
git clone https://github.com/qwerty472123/wxappUnpacker.git
全栈程序员站长
2022/08/01
1.3K0
如何反编译小程序的源码(微信小程序反编译工具)
微信小程序反编译
我们在学习一项新技能时,除了认真学习官方的规范、标准和技术文档之外,还需要借鉴和参考其他优秀的产品。新手或独立学习者看到做得好的产品就想学,而往往没有好的学习渠道,因此反编译成为了一个“不太好”但有效的学习方法。闲话少说,以下是从网上搜集加自身成功实践得来的操作步骤,供大家借鉴。 一、环境准备
用户6808043
2022/02/25
7820
小程序源码丢失了怎么在微信平台反编译找回
这篇文章是总结了一下公司后台开发的经验,之前他的电脑系统突然就坏掉了,电脑里的小陈需源码也丢失了,但是小程序已经提交到微信小程序服务器平台审核通过,问了很多人,也想了很多办法,很多人说没救了,重新开发吧,但是最终在我们的努力下,找回丢失了的源码,开心。
王小婷
2025/05/18
3630
小程序源码丢失了怎么在微信平台反编译找回
相关推荐
小程序逆向分析 (二) 跑起来
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档