授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
Android逆向之旅---Android中分析抖音和火山小视频的数据请求加密协议(IDA动态调试SO)
之前一篇文章已经详细介绍了:微信小程序包的格式解析,在之前文章中也了解到小程序包存放在沙盒目录,但是微信为了让小程序包安全就对文件名做了一个处理,导致我们很难找到对应的小程序对应的包文件,所以本文就来开发一个辅助插件,可以查看微信小程序的appid以及快速找到对应的小程序包文件,然后利用之前的解析工具直接本地解析程序包即可,下面就开始我们的表演吧!
首先第一步还是国际惯例,我们如果想暂时小程序的一些信息包括appid,版本号,本地存放路径文件名等,那么如何在微信页面中展示呢?首先来看一下小程序的页面:
然后我们就开始找到这个布局菜单,添加我们想要的菜单信息了,这个找入口有很多方式,比如可以通过字符串信息反编译之后去找对应的id值,或者是利用ui工具直接查看id信息,这里我就用这种方式:
找到之后,把id值转化成十进制,然后去Jadx中搜索吧,这里要注意的是:微信做了拆包操作,而且微信包很大,直接用Jadx打开微信会卡死的,所以需要解压依次打开它的所有dex文件即可,然后就是挨个dex中搜这个值即可
然后就来到这个类,用的是RecyclerView控件了,这个类应该就是操作初始化底部菜单的地方了,我们需要找到这个控件的adapter,查看如何添加菜单的,因为拆包导致这个类被分的很开,而这个类有很多内部类,所以我们依次在每个dex中查找这个包下的这个类以及他的内部类,最终在这个地方看到:
这里就要对android应用开发有点熟练了,应用开发都用过RecyclerView控件,他的adapter编写格式都是统一的,这里看到及时混淆了,一看大致逻辑就清楚了。不过可惜的是,这个地方有个很大的坑,害得我浪费很多时间:
所以说没有一个工具是万能的,千万别相信任何一个工具。被坑残了。然后我们看到返回值其实是g类的局部变量qWf,类型是com.tencent.mm.ui.base.n可以直接搜这个类看看:
看到这里就明白了,这个是微信内部的统一菜单类,有一个菜单子选项的列表,然后继续回去看g类的那个变量qWf:
注意这里的菜单内容先不要关心,后面会介绍如何获取小程序的appid和版本号以及保存路径的,然后运行模块,查看添加的菜单信息:
到这里我们就把这三个菜单添加好了,第一个菜单是为了查看小程序的appid和版本号信息,点击可以复制,第二菜单是小程序包的保存路径信息,点击可以复制路径。第三个是解析小程序包源码。主要借助之前介绍的解析小程序包工具。
那么下面继续来看如何获取小程序包的appid,版本号信息,以及本地保存的文件路径,突破口也很容易获取,用ui工具查看当前布局即可,不过这里我在介绍新的技巧就是用adb shell dumpsys activity top命令查看view结构:
我们知道WX内部的所有WebView都是自己开发的x5内核,而小程序加载肯定得用WebView的,所以从这找到突破口,然后去Jadx找这个u类,而且在之前分析过了,微信小程序的功能都在com.tencent.mm.plugin.appbrand这个包下面的:
看到这个类果然是继承微信的内部统一WebView,然后无意中发现这个类中有appid字段了,为什么我们会按照这思路去找appid呢?因为小程序入口在webview加载的,那么肯定在这个地方用到了appid了,所以我们的思路没有问题的,继续查看这个字段的使用:
看到这个地方在构造一个webview需要加载的url信息,看到appid参与其中了,还有一个字段,其实这个就是小程序的版本号,后面我们会看到。我们可以先hook这个方法看看appid是否能获取到:
这里做了一个处理,就是把appid分离出来以及版本号,然后保存到全局变量中,用于菜单显示使用,我们运行模块,看看运行结果:
我们知道小程序的appid都是wx开头的,这里可以看到的确拿到了appid值,那么第二个到底是不是版本号呢?后面会说,先来看看如何获取小程序包路径信息,这里我们这么操作,因为我们在之前已经知道了小程序包都是放在这个目录下:
找到这个地方发现格式和上面看到的文件名很类似,这样我们直接hook这个方法,看看返回值路径是什么,以及传入的参数是啥:
这里发现第一个参数就是小程序appid,第二个参数很有可能就是版本号,返回的路径也是上面我们知道的,那么有的同学就好奇了,这里直接hook然后保存一下路径不就可以了吗?其实我们在hook发现,这个方法只有首次加载程序包会调用。但是我们想要的效果是每次打开小程序点击菜单都可以看到。如果保存很不方便。所以这里我们直接用appid和版本号进行构造,构造方式如下:
小程序appid字符串的hashCode值和版本号即可。有了之前的固定路径那么就可以了。下面再来看一下这个参数到底是不是版本号呢?查看这个ae方法的调用地方:
这里通过字段名称就可以看到就是版本号了。所以到这里我们就把小程序的appid,版本号,路径构造方法获取到了,下面操作就简单了。需要hook上面继承webview类的u类的aeN方法即可,然后通过分解获取到appid和版本号,上面已经运行有结果了,这里不在演示了:
看到这个方法是每次打开小程序都会被调用,我们只要做个简单判断,有appid和版本号就保存到全局变量。然后在打开菜单的时候,把这两个信息放到菜单中,然后在利用这两个字段构造出本地小程序包的路径放在第二菜单中。最后一个菜单就是解析小程序了。这里我们的操作很简单了,先把沙盒中的wxapkg拷贝到SD卡下的指定目录,然后在借助之前写的解析小程序包工具直接解析即可。
下面还有一个问题就是菜单的点击事件,这个我们还是要回到之前的g类中以及内部类中进行查看,最终找到这个类,因为g类和内部类不是很多,按个找dex很快就定位到了:
然后我们拦截这个onItemClick方法,处理0,1,2这三个我们添加的菜单点击事件即可:
这样我们就处理了三个菜单选项的点击事件了,菜单名称使用之前hook成功的appid值和版本号,路径构造是appid值和版本号,主要说一下最后的解析工作:
先把wxapkg包从沙盒中拷贝到SD卡的指定目录中,然后传入路径,开始执行我之前写的解析小程序包的工具即可。
本文的意图只有一个,就是通过分析app学习更多的逆向技术,如果有人利用本文知识和技术进行非法操作进行牟利,带来的任何法律责任都将由操作者本人承担和本文作者无任何关系,最终还是希望大家能够秉着学习的心态阅读此文。鉴于安全问题,样本和源码都去编码美丽小密圈自取!点击立即进入小密圈
第三部分:添加子菜单的点击事件,路径和appid点击就是赋值信息。解析小程序包直接调用之前的工具即可
而在这三部分的突破口都是利用界面View分析获取到的,有两种方式:一种是借助UI分析工具,一种是利用adb命令;两种方式都是可以操作使用的。下面来看看我们操作的效果吧:
到这里我们就完成了本次操作,大家可以看到这个插件对于小白用户没啥用途,但是对于我们后续的逆向操作非常有用的,我们如果想逆向哪个小程序,直接解压看源码即可。也可以拷贝到电脑上进行分析更方便了。其实每次写微信插件都很费劲的,原因就在于微信包太大了,导致电脑非常的卡顿。所以写个插件不容易,喜欢的就点个赞分享吧!
地源文件,然后再对其进行反编译还原为源代码,来作为学习参考打开模拟器,开启root权限(根据你选的模拟器找对应的开启方法)第一步 拿到.wxapkg 文件[小
文件?方案:在电脑上下载安卓模拟器,开启Root权限。下载RE文件管理器,然后找到.wxapkg文件所在的目录(没有确定的地址,可...
,这里提示我们需要一个密钥文件先进行爆破,丢进OD分析:这里我们可以从注释得知我们的密钥文件名字为Keyfile.dat,可以猜想,
的算法比对的是从这个文件读出密钥,运用设计好的算法,校验合法性…看到上面组合条件跳转,就该注意了…到这里正常执......
一、前言关于支付宝的蚂蚁森林能量收取这个非常有重大意义的东西,本人表示非常认同,这个网上也是一直有人觉得马云是一个非常有远见的男人,的确虽然很多人觉得马云不会技术但是很能说,但是他说的都慢慢实现了,先不管这个种树到底能不能落实,马云的确在带领着阿里帮助世界地球变得越来越美好,而隔壁的企鹅公司暂时不评论。我们如果玩过能量收取都知道他有一个弊端就是每天早起收能量有时候会发现自己的能量被别人全部偷完......
:Xposed框架原理解析和使用案例分析 在那一篇文章中我们介绍了如何安装Xposed框架,以及如何使用Xposed库编写第一个模块来做到修改系统方法功能的效果,同时也说到了一个非常重要的知识点就是:在Hook过程中最重要的一点就是如何找到Hook点,而对于这一点很多同学都会感觉到非常的困难,...
写在前面: 主要运用python进行简单的图像处理,不得不说python用起来是真的爽,各种库的学习使得
的应该知道实现起来也不是很难,很适合新手练手。第一次到了500多题不知道是因为被检测了还是网掉了分数没提交。。。结果以后到200分就手动停了,发现提交是正常的...... 话不多说先上效果:(gif太麻烦了将就着看吧......)......
正常情况下,我们的页面中链接是这样的虎胆游侠这样,我们点击“虎胆游侠”就会弹出一个新窗口,然后打开我的主页…… 然而,这样的a标签只能用一个矩形把文字区域框住,十分单调。在一些特殊的情况下,我们需要不规则的链接,比如艺术化的导航菜单,不规则按钮,地图……等等。给a标签内嵌套img并不能完全满足,这些需求。 一个可行的做法是用img做map,相信很多人都会,usema...
,将代码导入到Auto.JS中,设置好尺寸长度点击开始即可;Auto.JS.apk下载路径可在本人处下载
一些功能的公测,所以包的获取现在简直手到擒来,这些都在网站里流程写过了。现在解析一个包大概5秒左右,为了成功率我延时了5秒。基本大部分包都能够解析到,除了分包......
本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。
环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

