网页雷达
写在前面
本项目完成于2025年9月,但是由于某些原因没有写成博客发不出来。现在风头过去了可以发了,所以把这篇文章发出来,也是记录一下学习。今后可能会回归web安全相关内容,暂时不搞逆向了。
项目
这里用一个前几年比较火的游戏————荒野行动 作为例子
效果图:
目录
|—–GameMaps
|–ConnectController.py
|–hy_web.e
|–XLC.html
|–XLC.png
hy_web.e
本地端:hy_web.e
本地端用e语言,主要是有现成的驱动,本人也是很早学过的,正好能熟练运用
这里主要是两个额外线程:读取数据线程和矩阵线程
数据读取模块:
123456789101112131415161718192021222324252627282930.版本 2PlayerControler = 读长整数 (读长整数 (读长整数 (读长整数 (读长整数 (读长整数 (读长整数 (读长整数 (模块地址 + #PlayerAddr) + 88) + 192) + 984) + 96) + 56) + 984) + 96)' 调试输 ...
某魔改Uworld逆向分析
写在前面
tx游戏共同特点就是用了ACE的ue引擎。ACE对基础结构的保护还是很猛的
历时几周的研究,哥们终于找到定位ACE魔改Uworld的方法了。
本文原创,同时也发布视频BV13YhCzBEaP.
如果你有更好的方法欢迎和我交流
静态分析
可以看到这里的特征确实发生了变化
sub_143C59B40(&off_146B76CFO,QWORD(a1+ 136));
正常Uworld是这样的:
这里的它将原本直接传递给Uworld的值作为一个参数,与另一个不知道什么东西的东西一起传入到函数sub_143C59B40中
跟进函数去看也没什么重要信息。
其实这里的特征点确实没什么变化,tx喜欢每次更新上小算法已经是业界常识了(cr3也一样)他不敢上难的算法。优化这一块,我只能说没得选
但是目前分析来看他确实变化了,所以这里需要动态分析
这里科普一个常识,64位程序的第一个参数是RAX,第二个参数是RDX,第三个是R8,第四个是R9
记起来,后面要考
动态分析
首先定位到sub_143C59B40
IDA分析已经很明确了,刚刚接受U ...
记一次unity逆向——超自然行动组
前情提要这是由一份消息引发的惨案。
本人日常冲浪的时候发现有个人发了一份偏移和基址,群里没人离他。但懂得都懂,这份基址也太危险了。本着学习的心态,我开始人生第一次Unity逆向
逆向
由上述基址转换为CT表如下
跑到游戏里面大概就是这样一些东西。原文中提到了物资数组,里面储存包括成员的名称,坐标,ID,血量(没错,物资也有血量)。
那么其实只需要遍历这个字典再绘制出来就可以完美收工了
说实话,我从没打过这么轻松的仗
其实主要思路就这些。随随便便就写完了
?
(还好我的博客都没人看,我写更多的前言后语写的更加安心一些。
所以这次我决定写在中间
写在中间
学习到这里不难看出,unity和虚幻引擎的逆向都是惊人的相似,唯一区别就是他们储存的方式不一样:前者用的是字典,后者则用的是数组。而逆向思路就是一样的:
unity是遍历这个成员字典,虚幻则是遍历整个Actor数组
我有一个猜想:这俩个引擎是不是都是有父子关系?
上网搜索了一下
卧槽!!
真没有。
(罐头笑声
那么其他引擎呢?
所以我把视角转向了起源引擎:
其实起源引擎是我 ...
记一次UE逆向–三角洲行动
关于
本文章仅供学习交流,请勿用于非法用途
信息获取
通往罗马的路不止一条。
三角洲行动这个游戏可以说是市面上反作弊部署最为完善的游戏,上到服务器端,下到内存cr3都有严苛的反作弊措施。严密的检测下几乎不可能直接上手调试。如果只会公式化逆向或者喜欢单刷ACE,只能说死路一条
但是哥们有社会工程学
只要我能获取我想要的信息,那我就可以绕过调试阶段,直接写脚本了
OffsetBV1EigWzGEaj
大佬的dll直接注入即可GetOffset(
1234567891011121314151617181920212223242526272829303132333435363738394041424344 /* Create by ShaHen */ /* QQ:750144893 */inline static const uint64_t OwningGameInstance = 0x00000000000001B0inline static const uint64_t LocalPl ...
记一次UE逆向–远光84
关于
本文章仅供学习交流,请勿用于非法用途
很难想象这是2025年的游戏
反调试
拿到游戏上手,CE xdbg启动,结果啥都搜不到。。全是打问号的数据。
尝试scylla将游戏内存dump下来,没有入口点,IAT表找不到,dump下来的内存全是打问号的数据。
这种情况很奇怪,如果是藤子游戏的反作弊也不至于等你ce或者xdbg附加了才发现。你一启动就被特征提示警告了。。这款游戏的反作弊更像是一种进程保护。
静态分析这一块还是蛮重要的,这个问题不解决没法干活
所以我花了大半天的时间去寻找能过这种奇怪的反调试的工具,没找到。。(程序快写完的时候确实找到了)
就在我万念俱灰的时候,我把游戏重启了一下,CE突然就找到了内容,然后没过几秒钟就变成?????
啊?
这下搞懂了
这游戏进程保护在刚开游戏的时候没加载,大概过了三十秒才加载
所以打开游戏的前三十秒是无敌时间,只需要抢在这三十秒做逆向分析(或者挂起进程),就可以正常分析游戏内容。
结果真尼玛成功了。IAT表,程序入口点都找到了。。。dump下来的内容完全正常。。。
开搞
众所周知UE的逆向全是公 ...
UE常用偏移
Uworld:见上文
Ulevel:Uworld + 0x30 -> Ulevel
Actor:Ulevel + 0x98 ->Actor
GameInstance:Ulevel + 0x180 -> GameInstance
PlayerController:GameInstance + 0x28 -> +0x38 -> 0 -> 0x30 -> PlayerController
APawn:PlayerController + 0x250 -> APawn
RootComponent:APawn + 0x130 -> RootComponent
Vector(即Localplayer坐标):RootComponent + 0x100 -> Vector
Matrix:
1字节数组特征:00 00 00 00 00 00 00 00 00 00 80 3F 00 00 80 3F 00 00 80 3F 00 00 80 3F 00 00 00 00 00 00 00 00 00 00 ...
ue4-ida寻找Gworld
关于Gworld
在虚幻引擎(UE)中,GWorld是全局变量,指向当前激活的 UWorld 实例。UWorld代表游戏世界,是游戏的核心容器,负责管理关卡、对象生命周期、物理行为、光照渲染及逻辑执行。
GWorld的作用
GWorld通过指针直接关联到当前活跃的UWorld实例,主要用于存储和切换游戏世界的上下文。在引擎代码中,GWorld通常在初始化时被设置为新加载的游戏世界实例,并负责协调不同世界实例之间的资源管理和状态更新。
与UWorld的关系
UWorld是游戏世界的核心类,包含多个关卡、动态元素(如Actor)的管理以及物理渲染逻辑。GWorld作为全局指针,指向当前正在运行或编辑的UWorld实例,支持多世界并存(如编辑器模式下的主场景、PIE实例等)。
在ida寻找Gworld
ue的版本号为4.26.2
https://github.com/EpicGames/UnrealEngine/
dump出来的文件,函数窗口搜索
1Anullobject
f5进,这里的qword_7FF ...
目录穿越
写在前面
最近被各种各样的目录穿越恶心到了,所以写了这篇文章来总结一下目录穿越和遇到的题目
思路
构造:
123456789正常 : /download?filename=../../../etcpasswd双写绕../ : /download?filename=…//…//…///etc/passwdURL编码(双重) : . => %2c/ => %2f% => %25 (双重URL编码)
收集的例题(遇到会继续写):
第二届“长城杯”铁人三项赛 (防护赛)初赛
发现 ../hackme.php
文件包含 ../hackme.php
但访问不到
有过滤 尝试绕过过滤
可以双写然后绕过过滤….//hackme.php
http://eci-2zef3sej7rworr0h35d8.cloudeci1.ichunqiu.com/index.php?file=....//hackme.php
XYCTF2025
源码:
12345678910111213141516171819202122232 ...
对象序列化实现Serializable会出现java.io.InvalidClassException的解决方法
错误如图所示:
1java.io.InvalidClassException: cat.uwu.begin_java.Evil; local class incompatible: stream classdesc serialVersionUID = 1361392555563942995, local class serialVersionUID = -8992112659118101069
本地解决办法:
给Evil类加上serialVersionUID:
原:
12public class Evil implements Serializable { private String cmd;
现:
123public class Evil implements Serializable { private static final long serialVersionUID = -899211265911 ...
本文写于2024-11-14 ,最后修改于2025-3-17
java反射
写在前面
最近花了很长的时间去学习java,前后把Java se ,Java web,spring boot都搞了一遍(还搞了个springboot项目当练手):Bilibili-Film-Area-top-webcrawler。现在终于有心回来搞安全了
最近打算开始学链子的内容,从反射开始一步一步走。反正考完数电无事可做,就当是消磨时间了
举例
例子:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354public class testForName { public static void main(String args[]) throws ClassNotFoundException, NoSuchMethodException { Class c = Class.forName("stu ...









