C++数值积分 – 基于GSL的简单封装类

5月28日追记 其实现在最新版本的Boost库数值积分已经比较完善了,处理常见的绝大多数积分都没有问题,因此C++的数值积分也可以考虑使用Boost,它的接口更加友好、使用也更方便,不需要像这篇文章一样再进行封装了。   C/C++中的数值积分在不考虑引用库Licence类型情况下,可以使用GNU Scientific Library (GSL)这个库来进行处理。如果只是需要计算一两种固定种类的积分,那么直接按照文档中的例子来写没什么问题。但是如果需要计算的积分种类很多的话,比如一个积 …

八、API破解 – UNI’S ON AIR资源提取逆向全记录

注意:文章内容仅供学习和交流逆向经验使用,严禁将本文成果用于贩售资源、制作外挂等侵权违法行为。   利用之前文章的方法以及可以无损提取出游戏的Live视频了,不过还有两个问题。   一是只有第一次打开歌曲的时候才会从网络上下载,之后再打开同样的歌曲就直接从本地缓存加载内容,没有网络传输了。因此要想抓到包只能第一次打开歌曲的时候抓取,忘记抓包就只能等下次游戏更新了。   二是歌曲需要一定的等级才能解锁,而要想升级只能花时间玩游戏,我实在没那么多时间呀。游戏突然宣布要更新添加新的歌曲了,然而我之前的 …

七、资源处理 – UNI’S ON AIR资源提取逆向全记录

  前面已经成功获取到了CRIWARE的密钥,剩下的工作就简单多了。这篇就来讲一讲如何获取这些原始资源,以及如何将这些原始资源转换为通常的文件格式,以方便浏览。 0x01 资源获取   用中间人攻击(Man-in-the-MiddleAttack, MITM)的方式可以获得数据包的内容,比如之前用来抓包的Burp Suite就可以算是利用了这种方式的一款软件。但是Burp Suite从GUI上一个一个保存数据包太过麻烦,并且Burp Suite的插件我也没弄过不太会写,所以这里选择了mitmpr …

六、获取密钥 – UNI’S ON AIR资源提取逆向全记录

  之前的文章中讲了那么多,终于要说到获取密钥了。看了看perfare大佬和Headcrabbed大佬的博客,他们的方法要么是插桩改包,要么是IDA动态调试打断点。这对于手上Android设备仅有一台没有root的Lenovo Z5的我来说太过麻烦了,而且我也不怎么会。主要还是我觉得这破联想手机root起来简直太麻烦了,都没有可以一键root的软件,以后还是买主流Android机型吧。   前面说了在libil2cpp.so以及global-metadata.dat中没有找到任何疑似该密钥的字符 …

五、核心汇编 – UNI’S ON AIR资源提取逆向全记录

  前一篇文章中我确认了游戏数据包中的.usme文件就是CRIWARE的usm视频格式文件。这说明加解密部分并不是游戏开发者自己完成的,而应该是CRIWARE Unity插件中自带的,那么找到对应的密钥应该就可以直接利用2ch帖子中的工具CRID(.usm)分離ツール v1.01进行视频的解密和转换。 0x01 libil2cpp.so   粗略看一下dump.cs可以发现,UNI’S ON AIR中有两种播放视频的组件,一种是UnityEngine自带的VideoPlayer类,另 …

四、Unity逆向 – UNI’S ON AIR资源提取逆向全记录

  上篇文章最后说道,如果能从正面开发的过程去分析软件,那逆向的过程会容易很多。我之前已经确认了UNI’S ON AIR这个游戏是由Unity3d开发的,那么了解Unity的源代码和最终编译目标文件的对应关系就很重要了。这个过程中『unity游戏生成与修改so文件教程』这个帖子给了我非常大的帮助,参照这个教程我开始了整个过程中最核心的逆向分析。 0x01 编译过程分析   由于之前有过Cocos的开发经验,因此对于Unity是怎么样一个流程我心里面是有数的,主要一大不同是Cocos采 …

三、APK分析 – UNI’S ON AIR资源提取逆向全记录

  看到SNS上一堆人都通过各种各样的方法获取了Live视频,我也下决心一定要把这些视频成功提取出来。为此,我仔细读了Headcrabbed大佬的博客『CGSS 核心反向过程实录』,它对我的帮助很大,不过也有一些不完美的地方,在后面的文章中会详细提到。另外基于我在『【ムービー・画像】吸い出そう 5【音声・BGM】』中找到的.usm转换工具,我极怀疑需要做的仅仅只是在软件包中找到这个密钥,然后剩下的直接扔给现成的工具转换就好。说不定这也不是一件难事,那么就先反编译试一试。 0x01 获取软件包   …