- 博客(162)
- 资源 (3)
- 收藏
- 关注
原创 War3 脚本对象句柄管理
War3设计的时候可能没有想到如今的RPG地图的火爆,作为一款RTS游戏来说当初的设计也不会考虑到地图上单位过多的问题(游戏机制有人口限制)。因为在脚本引擎对句柄回收机制这块并没有那么先进(自动回收机制),只是做了个大概,更多需要开发者自己手动去回收,这里就来看看脚本里对于内存回收的逻辑。...
2022-07-27 11:12:39
754
原创 War3 游戏内存管理机制
War3是款老游戏,由于那个时代的硬件条件有限,所以对于这种有一定时长的游戏他的内存管理十分的讲究,因为地图内单位过多就会导致内存不足,如果没有合理的分配内存就会直接影响游戏的体验。......
2022-07-27 09:55:27
1439
原创 War3脚本引擎(Jass)执行函数分析
Jass是魔兽争霸3中比较重要的一个部分,下面资料通过逆向分析Jass执行脚本期间的一些逻辑和函数。
2022-07-27 09:24:52
2374
1
原创 暗黑破坏神2重置版 UI界面管理类分析
一直关注暴雪的游戏,这次来分析下暗黑2重置版里的UI界面数据结构。由于游戏有着各种猥琐的反调检测和保护,所以只能使用伪调试的方式进行静态分析。起手一个字符串枚举看看有什么可用的,从暗黑2的旧版客户端了解下,就从小地图入手!关键字:AutoMap乍一看,显然图二有点东西,那就从这里入手了,跟进去看看代码上下文如图注释,这里应该是注册控件的地方,根据字符串的意思,应该是有个PanelManager的类管理着游戏内所有的界面。那我们就来找下这个类,继续搜索字符串,于是就找到了这里.
2021-11-28 12:27:40
1135
原创 D3D11、D3D12开发中CreateSwapChain返回DXGI_ERROR_INVALID_CALL(0x887A0001)错误的坑
根据MSDN查询的描述中说0x887A0001错误是因为参数为空才会产生的,经过代码的仔细检查并没有任何问题。最后怀疑到了结构对齐上,没错就是这个,项目设定里的结构成员对齐,如果非默认值就会导致CreateSwapChain执行出错,如图设定即可:...
2021-10-20 08:32:18
3170
原创 War3 132版本获取Jass函数列表
一、调试过程简单的记录下调试过程,详细的就阐述了 首先枚举下游戏内的所有字符串,随便找一个jass的函数名(接触过jass函数都知道),这里就随便找个StoreInteger,就可以找到以下片段:简单分析下,这里有2个CALL,第一个call(7FF624565620)是获取一个对象指针,第二个call看起来就是个注册jass的,通过参数可以得到函数原型:typedef UINT64 (WINAPI *FnRegJassFunction)(PVOID pHandle,PVO...
2020-10-26 10:16:44
3159
1
原创 某肠派对过模拟器检测(已过期)
有个好工具办事真是事半功倍,这里使用了GDA3.8是个反编译APK的工具,可以直接将DEX反编译成java。下载链接:https://www.52pojie.cn/thread-632104-1-1.html一、提取APK游戏直接要用平台安装,不单独提供下载,所以需要使用ADB命令从模拟器内提取出来二、分析代码将APK直接拖入工具,很快就反编译完毕了三、找到检测函数通过类名判断,还是比较容易就找到了以下片段这里的readSysProperty就是读取系统相关信息了,这
2020-10-11 11:17:23
2445
5
原创 War3 132版本局域网房间信息数据包分析
调试环境: 游戏版本号1.32.8.15801一、前言 War3 132重置版内有自带旧版UI界面,包括旧版协议通讯,但是毕竟是新版本,所以略有不同。至于怎么进入旧版模式回头整理完会另外发博文,我是怎么知道的?我会告诉你去调试网易平台么?开玩笑!!本文用到的数据包可以通过拦截游戏通讯(UDP协议) 后获取,由于通讯协议众多,本文只针对Host广播的建主信息进行分析、扩展。二、封包分析游戏内所有相关操作的通讯包都以下面这个结构开头:typedef ...
2020-09-25 12:02:54
948
原创 Imgui的简单开发运用
外面比较流行的一个UI库,这里介绍下简单的使用方法引擎Git地址: https://github.com/ocornut/imgui本文使用Imgui版本为1.7开发环境 Win10,Directx11,VS2015前言 工程目录下的examples带有DX11的使用例子,通过查看代码得知使用WIN32_DX11环境开发除了添加imgui必要库外还需要添加以下文件,用于对imgui引擎的初始化和D3D设备绑定等操作。imgui_impl_...
2020-09-18 19:35:01
20855
原创 DateTimePicker控件无法同时修改日期和时间的问题
Delphi中的DateTimePicker控件通过对Format属性的设定可以同时显示日期与时间:但是在编译后程序运行中却不能同时修改日期与时间,这个是由于控件中的Kind属性导致的。通过直接查看VCL的源码可以发现TDateTimeKind = (dtkDate, dtkTime);只定义了Date和Time,因此控件只能针对一种数据进行修改。如何才能同时修改,下面给出解决方案:添加DateTimePicker的OnChange方法procedure TWGSForm.dtp
2020-08-14 11:47:09
848
原创 War3 132版本脱离战网离线模式激活方法
有一种方式可以不用启动战网就可以离线玩单机(包括局域网)模式的方法。1、使用参数启动游戏主程序 _retail_\x86_64\Warcraft III.exe -launch2、在游戏内登陆战网账号,这个时候会发现“离线游戏”的按钮是灰的3、登陆完成后,在界面按ESC呼出菜单,选择登出账号4、这个时候就激活了离线模式,关闭游戏重新带参数启动此时离线游戏的按钮就被激活了,直接点击离线游戏就可以尽情玩耍了。PS.离线模式其实就是本地保存了一份账号认证...
2020-07-30 20:27:25
15798
1
原创 War3 局域网开局地图校验机制分析
为了保证局域网内每个玩家的地图一致,War3在游戏开局前会同步、校验玩家的本地地图。一、查找本地是否有匹配的地图通过枚举游戏相关目录查找一样名字的地图文件,代码片段如下:00C9785B |. 0F1045 14 movups xmm0,dqword ptr ss:[ebp+0x14]00C9785F |. 57 push edi00C978...
2020-04-17 17:43:42
1211
原创 TidHttp上传文件,PHP接收文件
delphi版本 10.2引用单元uses IdHTTP, IdMultipartFormData,IdGlobalProtocolsdelphi端上传代码function UploadFile(FilePath,Url:String):string;var Http:TidHttp; Resp:TStringStream; MutPartForm : TI...
2020-04-15 10:44:07
831
原创 Delphi 各种汇编位移
function ror(const Value: DWORD; ShiftValue: Byte): DWORD; overload;beginResult := (Value shl (8 * SizeOf(Value) – ShiftValue)) or(Value Shr ShiftValue);end;function ror(const Value: WORD; Shif...
2019-10-22 17:01:23
357
原创 WIN10系统运行CE缺失hhctrl.ocx的解决方法
高级版本的WIN10系统会缺少这个文件,网上只能找到32位,但是需要的却是64位的。。。。这里直接提供2个版本链接: https://pan.baidu.com/s/1DJ7U2wLqRreLKhafOFC8jA 提取码: xg7u...
2019-09-13 09:12:09
8421
转载 mysql 查询当天、本周,本月,上一个月的数据
今天select * from 表名 where to_days(时间字段名) = to_days(now());昨天SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1近7天SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) ...
2018-09-14 14:10:36
217
原创 Webbrowser控件屏蔽各种弹出
1、屏蔽弹出脚本错误控件Silent配置为true2、屏蔽alert弹出procedure TMainForm.wb1NewWindow2(ASender: TObject; var ppDisp: IDispatch; var Cancel: WordBool);begin Cancel:=True;end;3、屏蔽页面关闭/刷新/跳转事件的弹出提示在执行动作前...
2018-08-30 14:07:31
2351
原创 另类注册表注入
留个档,特点就是注入后只有ntdll加载了,其他系统模块都没加载,所以需要自己搞点东西void reg_inject_dll(LPCTSTR lpszExeName,LPCTSTR lpszDllName){ HKEY hKey; int dwFlag = 0x100; TCHAR szKey[MAX_PATH] = {}; StringCbPrintf(szKe...
2018-07-03 09:08:34
445
原创 Delphi10.2在linux下编译遇到的问题笔记
最近搞项目遇到的记录下留个档1、Linux下没有Ansistring变量类型,只能全局使用 string ,需要自己处理好 Ansi转Unicode的问题2、Linux 64位下的LongWord是8个字节的,坑挺大原因未知,不过官方文档中提过DescriptionPlatform-dependent unsigned integer type.LongWord represents a subs...
2018-07-02 12:52:59
972
原创 监控自身进程指定内存块是否被读写(防CE)
无意当中看到的一种监控读写的方法,写了个DEMO留档// WsWatch.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <Psapi.h>#pragma comment(lib, "psapi.lib")#ifndef PAGE_SIZE#define PAGE_SIZE 0x1000#endif#define N...
2018-06-28 07:20:16
6511
1
原创 绝地求生-通过Actor名字查询ActorId
基于之前外面流传的源码了解到,UE4开发的游戏,游戏内对象都是基于Actor对象的继承,然而所有的Actor都会有一个名字,会保存在一个Name的表里,通过Actor的Id去查询,在游戏未加密的时候,可以直接获取Name表然后自己封装查询即可,但是游戏加密了Name表的指针后获取数据就没有那么便捷了。所以找到了游戏内部自己使用的查询接口。1、接口原型分析通过大地图队友头部图标绘制的调试...
2018-06-06 23:51:32
1612
原创 绝地求生-对象缓冲表获取
对于外面公开的源码看基本都是基于UWORLD那张对象表开发的,该表内保存的都是游戏当前环境内所用到的对象数据。其实在游戏内还有一张对象的缓冲表,这张缓冲表内包含了当前游戏进程内所有的对象数据,下面分析下这张表的使用。1、获取缓冲表随便找个数据跟下就会发现如下代码:00007FF62794DE8D 7F 14 ...
2018-06-06 23:50:34
719
转载 NTSTATUS 驱动错误码
00000000STATUS_SUCCESS00000000STATUS_WAIT_000000001STATUS_WAIT_100000002STATUS_WAIT_200000003STATUS_WAIT_30000003FSTATUS_WAIT_6300000080STATUS_ABANDONED00000080STATUS_ABANDONED_WAIT_0000000BFSTATUS_AB...
2018-03-15 10:16:34
1579
原创 FPS游戏通用准星修正实现自瞄
FPS游戏内的十字瞄准视角其实就是一个视角摄像机这个应该不难理解吧,如何调整摄像机的视角就要用到一个叫“姿态角(Euler角)”的数据,即: yaw , pitch , roll。这3个值的解释如下:pitch是围绕X轴旋转,也叫做俯仰角yaw是围绕Y轴旋转,也叫偏航角roll是围绕Z轴旋转,也叫翻滚角用张图来解释比较直观:首先我们要先知道自己的Euler角值,然后
2018-02-01 10:59:44
17467
1
原创 FPS游戏通用自瞄实现
一般FPS游戏的自动瞄准的实现方法,不考虑射速,不考虑下坠,不考虑空气阻力,不考虑预判,不考巴拉巴拉巴拉……纯粹的木桩自动瞄准。实现流程:1、获取目标的世界坐标(3D场景坐标,可以是头,躯干,手臂,腿等看你想打哪)2、使用世界坐标转换成屏幕坐标的转换函数3、使用mouse_event模拟鼠标移动到转换后的坐标
2018-01-29 09:09:39
26947
9
转载 adb命令整理大全
常用命令:1.显示当前运行的全部模拟器: adb devices2.启动ADB adb start-server3.停止ADB adb kill-server4.安装应用程序: adb install -r [apk文件]-l #锁定该程序-r #重新安装该程序,保存数据-s #安装在SD卡内,而不是设备内部存储例:adb install --r
2018-01-19 19:13:36
1555
原创 WIN10下Message无法接收的问题
在win10下有些消息无法被正常的接收,比如:WM_COPYDATA 数据传递WM_DROPFILES 文件拖拽这是因为系统为了安全屏蔽了,如果要打开这些消息需要用一个API开始ChangeWindowMessageFilterhttps://msdn.microsoft.com/en-us/library/ms632675ChangeWindowMessageFi
2017-09-11 09:30:11
4379
原创 亚泰史诗-通讯协议初步分析
看过许多网游对于游戏内数据的存储,唯独网易的游戏最独特,最新刚出来的一个端游,拿来看看基本信息1、游戏大致框架※游戏通过登录器登录,生成加密参数启动的client主程序,直接运行client主程序会报错※游戏带python的模块,显而易见内部是使用了python的脚本做业务逻辑※游戏的UI还是很常规的使用了CEGUI,通过常规手段就能很方便的找个各个控件
2017-06-08 15:31:15
1611
1
原创 Indy10的使用例子
记录下,使用方法unit UMain;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdCustomTCPServer, IdTCPServer, IdBaseComponent, IdComponent,
2017-05-09 20:22:07
6326
1
imgui1.78库,精简封装
2020-09-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人