网络逆向(一) 油猴脚本与抓包初步 以显示b站楼层编号为例
网络逆向(一) 油猴脚本与抓包初步 以显示b站楼层编号为例by devseed
0x0 前言网络逆向相比来说比较特殊,虽然js逆向上手后比起x64,arm64等机器码逆向要容易很多,但是依赖于服务器api,有着时效性与不可重复的特点,测试环境和相关的部署对于新手来说也很麻烦,网络协议相关的更是非常繁杂。因此,网络逆向对于新手来说门槛很高。本系列教程将结合几个例子,来谈谈我的理解与想法。
大家都熟悉油猴脚本了, 但是可能对于怎么编写可能感觉不太容易上手,本节将以显示b站楼层编号为例,结合简单的抓包,来谈谈如何上手油猴脚本。
需要的工具:
Chrome 调试脚本与网页抓包Tempormonky 加载js脚本fiddler 抓包jQuery 查询dom元素与插入界面firefox RESTClient, python requests 测试发包TrustForMe 解决安卓SSL Pinning无法抓HTTPS包问题
本例油猴脚本成品:b站显示楼层编号
0x1 网页获取评论api分析动机:非常讨厌欢b站取消楼层号,就和写代码没有行号一样,不好定位,看起来非常不爽。
自从b站改版以 ...
Galgame汉化中的逆向(三):自定义字库分析
Galgame汉化中的逆向(三):自定义字库分析by devseed ,
0x0 前言上节谈了一下一般pc游戏的文字编码与系统字库的调用,但是主机游戏和部分pc游戏通常自带字库,这些字库有的是标准格式,而有的则是自定义格式。自定义格式字库通常由两种类型:tile font, texture font。
此篇教程将以一种不同寻常格式的texture font为例,谈谈如何来分析自定义字库。
0x1 观察此游戏字库很显然是font48.xtx,观看文件头xtx格式,后面的01是type。猜测再后面就是height,width,aligned height, aligned wight, offset相关的了(这里面有个坑人的地方是这游戏文件头是big endian,我看了好久才看出来)。
看到文件大小为900020h,结合数据猜测正文是0x20开始。
看着数据很规整,猜测没有压缩,但是查看纹理或者tile无论怎么看都很奇怪。但是texture可以看出来大概几个数据块,所以很大可能是这个字库的数据流读取方式有问题,我们需要找到这个字库读取顺序。
0x2 跟踪游戏引擎将字库纹理以正确的字节 ...
Galgame汉化中的逆向(二):系统字库与文字编码
Galgame汉化中的逆向(二):系统字库与文字编码by devseed,
0x0 前言
上节我们谈了谈如何找到解密文本的函数,以及如何来反汇编分析。这节来谈谈有关汉化调用字库与编码的问题,如何解决乱码,以及windows上常用的相关函数。通常我们要做的是:
解除非日文系统区域限制
修正游戏由于编码问题无法找到对应文件
修正游戏中的乱码,标题中的乱码
修改游戏中字符的限制,为中文汉化做准备
0x1 文字编码以winodws系统来看,字符编码主要有两种:
Multibyte(类型表示为 char *, LPSTR, ),
WideChar(类型表示为 wchar_t *, LPWSTR, L"")。
Multibyte为变长字符,中ASCII字符为1字节,中文或日文等为两字节,不同系统编码不同,必须要指定对应的codepage才能正确显示。其中GB2312与shift-jis属于MultiByte;WideChar可以看作是unicode,或者说utf-16,两字节宽字符,所有系统编码都相同。
(1) utf-8utf-8是一种Multibyte编码, 也 ...
Galgame汉化中的逆向(一)_文本加密(压缩)解密
Galgame汉化中的逆向 (一):文本加密(压缩)与解密by devseed,
0x0 前言看到关于游戏汉化相关的逆向教程挺少的,作为某汉化组的成员也帮过别的汉化组,于是就想把我见到的几个典型的例子整理分析一下,还是挺有意思的。此教程和我在贴吧和隔壁发的一样。
0x1 观察与定位这个游戏还是很典型的,cpk封包,文本应该在sn.bin里面。打开一看没有明显的字符,而且数据看起来很紧凑,应该是压缩或者加密了。
相比与主机游戏ida费劲的静态分析,pc动态调试真是太舒服了。找文本很简单,等游戏运行起来后直接暂停,搜索内存sjis字符串。比如说“椿子”。然后记住这个地址(或附近的某个),下硬断点write,重新启动游戏运行,游戏中断在这里。
0x2 解密函数观察然后顺腾摸瓜,我们能看到了解密函数,只不过这个游戏奇怪,用了eax和ecx传参(之后分析这个应该是指向了全局变量),进一步分析发现eax应该是解密后的缓冲区,ecx是sn.bin文件缓冲区。这里提取解密后的文本可以直接memdump了,其实汉化游戏我们甚至可以不管它用了什么加密,直接hook这里然后替换为其他缓冲区。但是这样就没有 ...
虚幻4(ue4)引擎加密pak解包教程(初学者向x64源码逆向)
虚幻4(ue4)引擎加密pak解包教程(初学者向x64源码逆向)1. 观察源码,寻找切入点我用的vscode,搜索关键字decrypt。我们发现FAES:: Key结构,就是加密key,去epic官网查[5]发现是aes256加密。注意游戏版本要与源码版本一致,否则源码有可能修改对不上,还有此处不讨论魔改版ue4和程序加壳等问题。
看见void DecryptData(uint8\* InData, uint32 InDataSize, FGuid InEncryptionKeyGuid)函数,右键findallreference找到相关信息,寻找切入点,我们看到文件IPlatformFilePak.cpp文件中void FPakFile::LoadIndex(FArchive\* Reader)函数有fatal error的log,这个可以成为我们的关键点(因为是fatal,一般都会保留log,其他的log可能就没有编译到程序中[1]。比如https://www.52pojie.cn/thread-907938-1-1.html中的\”No valid decryption ke ...